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

; 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 }
%"class.HIR::TypeRef" = type { 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::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::TraitPath" = type { %"class.std::unique_ptr.106", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.120", ptr }
%"class.std::unique_ptr.106" = type { %"struct.std::__uniq_ptr_data.107" }
%"struct.std::__uniq_ptr_data.107" = type { %"class.std::__uniq_ptr_impl.108" }
%"class.std::__uniq_ptr_impl.108" = type { %"class.std::tuple.109" }
%"class.std::tuple.109" = type { %"struct.std::_Tuple_impl.110" }
%"struct.std::_Tuple_impl.110" = type { %"struct.std::_Head_base.113" }
%"struct.std::_Head_base.113" = 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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, 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.120" = type { %"class.std::_Rb_tree.121" }
%"class.std::_Rb_tree.121" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::GenericBound" = type { i32, %"union.HIR::GenericBound::DataUnion" }
%"union.HIR::GenericBound::DataUnion" = type { %"struct.HIR::GenericBound::Data_TraitBound" }
%"struct.HIR::GenericBound::Data_TraitBound" = type { %"class.std::unique_ptr.106", %"class.HIR::TypeRef", %"class.HIR::TraitPath" }
%"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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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 }
%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.424 = type { ptr }
%struct.Span = type { ptr }
%class.anon.425 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.427" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.515 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.517" = type { ptr }
%class.anon.518 = type { ptr }
%class.anon.519 = type { ptr }
%class.anon.520 = type { i8 }
%class.anon.522 = type { i8 }
%"struct.std::pair.527" = type { %class.RcString, %"struct.HIR::AssociatedType" }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.126", %"class.HIR::TypeRef" }
%"struct.std::pair.524" = type <{ %"struct.std::__detail::_Node_iterator", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = 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 }
%"struct.std::pair.539" = type { %class.RcString, %"class.HIR::TraitValueItem" }
%"class.HIR::TraitValueItem" = type { i32, %"union.HIR::TraitValueItem::DataUnion" }
%"union.HIR::TraitValueItem::DataUnion" = type { %"class.HIR::Static" }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"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.534" = type <{ %"struct.std::__detail::_Node_iterator.536", i8, [7 x i8] }>
%"struct.std::__detail::_Node_iterator.536" = type { %"struct.std::__detail::_Node_iterator_base.537" }
%"struct.std::__detail::_Node_iterator_base.537" = type { ptr }
%"class.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.551" }
%struct.Spanned = type { %struct.Span, %"class.AST::LifetimeRef" }
%"class.AST::LifetimeRef" = type <{ %struct.Ident, i16, [6 x i8] }>
%struct.Ident = type { %"class.Ident::Hygiene", %class.RcString }
%"class.Ident::Hygiene" = type { %"class.std::unique_ptr" }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.1" }
%"struct.std::_Head_base.1" = type { ptr }
%struct.Spanned.428 = type { %struct.Span, %struct.Type_TraitPath }
%struct.Type_TraitPath = type { %"class.AST::HigherRankedBounds", %"class.std::unique_ptr.75" }
%"class.AST::HigherRankedBounds" = type { %"class.std::vector.51" }
%"class.std::vector.51" = type { %"struct.std::_Vector_base.52" }
%"struct.std::_Vector_base.52" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::LifetimeParam, std::allocator<AST::LifetimeParam>>::_Vector_impl_data" = type { ptr, ptr, 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 }
%"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_count" = type { ptr }
%"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" }
%"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" }
%"struct.AST::AbsolutePath" = type { %class.RcString, %"class.std::vector" }
%"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.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 }
%"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 }
%"class.AST::TypeAlias" = type { %"class.AST::GenericParams", %"class.AST::GenericParams", %class.TypeRef }
%"class.AST::GenericParams" = type { %"class.std::vector.28", %"class.std::vector.33" }
%"class.std::vector.28" = type { %"struct.std::_Vector_base.29" }
%"struct.std::_Vector_base.29" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericParam, std::allocator<AST::GenericParam>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.33" = type { %"struct.std::_Vector_base.34" }
%"struct.std::_Vector_base.34" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<AST::GenericBound, std::allocator<AST::GenericBound>>::_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::GenericBound::Data_TypeLifetime" = type <{ %"class.HIR::TypeRef", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>

@g_crate_name = external dso_local global %class.RcString, align 8
@_ZN12_GLOBAL__N_17ty_SelfE = external hidden global %"class.HIR::TypeRef", 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
@_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
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE = external hidden unnamed_addr constant [69 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: mustprogress uwtable
declare dso_local i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18)) #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK3AST11LifetimeRef7bindingEv(ptr noundef nonnull align 8 dereferenceable(18)) #3 align 2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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: mustprogress uwtable
declare dso_local void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR12GenericBound15make_TraitBoundENS0_15Data_TraitBoundE(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericBound") align 8, ptr noundef) #2 align 2

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #0 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; 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 uwtable
declare dso_local void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(144)) #2 align 2

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

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

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

declare void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i1 noundef zeroext) #6

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

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

; 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 dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216)) #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Trait") align 8 %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(128) %2) #2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca %class.TraceLog, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.424, align 8
  %10 = alloca ptr, align 8
  %11 = alloca i32, align 4
  %12 = alloca %class.RcString, align 8
  %13 = alloca i8, align 1
  %14 = alloca %"class.HIR::GenericParams", align 8
  %15 = alloca %"struct.HIR::LifetimeRef", align 4
  %16 = alloca %struct.Span, align 8
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.425, align 1
  %19 = alloca %"struct.HIR::LifetimeRef", align 4
  %20 = alloca %"class.std::vector.126", align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %24 = alloca ptr, align 8
  %25 = alloca %"class.HIR::TraitPath", align 8
  %26 = alloca i1, align 1
  %27 = alloca %"class.HIR::GenericParams", align 8
  %28 = alloca %"struct.HIR::LifetimeRef", align 4
  %29 = alloca %"class.std::vector.126", align 8
  %30 = alloca %"class.HIR::GenericPath", align 8
  %31 = alloca %"struct.HIR::SimplePath", align 8
  %32 = alloca %"struct.HIR::PathParams", align 8
  %33 = alloca %"class.HIR::GenericBound", align 8
  %34 = alloca %"struct.HIR::GenericBound::Data_TraitBound", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %38 = alloca i32, align 4
  %39 = alloca ptr, align 8
  %40 = alloca %"class.HIR::ItemPath", align 8
  %41 = alloca %"class.HIR::ItemPath", align 8
  %42 = alloca i8, align 1
  %43 = alloca ptr, align 8
  %44 = alloca %struct.Span, align 8
  %45 = alloca %"class.std::function", align 8
  %46 = alloca %class.anon.515, align 1
  %47 = alloca i8, align 1
  %48 = alloca ptr, align 8
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca i8, align 1
  %54 = alloca %"class.std::vector.126", align 8
  %55 = alloca %"struct.HIR::LifetimeRef", align 4
  %56 = alloca %"class.HIR::GenericParams", align 8
  %57 = alloca %"class.HIR::GenericParams", align 8
  %58 = alloca ptr, align 8
  %59 = alloca %"class.__gnu_cxx::__normal_iterator.517", align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.517", align 8
  %61 = alloca ptr, align 8
  %62 = alloca i8, align 1
  %63 = alloca ptr, align 8
  %64 = alloca i8, align 1
  %65 = alloca ptr, align 8
  %66 = alloca %struct.Span, align 8
  %67 = alloca %"class.std::function", align 8
  %68 = alloca %class.anon.518, align 8
  %69 = alloca i8, align 1
  %70 = alloca ptr, align 8
  %71 = alloca %struct.Span, align 8
  %72 = alloca %"class.std::function", align 8
  %73 = alloca %class.anon.519, align 8
  %74 = alloca i8, align 1
  %75 = alloca ptr, align 8
  %76 = alloca %struct.Span, align 8
  %77 = alloca %"class.std::function", align 8
  %78 = alloca %class.anon.520, align 1
  %79 = alloca i8, align 1
  %80 = alloca ptr, align 8
  %81 = alloca %struct.Span, align 8
  %82 = alloca %"class.std::function", align 8
  %83 = alloca %class.anon.522, align 1
  %84 = alloca %"struct.std::pair.527", align 8
  %85 = alloca %"struct.HIR::AssociatedType", align 8
  %86 = alloca %"struct.std::pair.524", align 8
  %87 = alloca i8, align 1
  %88 = alloca ptr, align 8
  %89 = alloca %"class.HIR::Function", align 8
  %90 = alloca %"class.HIR::ItemPath", align 8
  %91 = alloca %"struct.std::pair.539", align 8
  %92 = alloca %"class.HIR::TraitValueItem", align 8
  %93 = alloca %"class.HIR::Function", align 8
  %94 = alloca %"struct.std::pair.534", align 8
  %95 = alloca i8, align 1
  %96 = alloca ptr, align 8
  %97 = alloca %"struct.std::pair.539", align 8
  %98 = alloca %"class.HIR::TraitValueItem", align 8
  %99 = alloca %"class.HIR::Constant", align 8
  %100 = alloca %"class.HIR::GenericParams", align 8
  %101 = alloca %"class.HIR::TypeRef", align 8
  %102 = alloca %"class.HIR::ExprPtr", align 8
  %103 = alloca %"struct.std::pair.534", align 8
  %104 = alloca %"struct.HIR::Linkage", align 8
  %105 = alloca %"struct.std::pair.539", align 8
  %106 = alloca %"class.HIR::TraitValueItem", align 8
  %107 = alloca %"class.HIR::Static", align 8
  %108 = alloca %"struct.HIR::Linkage", align 8
  %109 = alloca %"class.HIR::TypeRef", align 8
  %110 = alloca %"class.HIR::ExprPtr", align 8
  %111 = alloca %"struct.std::pair.534", align 8
  store ptr %0, ptr %4, align 8
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %7) #10
  %112 = call noundef zeroext i1 @_Z13debug_enabledv()
  %113 = zext i1 %112 to i64
  %114 = select i1 %112, ptr @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #10
  %115 = getelementptr inbounds %class.anon.424, ptr %9, i32 0, i32 0
  store ptr %1, ptr %115, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #10
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %114, ptr noundef %8)
          to label %116 unwind label %145

116:                                              ; preds = %3
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) @g_crate_name)
          to label %117 unwind label %149

117:                                              ; preds = %116
  invoke void @_ZN3HIR10SimplePath17update_crate_nameE8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef %12)
          to label %118 unwind label %153

118:                                              ; preds = %117
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #10
  store i8 0, ptr %13, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr %14) #10
  %119 = load ptr, ptr %6, align 8, !tbaa !5
  %120 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128) %119)
          to label %121 unwind label %157

121:                                              ; preds = %118
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %14, ptr noundef nonnull align 8 dereferenceable(48) %120, ptr noundef %13)
          to label %122 unwind label %157

122:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 4, ptr %15) #10
  invoke void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %123 unwind label %161

123:                                              ; preds = %122
  %124 = load ptr, ptr %6, align 8, !tbaa !5
  %125 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %124)
          to label %126 unwind label %161

126:                                              ; preds = %123
  %127 = call noundef zeroext i1 @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %125) #10
  br i1 %127, label %233, label %128

128:                                              ; preds = %126
  br label %129

129:                                              ; preds = %128
  %130 = load ptr, ptr %6, align 8, !tbaa !5
  %131 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %130)
          to label %132 unwind label %161

132:                                              ; preds = %129
  %133 = call noundef i64 @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %131) #10
  %134 = icmp eq i64 %133, 1
  br i1 %134, label %178, label %135

135:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #10
  %136 = load ptr, ptr %6, align 8, !tbaa !5
  %137 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %136)
          to label %138 unwind label %165

138:                                              ; preds = %135
  %139 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef 0) #10
  %140 = getelementptr inbounds %struct.Spanned, ptr %139, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %141 unwind label %165

141:                                              ; preds = %138
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef %17)
          to label %142 unwind label %169

142:                                              ; preds = %141
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  %143 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %143, ptr noundef @.str.9)
          to label %144 unwind label %174

144:                                              ; preds = %142
  invoke void @__cxa_throw(ptr %143, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %161

145:                                              ; preds = %3
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %10, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #10
  br label %1059

149:                                              ; preds = %116
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %10, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %11, align 4
  br label %1058

153:                                              ; preds = %117
  %154 = landingpad { ptr, i32 }
          cleanup
  %155 = extractvalue { ptr, i32 } %154, 0
  store ptr %155, ptr %10, align 8
  %156 = extractvalue { ptr, i32 } %154, 1
  store i32 %156, ptr %11, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  br label %1058

157:                                              ; preds = %121, %118
  %158 = landingpad { ptr, i32 }
          cleanup
  %159 = extractvalue { ptr, i32 } %158, 0
  store ptr %159, ptr %10, align 8
  %160 = extractvalue { ptr, i32 } %158, 1
  store i32 %160, ptr %11, align 4
  br label %1057

161:                                              ; preds = %223, %221, %219, %217, %213, %210, %208, %204, %201, %199, %197, %195, %192, %189, %144, %129, %123, %122
  %162 = landingpad { ptr, i32 }
          cleanup
  %163 = extractvalue { ptr, i32 } %162, 0
  store ptr %163, ptr %10, align 8
  %164 = extractvalue { ptr, i32 } %162, 1
  store i32 %164, ptr %11, align 4
  br label %1056

165:                                              ; preds = %138, %135
  %166 = landingpad { ptr, i32 }
          cleanup
  %167 = extractvalue { ptr, i32 } %166, 0
  store ptr %167, ptr %10, align 8
  %168 = extractvalue { ptr, i32 } %166, 1
  store i32 %168, ptr %11, align 4
  br label %173

169:                                              ; preds = %141
  %170 = landingpad { ptr, i32 }
          cleanup
  %171 = extractvalue { ptr, i32 } %170, 0
  store ptr %171, ptr %10, align 8
  %172 = extractvalue { ptr, i32 } %170, 1
  store i32 %172, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %173

173:                                              ; preds = %169, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #10
  br label %1056

174:                                              ; preds = %142
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %10, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %11, align 4
  call void @__cxa_free_exception(ptr %143) #10
  br label %1056

178:                                              ; preds = %132
  br label %179

179:                                              ; preds = %178
  br label %180

180:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #10
  %181 = load ptr, ptr %6, align 8, !tbaa !5
  %182 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %181)
          to label %183 unwind label %226

183:                                              ; preds = %180
  %184 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %182, i64 noundef 0) #10
  %185 = getelementptr inbounds %struct.Spanned, ptr %184, i32 0, i32 1
  %186 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %185)
          to label %187 unwind label %226

187:                                              ; preds = %183
  %188 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %19, i32 0, i32 0
  store i32 %186, ptr %188, align 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %15, ptr align 4 %19, i64 4, i1 false), !tbaa.struct !11
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %189

189:                                              ; preds = %187
  %190 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %191 unwind label %161

191:                                              ; preds = %189
  br i1 %190, label %192, label %230

192:                                              ; preds = %191
  %193 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %193, ptr noundef @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE)
          to label %195 unwind label %161

195:                                              ; preds = %192
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %194, ptr noundef @.str.35)
          to label %197 unwind label %161

197:                                              ; preds = %195
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 4 dereferenceable(4) %15)
          to label %199 unwind label %161

199:                                              ; preds = %197
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef @.str.36)
          to label %201 unwind label %161

201:                                              ; preds = %199
  %202 = load ptr, ptr %6, align 8, !tbaa !5
  %203 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %202)
          to label %204 unwind label %161

204:                                              ; preds = %201
  %205 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %203, i64 noundef 0) #10
  %206 = getelementptr inbounds %struct.Spanned, ptr %205, i32 0, i32 1
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(18) %206)
          to label %208 unwind label %161

208:                                              ; preds = %204
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef @.str.17)
          to label %210 unwind label %161

210:                                              ; preds = %208
  %211 = load ptr, ptr %6, align 8, !tbaa !5
  %212 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %211)
          to label %213 unwind label %161

213:                                              ; preds = %210
  %214 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %212, i64 noundef 0) #10
  %215 = getelementptr inbounds %struct.Spanned, ptr %214, i32 0, i32 1
  %216 = invoke noundef zeroext i16 @_ZNK3AST11LifetimeRef7bindingEv(ptr noundef nonnull align 8 dereferenceable(18) %215)
          to label %217 unwind label %161

217:                                              ; preds = %213
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEt(ptr noundef nonnull align 8 dereferenceable(8) %209, i16 noundef zeroext %216)
          to label %219 unwind label %161

219:                                              ; preds = %217
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef @.str.37)
          to label %221 unwind label %161

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef @_ZSt3decRSt8ios_base)
          to label %223 unwind label %161

223:                                              ; preds = %221
  %224 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %225 unwind label %161

225:                                              ; preds = %223
  br label %230

226:                                              ; preds = %183, %180
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %10, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #10
  br label %1056

230:                                              ; preds = %225, %191
  br label %231

231:                                              ; preds = %230
  br label %232

232:                                              ; preds = %231
  br label %233

233:                                              ; preds = %232, %126
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #10
  %234 = load ptr, ptr %6, align 8, !tbaa !5
  %235 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait11supertraitsEv(ptr noundef nonnull align 8 dereferenceable(128) %234)
          to label %236 unwind label %246

236:                                              ; preds = %233
  store ptr %235, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #10
  %237 = load ptr, ptr %21, align 8, !tbaa !5
  %238 = call ptr @_ZNKSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %237) #10
  %239 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %22, i32 0, i32 0
  store ptr %238, ptr %239, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #10
  %240 = load ptr, ptr %21, align 8, !tbaa !5
  %241 = call ptr @_ZNKSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %240) #10
  %242 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.427", ptr %23, i32 0, i32 0
  store ptr %241, ptr %242, align 8
  br label %243

243:                                              ; preds = %295, %236
  %244 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #10
  br i1 %244, label %250, label %245

245:                                              ; preds = %243
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %299

246:                                              ; preds = %233
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %10, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %11, align 4
  br label %298

250:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #10
  %251 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  store ptr %251, ptr %24, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 144, ptr %25) #10
  %252 = load ptr, ptr %24, align 8, !tbaa !5
  %253 = getelementptr inbounds %struct.Spanned.428, ptr %252, i32 0, i32 0
  %254 = load ptr, ptr %24, align 8, !tbaa !5
  %255 = getelementptr inbounds %struct.Spanned.428, ptr %254, i32 0, i32 1
  %256 = getelementptr inbounds %struct.Type_TraitPath, ptr %255, i32 0, i32 1
  %257 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %256) #10
  %258 = load ptr, ptr %24, align 8, !tbaa !5
  %259 = getelementptr inbounds %struct.Spanned.428, ptr %258, i32 0, i32 1
  %260 = getelementptr inbounds %struct.Type_TraitPath, ptr %259, i32 0, i32 0
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull align 8 dereferenceable(240) %257, ptr noundef nonnull align 8 dereferenceable(24) %260, i1 noundef zeroext true)
          to label %261 unwind label %279

261:                                              ; preds = %250
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %20, ptr noundef nonnull align 8 dereferenceable(144) %25)
          to label %262 unwind label %283

262:                                              ; preds = %261
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %25) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %25) #10
  br label %263

263:                                              ; preds = %262
  %264 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %265 unwind label %288

265:                                              ; preds = %263
  br i1 %264, label %266, label %292

266:                                              ; preds = %265
  %267 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %267, ptr noundef @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE)
          to label %269 unwind label %288

269:                                              ; preds = %266
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %268, ptr noundef @.str.38)
          to label %271 unwind label %288

271:                                              ; preds = %269
  %272 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(144) %272)
          to label %274 unwind label %288

274:                                              ; preds = %271
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef @_ZSt3decRSt8ios_base)
          to label %276 unwind label %288

276:                                              ; preds = %274
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %278 unwind label %288

278:                                              ; preds = %276
  br label %292

279:                                              ; preds = %250
  %280 = landingpad { ptr, i32 }
          cleanup
  %281 = extractvalue { ptr, i32 } %280, 0
  store ptr %281, ptr %10, align 8
  %282 = extractvalue { ptr, i32 } %280, 1
  store i32 %282, ptr %11, align 4
  br label %287

283:                                              ; preds = %261
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %10, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %11, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %25) #10
  br label %287

287:                                              ; preds = %283, %279
  call void @llvm.lifetime.end.p0(i64 144, ptr %25) #10
  br label %297

288:                                              ; preds = %276, %274, %271, %269, %266, %263
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %10, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %11, align 4
  br label %297

292:                                              ; preds = %278, %265
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  br label %295

295:                                              ; preds = %294
  %296 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %243

297:                                              ; preds = %288, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #10
  br label %298

298:                                              ; preds = %297, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #10
  br label %1055

299:                                              ; preds = %245
  store i1 false, ptr %26, align 1
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %27, ptr noundef nonnull align 8 dereferenceable(96) %14) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %28, ptr align 4 %15, i64 4, i1 false), !tbaa.struct !11
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %29, ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  %300 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %28, i32 0, i32 0
  %301 = load i32, ptr %300, align 4
  invoke void @_ZN3HIR5TraitC2ENS_13GenericParamsENS_11LifetimeRefESt6vectorINS_9TraitPathESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef %27, i32 %301, ptr noundef %29)
          to label %302 unwind label %336

302:                                              ; preds = %299
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %303 unwind label %340

303:                                              ; preds = %302
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef %31)
          to label %304 unwind label %344

304:                                              ; preds = %303
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %32) #10
  %305 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %32, ptr noundef nonnull align 8 dereferenceable(96) %305, i32 noundef 0, i1 noundef zeroext false)
          to label %306 unwind label %348

306:                                              ; preds = %304
  %307 = getelementptr inbounds %"class.HIR::GenericPath", ptr %30, i32 0, i32 1
  %308 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %307, ptr noundef nonnull align 8 dereferenceable(24) %32)
          to label %309 unwind label %352

309:                                              ; preds = %306
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  %310 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 0
  %311 = getelementptr inbounds %"class.HIR::GenericParams", ptr %310, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 168, ptr %33) #10
  %312 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %34, i32 0, i32 0
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %312) #10
  %313 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %34, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %313, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %314 unwind label %357

314:                                              ; preds = %309
  %315 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %34, i32 0, i32 2
  %316 = getelementptr inbounds %"class.HIR::TraitPath", ptr %315, i32 0, i32 0
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %316) #10
  %317 = getelementptr inbounds %"class.HIR::TraitPath", ptr %315, i32 0, i32 1
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %317, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %318 unwind label %361

318:                                              ; preds = %314
  %319 = getelementptr inbounds %"class.HIR::TraitPath", ptr %315, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %319, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %319) #10
  %320 = getelementptr inbounds %"class.HIR::TraitPath", ptr %315, i32 0, i32 3
  call void @llvm.memset.p0.i64(ptr align 8 %320, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %320) #10
  %321 = getelementptr inbounds %"class.HIR::TraitPath", ptr %315, i32 0, i32 4
  store ptr null, ptr %321, align 8, !tbaa !14
  invoke void @_ZN3HIR12GenericBound15make_TraitBoundENS0_15Data_TraitBoundE(ptr dead_on_unwind writable sret(%"class.HIR::GenericBound") align 8 %33, ptr noundef %34)
          to label %322 unwind label %366

322:                                              ; preds = %318
  invoke void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %311, ptr noundef nonnull align 8 dereferenceable(168) %33)
          to label %323 unwind label %370

323:                                              ; preds = %322
  call void @_ZN3HIR12GenericBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %33) #10
  call void @_ZN3HIR12GenericBound15Data_TraitBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %34) #10
  call void @llvm.lifetime.end.p0(i64 168, ptr %33) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #10
  %324 = load ptr, ptr %6, align 8, !tbaa !5
  %325 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait5itemsEv(ptr noundef nonnull align 8 dereferenceable(128) %324)
          to label %326 unwind label %378

326:                                              ; preds = %323
  store ptr %325, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #10
  %327 = load ptr, ptr %35, align 8, !tbaa !5
  %328 = call ptr @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %327) #10
  %329 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %36, i32 0, i32 0
  store ptr %328, ptr %329, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #10
  %330 = load ptr, ptr %35, align 8, !tbaa !5
  %331 = call ptr @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %330) #10
  %332 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.429", ptr %37, i32 0, i32 0
  store ptr %331, ptr %332, align 8
  br label %333

333:                                              ; preds = %1036, %326
  %334 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #10
  br i1 %334, label %382, label %335

335:                                              ; preds = %333
  store i32 10, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %1041

336:                                              ; preds = %299
  %337 = landingpad { ptr, i32 }
          cleanup
  %338 = extractvalue { ptr, i32 } %337, 0
  store ptr %338, ptr %10, align 8
  %339 = extractvalue { ptr, i32 } %337, 1
  store i32 %339, ptr %11, align 4
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %27) #10
  br label %1055

340:                                              ; preds = %302
  %341 = landingpad { ptr, i32 }
          cleanup
  %342 = extractvalue { ptr, i32 } %341, 0
  store ptr %342, ptr %10, align 8
  %343 = extractvalue { ptr, i32 } %341, 1
  store i32 %343, ptr %11, align 4
  br label %377

344:                                              ; preds = %303
  %345 = landingpad { ptr, i32 }
          cleanup
  %346 = extractvalue { ptr, i32 } %345, 0
  store ptr %346, ptr %10, align 8
  %347 = extractvalue { ptr, i32 } %345, 1
  store i32 %347, ptr %11, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #10
  br label %377

348:                                              ; preds = %304
  %349 = landingpad { ptr, i32 }
          cleanup
  %350 = extractvalue { ptr, i32 } %349, 0
  store ptr %350, ptr %10, align 8
  %351 = extractvalue { ptr, i32 } %349, 1
  store i32 %351, ptr %11, align 4
  br label %356

352:                                              ; preds = %306
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %10, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %11, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %32) #10
  br label %356

356:                                              ; preds = %352, %348
  call void @llvm.lifetime.end.p0(i64 24, ptr %32) #10
  br label %376

357:                                              ; preds = %309
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %10, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %11, align 4
  br label %365

361:                                              ; preds = %314
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %10, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %11, align 4
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %316) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %313) #10
  br label %365

365:                                              ; preds = %361, %357
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %312) #10
  br label %375

366:                                              ; preds = %318
  %367 = landingpad { ptr, i32 }
          cleanup
  %368 = extractvalue { ptr, i32 } %367, 0
  store ptr %368, ptr %10, align 8
  %369 = extractvalue { ptr, i32 } %367, 1
  store i32 %369, ptr %11, align 4
  br label %374

370:                                              ; preds = %322
  %371 = landingpad { ptr, i32 }
          cleanup
  %372 = extractvalue { ptr, i32 } %371, 0
  store ptr %372, ptr %10, align 8
  %373 = extractvalue { ptr, i32 } %371, 1
  store i32 %373, ptr %11, align 4
  call void @_ZN3HIR12GenericBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %33) #10
  br label %374

374:                                              ; preds = %370, %366
  call void @_ZN3HIR12GenericBound15Data_TraitBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %34) #10
  br label %375

375:                                              ; preds = %374, %365
  call void @llvm.lifetime.end.p0(i64 168, ptr %33) #10
  br label %376

376:                                              ; preds = %375, %356
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #10
  br label %377

377:                                              ; preds = %376, %344, %340
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #10
  br label %1054

378:                                              ; preds = %323
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %10, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %11, align 4
  br label %1040

382:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %383 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  store ptr %383, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %40) #10
  invoke void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %384 unwind label %394

384:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 56, ptr %41) #10
  %385 = load ptr, ptr %39, align 8, !tbaa !5
  %386 = getelementptr inbounds %"struct.AST::Named", ptr %385, i32 0, i32 3
  %387 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %388 unwind label %398

388:                                              ; preds = %384
  invoke void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %41, ptr noundef nonnull align 8 dereferenceable(56) %40, ptr noundef %387)
          to label %389 unwind label %398

389:                                              ; preds = %388
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #10
  store i8 1, ptr %42, align 1, !tbaa !9
  br label %390

390:                                              ; preds = %1034, %389
  %391 = load i8, ptr %42, align 1, !tbaa !9, !range !41, !noundef !42
  %392 = trunc i8 %391 to i1
  br i1 %392, label %402, label %393

393:                                              ; preds = %390
  store i32 12, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  br label %1035

394:                                              ; preds = %382
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %10, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %11, align 4
  br label %1039

398:                                              ; preds = %388, %384
  %399 = landingpad { ptr, i32 }
          cleanup
  %400 = extractvalue { ptr, i32 } %399, 0
  store ptr %400, ptr %10, align 8
  %401 = extractvalue { ptr, i32 } %399, 1
  store i32 %401, ptr %11, align 4
  br label %1038

402:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %403 = load ptr, ptr %39, align 8, !tbaa !5
  %404 = getelementptr inbounds %"struct.AST::Named", ptr %403, i32 0, i32 4
  store ptr %404, ptr %43, align 8, !tbaa !5
  br label %405

405:                                              ; preds = %1031, %402
  %406 = load i8, ptr %42, align 1, !tbaa !9, !range !41, !noundef !42
  %407 = trunc i8 %406 to i1
  br i1 %407, label %409, label %408

408:                                              ; preds = %405
  store i32 15, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %1033

409:                                              ; preds = %405
  %410 = load ptr, ptr %43, align 8, !tbaa !5
  %411 = invoke noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %410)
          to label %412 unwind label %413

412:                                              ; preds = %409
  switch i32 %411, label %418 [
    i32 0, label %417
    i32 1, label %441
    i32 2, label %464
    i32 11, label %487
    i32 17, label %826
    i32 18, label %891
  ]

413:                                              ; preds = %425, %409
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %10, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %11, align 4
  br label %1032

417:                                              ; preds = %412
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 1489, ptr noundef @__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE) #12
  unreachable

418:                                              ; preds = %412
  br label %419

419:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #10
  %420 = load ptr, ptr %39, align 8, !tbaa !5
  %421 = getelementptr inbounds %"struct.AST::Named", ptr %420, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %421)
          to label %422 unwind label %426

422:                                              ; preds = %419
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 1 dereferenceable(1) %46) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %45)
          to label %423 unwind label %430

423:                                              ; preds = %422
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  %424 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %424, ptr noundef @.str.9)
          to label %425 unwind label %435

425:                                              ; preds = %423
  invoke void @__cxa_throw(ptr %424, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %413

426:                                              ; preds = %419
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %10, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %11, align 4
  br label %434

430:                                              ; preds = %422
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %10, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #10
  br label %434

434:                                              ; preds = %430, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #10
  br label %1032

435:                                              ; preds = %423
  %436 = landingpad { ptr, i32 }
          cleanup
  %437 = extractvalue { ptr, i32 } %436, 0
  store ptr %437, ptr %10, align 8
  %438 = extractvalue { ptr, i32 } %436, 1
  store i32 %438, ptr %11, align 4
  call void @__cxa_free_exception(ptr %424) #10
  br label %1032

439:                                              ; No predecessors!
  br label %440

440:                                              ; preds = %439
  br label %1030

441:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #10
  store i8 1, ptr %47, align 1, !tbaa !9
  br label %442

442:                                              ; preds = %462, %441
  %443 = load i8, ptr %47, align 1, !tbaa !9, !range !41, !noundef !42
  %444 = trunc i8 %443 to i1
  br i1 %444, label %446, label %445

445:                                              ; preds = %442
  store i32 21, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #10
  br label %463

446:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %447 = load ptr, ptr %43, align 8, !tbaa !5
  %448 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %447)
          to label %449 unwind label %455

449:                                              ; preds = %446
  store ptr %448, ptr %48, align 8, !tbaa !5
  br label %450

450:                                              ; preds = %460, %449
  %451 = load ptr, ptr %48, align 8, !tbaa !5
  %452 = load i8, ptr %47, align 1, !tbaa !9, !range !41, !noundef !42
  %453 = trunc i8 %452 to i1
  br i1 %453, label %459, label %454

454:                                              ; preds = %450
  store i32 24, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %461

455:                                              ; preds = %446
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %10, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #10
  br label %1032

459:                                              ; preds = %450
  br label %460

460:                                              ; preds = %459
  store i8 0, ptr %47, align 1, !tbaa !9
  br label %450, !llvm.loop !43

461:                                              ; preds = %454
  br label %462

462:                                              ; preds = %461
  store i8 0, ptr %47, align 1, !tbaa !9
  br label %442, !llvm.loop !45

463:                                              ; preds = %445
  br label %1030

464:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #10
  store i8 1, ptr %49, align 1, !tbaa !9
  br label %465

465:                                              ; preds = %485, %464
  %466 = load i8, ptr %49, align 1, !tbaa !9, !range !41, !noundef !42
  %467 = trunc i8 %466 to i1
  br i1 %467, label %469, label %468

468:                                              ; preds = %465
  store i32 27, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  br label %486

469:                                              ; preds = %465
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %470 = load ptr, ptr %43, align 8, !tbaa !5
  %471 = invoke noundef nonnull align 8 dereferenceable(393) ptr @_ZNK3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %470)
          to label %472 unwind label %478

472:                                              ; preds = %469
  store ptr %471, ptr %50, align 8, !tbaa !5
  br label %473

473:                                              ; preds = %483, %472
  %474 = load ptr, ptr %50, align 8, !tbaa !5
  %475 = load i8, ptr %49, align 1, !tbaa !9, !range !41, !noundef !42
  %476 = trunc i8 %475 to i1
  br i1 %476, label %482, label %477

477:                                              ; preds = %473
  store i32 30, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %484

478:                                              ; preds = %469
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %10, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #10
  br label %1032

482:                                              ; preds = %473
  br label %483

483:                                              ; preds = %482
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %473, !llvm.loop !46

484:                                              ; preds = %477
  br label %485

485:                                              ; preds = %484
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %465, !llvm.loop !47

486:                                              ; preds = %468
  br label %1030

487:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #10
  store i8 1, ptr %51, align 1, !tbaa !9
  br label %488

488:                                              ; preds = %824, %487
  %489 = load i8, ptr %51, align 1, !tbaa !9, !range !41, !noundef !42
  %490 = trunc i8 %489 to i1
  br i1 %490, label %492, label %491

491:                                              ; preds = %488
  store i32 33, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #10
  br label %825

492:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #10
  %493 = load ptr, ptr %43, align 8, !tbaa !5
  %494 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %493)
          to label %495 unwind label %501

495:                                              ; preds = %492
  store ptr %494, ptr %52, align 8, !tbaa !5
  br label %496

496:                                              ; preds = %803, %495
  %497 = load ptr, ptr %52, align 8, !tbaa !5
  %498 = load i8, ptr %51, align 1, !tbaa !9, !range !41, !noundef !42
  %499 = trunc i8 %498 to i1
  br i1 %499, label %505, label %500

500:                                              ; preds = %496
  store i32 36, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  br label %823

501:                                              ; preds = %492
  %502 = landingpad { ptr, i32 }
          cleanup
  %503 = extractvalue { ptr, i32 } %502, 0
  store ptr %503, ptr %10, align 8
  %504 = extractvalue { ptr, i32 } %502, 1
  store i32 %504, ptr %11, align 4
  br label %822

505:                                              ; preds = %496
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #10
  store i8 1, ptr %53, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr %54) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %55) #10
  invoke void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %55)
          to label %506 unwind label %524

506:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 96, ptr %56) #10
  %507 = load ptr, ptr %52, align 8, !tbaa !5
  %508 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %507)
          to label %509 unwind label %528

509:                                              ; preds = %506
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %56, ptr noundef nonnull align 8 dereferenceable(48) %508, ptr noundef %53)
          to label %510 unwind label %528

510:                                              ; preds = %509
  call void @llvm.lifetime.start.p0(i64 96, ptr %57) #10
  %511 = load ptr, ptr %52, align 8, !tbaa !5
  %512 = getelementptr inbounds %"class.AST::TypeAlias", ptr %511, i32 0, i32 1
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %57, ptr noundef nonnull align 8 dereferenceable(48) %512, ptr noundef %53)
          to label %513 unwind label %532

513:                                              ; preds = %510
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #10
  %514 = getelementptr inbounds %"class.HIR::GenericParams", ptr %57, i32 0, i32 3
  store ptr %514, ptr %58, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #10
  %515 = load ptr, ptr %58, align 8, !tbaa !5
  %516 = call ptr @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %515) #10
  %517 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.517", ptr %59, i32 0, i32 0
  store ptr %516, ptr %517, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #10
  %518 = load ptr, ptr %58, align 8, !tbaa !5
  %519 = call ptr @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %518) #10
  %520 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.517", ptr %60, i32 0, i32 0
  store ptr %519, ptr %520, align 8
  br label %521

521:                                              ; preds = %778, %513
  %522 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br i1 %522, label %536, label %523

523:                                              ; preds = %521
  store i32 39, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %780

524:                                              ; preds = %505
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %10, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %11, align 4
  br label %821

528:                                              ; preds = %509, %506
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %10, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %11, align 4
  br label %820

532:                                              ; preds = %510
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %10, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %11, align 4
  br label %819

536:                                              ; preds = %521
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #10
  %537 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  store ptr %537, ptr %61, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #10
  store i8 1, ptr %62, align 1, !tbaa !9
  br label %538

538:                                              ; preds = %776, %536
  %539 = load i8, ptr %62, align 1, !tbaa !9, !range !41, !noundef !42
  %540 = trunc i8 %539 to i1
  br i1 %540, label %542, label %541

541:                                              ; preds = %538
  store i32 41, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  br label %777

542:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #10
  %543 = load ptr, ptr %61, align 8, !tbaa !5
  store ptr %543, ptr %63, align 8, !tbaa !5
  br label %544

544:                                              ; preds = %773, %542
  %545 = load i8, ptr %62, align 1, !tbaa !9, !range !41, !noundef !42
  %546 = trunc i8 %545 to i1
  br i1 %546, label %548, label %547

547:                                              ; preds = %544
  store i32 44, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  br label %775

548:                                              ; preds = %544
  %549 = load ptr, ptr %63, align 8, !tbaa !5
  %550 = invoke noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %549)
          to label %551 unwind label %552

551:                                              ; preds = %548
  switch i32 %550, label %772 [
    i32 0, label %556
    i32 2, label %557
    i32 3, label %618
    i32 1, label %680
    i32 4, label %726
  ]

552:                                              ; preds = %548
  %553 = landingpad { ptr, i32 }
          cleanup
  %554 = extractvalue { ptr, i32 } %553, 0
  store ptr %554, ptr %10, align 8
  %555 = extractvalue { ptr, i32 } %553, 1
  store i32 %555, ptr %11, align 4
  br label %774

556:                                              ; preds = %551
  call void @__assert_fail(ptr noundef @.str.7, ptr noundef @.str.5, i32 noundef 1507, ptr noundef @__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE) #12
  unreachable

557:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #10
  store i8 1, ptr %64, align 1, !tbaa !9
  br label %558

558:                                              ; preds = %616, %557
  %559 = load i8, ptr %64, align 1, !tbaa !9, !range !41, !noundef !42
  %560 = trunc i8 %559 to i1
  br i1 %560, label %562, label %561

561:                                              ; preds = %558
  store i32 48, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #10
  br label %617

562:                                              ; preds = %558
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %563 = load ptr, ptr %63, align 8, !tbaa !5
  %564 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %563)
          to label %565 unwind label %571

565:                                              ; preds = %562
  store ptr %564, ptr %65, align 8, !tbaa !5
  br label %566

566:                                              ; preds = %613, %565
  %567 = load ptr, ptr %65, align 8, !tbaa !5
  %568 = load i8, ptr %64, align 1, !tbaa !9, !range !41, !noundef !42
  %569 = trunc i8 %568 to i1
  br i1 %569, label %575, label %570

570:                                              ; preds = %566
  store i32 51, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  br label %615

571:                                              ; preds = %594, %580, %576, %562
  %572 = landingpad { ptr, i32 }
          cleanup
  %573 = extractvalue { ptr, i32 } %572, 0
  store ptr %573, ptr %10, align 8
  %574 = extractvalue { ptr, i32 } %572, 1
  store i32 %574, ptr %11, align 4
  br label %614

575:                                              ; preds = %566
  br label %576

576:                                              ; preds = %575
  %577 = load ptr, ptr %65, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TypeLifetime", ptr %577, i32 0, i32 0
  %579 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %580 unwind label %571

580:                                              ; preds = %576
  %581 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %579)
          to label %582 unwind label %571

582:                                              ; preds = %580
  %583 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %581, i32 0, i32 1
  %584 = load i32, ptr %583, align 8, !tbaa !48
  %585 = icmp eq i32 %584, 65535
  br i1 %585, label %608, label %586

586:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #10
  %587 = load ptr, ptr %39, align 8, !tbaa !5
  %588 = getelementptr inbounds %"struct.AST::Named", ptr %587, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %588)
          to label %589 unwind label %595

589:                                              ; preds = %586
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %590 = getelementptr inbounds %class.anon.518, ptr %68, i32 0, i32 0
  %591 = load ptr, ptr %65, align 8, !tbaa !5
  store ptr %591, ptr %590, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef %67)
          to label %592 unwind label %599

592:                                              ; preds = %589
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  %593 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %593, ptr noundef @.str.9)
          to label %594 unwind label %604

594:                                              ; preds = %592
  invoke void @__cxa_throw(ptr %593, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %571

595:                                              ; preds = %586
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %10, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %11, align 4
  br label %603

599:                                              ; preds = %589
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %10, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %66) #10
  br label %603

603:                                              ; preds = %599, %595
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #10
  br label %614

604:                                              ; preds = %592
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %10, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %11, align 4
  call void @__cxa_free_exception(ptr %593) #10
  br label %614

608:                                              ; preds = %582
  br label %609

609:                                              ; preds = %608
  br label %610

610:                                              ; preds = %609
  %611 = load ptr, ptr %65, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TypeLifetime", ptr %611, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %55, ptr align 4 %612, i64 4, i1 false), !tbaa.struct !11
  br label %613

613:                                              ; preds = %610
  store i8 0, ptr %64, align 1, !tbaa !9
  br label %566, !llvm.loop !51

614:                                              ; preds = %604, %603, %571
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #10
  br label %774

615:                                              ; preds = %570
  br label %616

616:                                              ; preds = %615
  store i8 0, ptr %64, align 1, !tbaa !9
  br label %558, !llvm.loop !52

617:                                              ; preds = %561
  br label %772

618:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #10
  store i8 1, ptr %69, align 1, !tbaa !9
  br label %619

619:                                              ; preds = %678, %618
  %620 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %621 = trunc i8 %620 to i1
  br i1 %621, label %623, label %622

622:                                              ; preds = %619
  store i32 56, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #10
  br label %679

623:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #10
  %624 = load ptr, ptr %63, align 8, !tbaa !5
  %625 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %624)
          to label %626 unwind label %632

626:                                              ; preds = %623
  store ptr %625, ptr %70, align 8, !tbaa !5
  br label %627

627:                                              ; preds = %675, %626
  %628 = load ptr, ptr %70, align 8, !tbaa !5
  %629 = load i8, ptr %69, align 1, !tbaa !9, !range !41, !noundef !42
  %630 = trunc i8 %629 to i1
  br i1 %630, label %636, label %631

631:                                              ; preds = %627
  store i32 59, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  br label %677

632:                                              ; preds = %671, %655, %641, %637, %623
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %10, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %11, align 4
  br label %676

636:                                              ; preds = %627
  br label %637

637:                                              ; preds = %636
  %638 = load ptr, ptr %70, align 8, !tbaa !5
  %639 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %638, i32 0, i32 1
  %640 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %639)
          to label %641 unwind label %632

641:                                              ; preds = %637
  %642 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %640)
          to label %643 unwind label %632

643:                                              ; preds = %641
  %644 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %642, i32 0, i32 1
  %645 = load i32, ptr %644, align 8, !tbaa !48
  %646 = icmp eq i32 %645, 65535
  br i1 %646, label %669, label %647

647:                                              ; preds = %643
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %648 = load ptr, ptr %39, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.AST::Named", ptr %648, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %649)
          to label %650 unwind label %656

650:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #10
  %651 = getelementptr inbounds %class.anon.519, ptr %73, i32 0, i32 0
  %652 = load ptr, ptr %70, align 8, !tbaa !5
  store ptr %652, ptr %651, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef %72)
          to label %653 unwind label %660

653:                                              ; preds = %650
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  %654 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %654, ptr noundef @.str.9)
          to label %655 unwind label %665

655:                                              ; preds = %653
  invoke void @__cxa_throw(ptr %654, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %632

656:                                              ; preds = %647
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %10, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %11, align 4
  br label %664

660:                                              ; preds = %650
  %661 = landingpad { ptr, i32 }
          cleanup
  %662 = extractvalue { ptr, i32 } %661, 0
  store ptr %662, ptr %10, align 8
  %663 = extractvalue { ptr, i32 } %661, 1
  store i32 %663, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %664

664:                                              ; preds = %660, %656
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  br label %676

665:                                              ; preds = %653
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %10, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %11, align 4
  call void @__cxa_free_exception(ptr %654) #10
  br label %676

669:                                              ; preds = %643
  br label %670

670:                                              ; preds = %669
  br label %671

671:                                              ; preds = %670
  %672 = load ptr, ptr %70, align 8, !tbaa !5
  %673 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %672, i32 0, i32 2
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %54, ptr noundef nonnull align 8 dereferenceable(144) %673)
          to label %674 unwind label %632

674:                                              ; preds = %671
  br label %675

675:                                              ; preds = %674
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %627, !llvm.loop !53

676:                                              ; preds = %665, %664, %632
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #10
  br label %774

677:                                              ; preds = %631
  br label %678

678:                                              ; preds = %677
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %619, !llvm.loop !54

679:                                              ; preds = %622
  br label %772

680:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #10
  store i8 1, ptr %74, align 1, !tbaa !9
  br label %681

681:                                              ; preds = %724, %680
  %682 = load i8, ptr %74, align 1, !tbaa !9, !range !41, !noundef !42
  %683 = trunc i8 %682 to i1
  br i1 %683, label %685, label %684

684:                                              ; preds = %681
  store i32 64, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #10
  br label %725

685:                                              ; preds = %681
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  %686 = load ptr, ptr %63, align 8, !tbaa !5
  %687 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR12GenericBound11as_LifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %686)
          to label %688 unwind label %694

688:                                              ; preds = %685
  store ptr %687, ptr %75, align 8, !tbaa !5
  br label %689

689:                                              ; preds = %721, %688
  %690 = load ptr, ptr %75, align 8, !tbaa !5
  %691 = load i8, ptr %74, align 1, !tbaa !9, !range !41, !noundef !42
  %692 = trunc i8 %691 to i1
  br i1 %692, label %698, label %693

693:                                              ; preds = %689
  store i32 67, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %723

694:                                              ; preds = %705, %685
  %695 = landingpad { ptr, i32 }
          cleanup
  %696 = extractvalue { ptr, i32 } %695, 0
  store ptr %696, ptr %10, align 8
  %697 = extractvalue { ptr, i32 } %695, 1
  store i32 %697, ptr %11, align 4
  br label %722

698:                                              ; preds = %689
  br label %699

699:                                              ; preds = %698
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #10
  %700 = load ptr, ptr %39, align 8, !tbaa !5
  %701 = getelementptr inbounds %"struct.AST::Named", ptr %700, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %701)
          to label %702 unwind label %706

702:                                              ; preds = %699
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %77, ptr noundef nonnull align 1 dereferenceable(1) %78) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef %77)
          to label %703 unwind label %710

703:                                              ; preds = %702
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  %704 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %704, ptr noundef @.str.9)
          to label %705 unwind label %715

705:                                              ; preds = %703
  invoke void @__cxa_throw(ptr %704, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %694

706:                                              ; preds = %699
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %10, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %11, align 4
  br label %714

710:                                              ; preds = %702
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %10, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %77) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  br label %714

714:                                              ; preds = %710, %706
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #10
  br label %722

715:                                              ; preds = %703
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %10, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %11, align 4
  call void @__cxa_free_exception(ptr %704) #10
  br label %722

719:                                              ; No predecessors!
  br label %720

720:                                              ; preds = %719
  br label %721

721:                                              ; preds = %720
  store i8 0, ptr %74, align 1, !tbaa !9
  br label %689, !llvm.loop !55

722:                                              ; preds = %715, %714, %694
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #10
  br label %774

723:                                              ; preds = %693
  br label %724

724:                                              ; preds = %723
  store i8 0, ptr %74, align 1, !tbaa !9
  br label %681, !llvm.loop !56

725:                                              ; preds = %684
  br label %772

726:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #10
  store i8 1, ptr %79, align 1, !tbaa !9
  br label %727

727:                                              ; preds = %770, %726
  %728 = load i8, ptr %79, align 1, !tbaa !9, !range !41, !noundef !42
  %729 = trunc i8 %728 to i1
  br i1 %729, label %731, label %730

730:                                              ; preds = %727
  store i32 72, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  br label %771

731:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #10
  %732 = load ptr, ptr %63, align 8, !tbaa !5
  %733 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR12GenericBound15as_TypeEqualityEv(ptr noundef nonnull align 8 dereferenceable(168) %732)
          to label %734 unwind label %740

734:                                              ; preds = %731
  store ptr %733, ptr %80, align 8, !tbaa !5
  br label %735

735:                                              ; preds = %767, %734
  %736 = load ptr, ptr %80, align 8, !tbaa !5
  %737 = load i8, ptr %79, align 1, !tbaa !9, !range !41, !noundef !42
  %738 = trunc i8 %737 to i1
  br i1 %738, label %744, label %739

739:                                              ; preds = %735
  store i32 75, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  br label %769

740:                                              ; preds = %751, %731
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %10, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %11, align 4
  br label %768

744:                                              ; preds = %735
  br label %745

745:                                              ; preds = %744
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #10
  %746 = load ptr, ptr %39, align 8, !tbaa !5
  %747 = getelementptr inbounds %"struct.AST::Named", ptr %746, i32 0, i32 0
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %747)
          to label %748 unwind label %752

748:                                              ; preds = %745
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 1 dereferenceable(1) %83) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef %82)
          to label %749 unwind label %756

749:                                              ; preds = %748
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  %750 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %750, ptr noundef @.str.9)
          to label %751 unwind label %761

751:                                              ; preds = %749
  invoke void @__cxa_throw(ptr %750, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1065 unwind label %740

752:                                              ; preds = %745
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %10, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %11, align 4
  br label %760

756:                                              ; preds = %748
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %10, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %11, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #10
  br label %760

760:                                              ; preds = %756, %752
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #10
  br label %768

761:                                              ; preds = %749
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %10, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %11, align 4
  call void @__cxa_free_exception(ptr %750) #10
  br label %768

765:                                              ; No predecessors!
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %735, !llvm.loop !57

768:                                              ; preds = %761, %760, %740
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #10
  br label %774

769:                                              ; preds = %739
  br label %770

770:                                              ; preds = %769
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %727, !llvm.loop !58

771:                                              ; preds = %730
  br label %772

772:                                              ; preds = %771, %725, %679, %617, %551
  br label %773

773:                                              ; preds = %772
  store i8 0, ptr %62, align 1, !tbaa !9
  br label %544, !llvm.loop !59

774:                                              ; preds = %768, %722, %676, %614, %552
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #10
  br label %818

775:                                              ; preds = %547
  br label %776

776:                                              ; preds = %775
  store i8 0, ptr %62, align 1, !tbaa !9
  br label %538, !llvm.loop !60

777:                                              ; preds = %541
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #10
  br label %778

778:                                              ; preds = %777
  %779 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %59) #10
  br label %521

780:                                              ; preds = %523
  %781 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 144, ptr %84) #10
  %782 = load ptr, ptr %39, align 8, !tbaa !5
  %783 = getelementptr inbounds %"struct.AST::Named", ptr %782, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 136, ptr %85) #10
  %784 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %85, i32 0, i32 0
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %784, ptr noundef nonnull align 8 dereferenceable(96) %56) #10
  %785 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %85, i32 0, i32 1
  %786 = load i8, ptr %53, align 1, !tbaa !9, !range !41, !noundef !42
  %787 = trunc i8 %786 to i1
  %788 = zext i1 %787 to i8
  store i8 %788, ptr %785, align 8, !tbaa !61
  %789 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %85, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %789, ptr align 4 %55, i64 4, i1 false), !tbaa.struct !11
  %790 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %85, i32 0, i32 3
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %790, ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  %791 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %85, i32 0, i32 4
  %792 = load ptr, ptr %52, align 8, !tbaa !5
  %793 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %792)
          to label %794 unwind label %804

794:                                              ; preds = %780
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %791, ptr noundef nonnull align 8 dereferenceable(120) %793)
          to label %795 unwind label %804

795:                                              ; preds = %794
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14AssociatedTypeEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.527") align 8 %84, ptr noundef nonnull align 8 dereferenceable(8) %783, ptr noundef nonnull align 8 dereferenceable(136) %85)
          to label %796 unwind label %808

796:                                              ; preds = %795
  %797 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %781, ptr noundef nonnull align 8 dereferenceable(144) %84)
          to label %798 unwind label %812

798:                                              ; preds = %796
  %799 = getelementptr inbounds { ptr, i8 }, ptr %86, i32 0, i32 0
  %800 = extractvalue { ptr, i8 } %797, 0
  store ptr %800, ptr %799, align 8
  %801 = getelementptr inbounds { ptr, i8 }, ptr %86, i32 0, i32 1
  %802 = extractvalue { ptr, i8 } %797, 1
  store i8 %802, ptr %801, align 8
  call void @_ZNSt4pairI8RcStringN3HIR14AssociatedTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %84) #10
  call void @_ZN3HIR14AssociatedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %85) #10
  call void @llvm.lifetime.end.p0(i64 136, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %84) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %57) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %57) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %56) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #10
  br label %803

803:                                              ; preds = %798
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %496, !llvm.loop !86

804:                                              ; preds = %794, %780
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %10, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %11, align 4
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %790) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %784) #10
  br label %817

808:                                              ; preds = %795
  %809 = landingpad { ptr, i32 }
          cleanup
  %810 = extractvalue { ptr, i32 } %809, 0
  store ptr %810, ptr %10, align 8
  %811 = extractvalue { ptr, i32 } %809, 1
  store i32 %811, ptr %11, align 4
  br label %816

812:                                              ; preds = %796
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %10, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %11, align 4
  call void @_ZNSt4pairI8RcStringN3HIR14AssociatedTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %84) #10
  br label %816

816:                                              ; preds = %812, %808
  call void @_ZN3HIR14AssociatedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %85) #10
  br label %817

817:                                              ; preds = %816, %804
  call void @llvm.lifetime.end.p0(i64 136, ptr %85) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %84) #10
  br label %818

818:                                              ; preds = %817, %774
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %57) #10
  br label %819

819:                                              ; preds = %818, %532
  call void @llvm.lifetime.end.p0(i64 96, ptr %57) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %56) #10
  br label %820

820:                                              ; preds = %819, %528
  call void @llvm.lifetime.end.p0(i64 96, ptr %56) #10
  br label %821

821:                                              ; preds = %820, %524
  call void @llvm.lifetime.end.p0(i64 4, ptr %55) #10
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %54) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %54) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #10
  br label %822

822:                                              ; preds = %821, %501
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #10
  br label %1032

823:                                              ; preds = %500
  br label %824

824:                                              ; preds = %823
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %488, !llvm.loop !87

825:                                              ; preds = %491
  br label %1030

826:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #10
  store i8 1, ptr %87, align 1, !tbaa !9
  br label %827

827:                                              ; preds = %889, %826
  %828 = load i8, ptr %87, align 1, !tbaa !9, !range !41, !noundef !42
  %829 = trunc i8 %828 to i1
  br i1 %829, label %831, label %830

830:                                              ; preds = %827
  store i32 80, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #10
  br label %890

831:                                              ; preds = %827
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #10
  %832 = load ptr, ptr %43, align 8, !tbaa !5
  %833 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %832)
          to label %834 unwind label %840

834:                                              ; preds = %831
  store ptr %833, ptr %88, align 8, !tbaa !5
  br label %835

835:                                              ; preds = %862, %834
  %836 = load ptr, ptr %88, align 8, !tbaa !5
  %837 = load i8, ptr %87, align 1, !tbaa !9, !range !41, !noundef !42
  %838 = trunc i8 %837 to i1
  br i1 %838, label %844, label %839

839:                                              ; preds = %835
  store i32 83, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  br label %888

840:                                              ; preds = %831
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %10, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %11, align 4
  br label %887

844:                                              ; preds = %835
  call void @llvm.lifetime.start.p0(i64 352, ptr %89) #10
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %90, ptr align 8 %41, i64 56, i1 false), !tbaa.struct !88
  %845 = load ptr, ptr %39, align 8, !tbaa !5
  %846 = getelementptr inbounds %"struct.AST::Named", ptr %845, i32 0, i32 1
  %847 = load ptr, ptr %88, align 8, !tbaa !5
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::Function") align 8 %89, ptr noundef byval(%"class.HIR::ItemPath") align 8 %90, ptr noundef nonnull align 8 dereferenceable(24) %846, ptr noundef nonnull align 8 dereferenceable(368) %847, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %848 unwind label %863

848:                                              ; preds = %844
  %849 = getelementptr inbounds %"class.HIR::Function", ptr %89, i32 0, i32 0
  store i8 1, ptr %849, align 8, !tbaa !89
  %850 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 376, ptr %91) #10
  %851 = load ptr, ptr %39, align 8, !tbaa !5
  %852 = getelementptr inbounds %"struct.AST::Named", ptr %851, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 368, ptr %92) #10
  invoke void @_ZN3HIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(352) %93, ptr noundef nonnull align 8 dereferenceable(352) %89)
          to label %853 unwind label %867

853:                                              ; preds = %848
  invoke void @_ZN3HIR14TraitValueItem13make_FunctionENS_8FunctionE(ptr dead_on_unwind writable sret(%"class.HIR::TraitValueItem") align 8 %92, ptr noundef %93)
          to label %854 unwind label %871

854:                                              ; preds = %853
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.539") align 8 %91, ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull align 8 dereferenceable(368) %92)
          to label %855 unwind label %875

855:                                              ; preds = %854
  %856 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %850, ptr noundef nonnull align 8 dereferenceable(376) %91)
          to label %857 unwind label %879

857:                                              ; preds = %855
  %858 = getelementptr inbounds { ptr, i8 }, ptr %94, i32 0, i32 0
  %859 = extractvalue { ptr, i8 } %856, 0
  store ptr %859, ptr %858, align 8
  %860 = getelementptr inbounds { ptr, i8 }, ptr %94, i32 0, i32 1
  %861 = extractvalue { ptr, i8 } %856, 1
  store i8 %861, ptr %860, align 8
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %91) #10
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %92) #10
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %93) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %91) #10
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %89) #10
  call void @llvm.lifetime.end.p0(i64 352, ptr %89) #10
  br label %862

862:                                              ; preds = %857
  store i8 0, ptr %87, align 1, !tbaa !9
  br label %835, !llvm.loop !114

863:                                              ; preds = %844
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %10, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %11, align 4
  br label %886

867:                                              ; preds = %848
  %868 = landingpad { ptr, i32 }
          cleanup
  %869 = extractvalue { ptr, i32 } %868, 0
  store ptr %869, ptr %10, align 8
  %870 = extractvalue { ptr, i32 } %868, 1
  store i32 %870, ptr %11, align 4
  br label %885

871:                                              ; preds = %853
  %872 = landingpad { ptr, i32 }
          cleanup
  %873 = extractvalue { ptr, i32 } %872, 0
  store ptr %873, ptr %10, align 8
  %874 = extractvalue { ptr, i32 } %872, 1
  store i32 %874, ptr %11, align 4
  br label %884

875:                                              ; preds = %854
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %10, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %11, align 4
  br label %883

879:                                              ; preds = %855
  %880 = landingpad { ptr, i32 }
          cleanup
  %881 = extractvalue { ptr, i32 } %880, 0
  store ptr %881, ptr %10, align 8
  %882 = extractvalue { ptr, i32 } %880, 1
  store i32 %882, ptr %11, align 4
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %91) #10
  br label %883

883:                                              ; preds = %879, %875
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %92) #10
  br label %884

884:                                              ; preds = %883, %871
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %93) #10
  br label %885

885:                                              ; preds = %884, %867
  call void @llvm.lifetime.end.p0(i64 368, ptr %92) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %91) #10
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %89) #10
  br label %886

886:                                              ; preds = %885, %863
  call void @llvm.lifetime.end.p0(i64 352, ptr %89) #10
  br label %887

887:                                              ; preds = %886, %840
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #10
  br label %1032

888:                                              ; preds = %839
  br label %889

889:                                              ; preds = %888
  store i8 0, ptr %87, align 1, !tbaa !9
  br label %827, !llvm.loop !115

890:                                              ; preds = %830
  br label %1030

891:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr %95) #10
  store i8 1, ptr %95, align 1, !tbaa !9
  br label %892

892:                                              ; preds = %1028, %891
  %893 = load i8, ptr %95, align 1, !tbaa !9, !range !41, !noundef !42
  %894 = trunc i8 %893 to i1
  br i1 %894, label %896, label %895

895:                                              ; preds = %892
  store i32 86, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  br label %1029

896:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %897 = load ptr, ptr %43, align 8, !tbaa !5
  %898 = invoke noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %897)
          to label %899 unwind label %905

899:                                              ; preds = %896
  store ptr %898, ptr %96, align 8, !tbaa !5
  br label %900

900:                                              ; preds = %1025, %899
  %901 = load ptr, ptr %96, align 8, !tbaa !5
  %902 = load i8, ptr %95, align 1, !tbaa !9, !range !41, !noundef !42
  %903 = trunc i8 %902 to i1
  br i1 %903, label %909, label %904

904:                                              ; preds = %900
  store i32 89, ptr %38, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1027

905:                                              ; preds = %909, %896
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %10, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %11, align 4
  br label %1026

909:                                              ; preds = %900
  %910 = load ptr, ptr %96, align 8, !tbaa !5
  %911 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %910)
          to label %912 unwind label %905

912:                                              ; preds = %909
  %913 = load i32, ptr %911, align 4, !tbaa !116
  %914 = icmp eq i32 %913, 0
  br i1 %914, label %915, label %969

915:                                              ; preds = %912
  %916 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 376, ptr %97) #10
  %917 = load ptr, ptr %39, align 8, !tbaa !5
  %918 = getelementptr inbounds %"struct.AST::Named", ptr %917, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 368, ptr %98) #10
  %919 = getelementptr inbounds %"class.HIR::GenericParams", ptr %100, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %919, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %919) #10
  %920 = getelementptr inbounds %"class.HIR::GenericParams", ptr %100, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %920, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %920) #10
  %921 = getelementptr inbounds %"class.HIR::GenericParams", ptr %100, i32 0, i32 2
  call void @llvm.memset.p0.i64(ptr align 8 %921, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %921) #10
  %922 = getelementptr inbounds %"class.HIR::GenericParams", ptr %100, i32 0, i32 3
  call void @llvm.memset.p0.i64(ptr align 8 %922, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %922) #10
  %923 = load ptr, ptr %96, align 8, !tbaa !5
  %924 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %923)
          to label %925 unwind label %940

925:                                              ; preds = %915
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %101, ptr noundef nonnull align 8 dereferenceable(120) %924)
          to label %926 unwind label %940

926:                                              ; preds = %925
  %927 = load ptr, ptr %96, align 8, !tbaa !5
  %928 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %927)
          to label %929 unwind label %944

929:                                              ; preds = %926
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %102, ptr noundef nonnull align 8 dereferenceable(16) %928)
          to label %930 unwind label %944

930:                                              ; preds = %929
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %99, ptr noundef %100, ptr noundef %101, ptr noundef %102)
          to label %931 unwind label %948

931:                                              ; preds = %930
  invoke void @_ZN3HIR14TraitValueItem13make_ConstantENS_8ConstantE(ptr dead_on_unwind writable sret(%"class.HIR::TraitValueItem") align 8 %98, ptr noundef %99)
          to label %932 unwind label %952

932:                                              ; preds = %931
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.539") align 8 %97, ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef nonnull align 8 dereferenceable(368) %98)
          to label %933 unwind label %956

933:                                              ; preds = %932
  %934 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %916, ptr noundef nonnull align 8 dereferenceable(376) %97)
          to label %935 unwind label %960

935:                                              ; preds = %933
  %936 = getelementptr inbounds { ptr, i8 }, ptr %103, i32 0, i32 0
  %937 = extractvalue { ptr, i8 } %934, 0
  store ptr %937, ptr %936, align 8
  %938 = getelementptr inbounds { ptr, i8 }, ptr %103, i32 0, i32 1
  %939 = extractvalue { ptr, i8 } %934, 1
  store i8 %939, ptr %938, align 8
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %97) #10
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %98) #10
  call void @_ZN3HIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(280) %99) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %102) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %100) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %97) #10
  br label %1024

940:                                              ; preds = %925, %915
  %941 = landingpad { ptr, i32 }
          cleanup
  %942 = extractvalue { ptr, i32 } %941, 0
  store ptr %942, ptr %10, align 8
  %943 = extractvalue { ptr, i32 } %941, 1
  store i32 %943, ptr %11, align 4
  br label %968

944:                                              ; preds = %929, %926
  %945 = landingpad { ptr, i32 }
          cleanup
  %946 = extractvalue { ptr, i32 } %945, 0
  store ptr %946, ptr %10, align 8
  %947 = extractvalue { ptr, i32 } %945, 1
  store i32 %947, ptr %11, align 4
  br label %967

948:                                              ; preds = %930
  %949 = landingpad { ptr, i32 }
          cleanup
  %950 = extractvalue { ptr, i32 } %949, 0
  store ptr %950, ptr %10, align 8
  %951 = extractvalue { ptr, i32 } %949, 1
  store i32 %951, ptr %11, align 4
  br label %966

952:                                              ; preds = %931
  %953 = landingpad { ptr, i32 }
          cleanup
  %954 = extractvalue { ptr, i32 } %953, 0
  store ptr %954, ptr %10, align 8
  %955 = extractvalue { ptr, i32 } %953, 1
  store i32 %955, ptr %11, align 4
  br label %965

956:                                              ; preds = %932
  %957 = landingpad { ptr, i32 }
          cleanup
  %958 = extractvalue { ptr, i32 } %957, 0
  store ptr %958, ptr %10, align 8
  %959 = extractvalue { ptr, i32 } %957, 1
  store i32 %959, ptr %11, align 4
  br label %964

960:                                              ; preds = %933
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %10, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %11, align 4
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %97) #10
  br label %964

964:                                              ; preds = %960, %956
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %98) #10
  br label %965

965:                                              ; preds = %964, %952
  call void @_ZN3HIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(280) %99) #10
  br label %966

966:                                              ; preds = %965, %948
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %102) #10
  br label %967

967:                                              ; preds = %966, %944
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #10
  br label %968

968:                                              ; preds = %967, %940
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %100) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %97) #10
  br label %1026

969:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 72, ptr %104) #10
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %104) #10
  %970 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 5
  call void @llvm.lifetime.start.p0(i64 376, ptr %105) #10
  %971 = load ptr, ptr %39, align 8, !tbaa !5
  %972 = getelementptr inbounds %"struct.AST::Named", ptr %971, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 368, ptr %106) #10
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %108, ptr noundef nonnull align 8 dereferenceable(72) %104) #10
  %973 = load ptr, ptr %96, align 8, !tbaa !5
  %974 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %973)
          to label %975 unwind label %995

975:                                              ; preds = %969
  %976 = load i32, ptr %974, align 4, !tbaa !116
  %977 = icmp eq i32 %976, 2
  %978 = load ptr, ptr %96, align 8, !tbaa !5
  %979 = invoke noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %978)
          to label %980 unwind label %995

980:                                              ; preds = %975
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %109, ptr noundef nonnull align 8 dereferenceable(120) %979)
          to label %981 unwind label %995

981:                                              ; preds = %980
  %982 = load ptr, ptr %96, align 8, !tbaa !5
  %983 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %982)
          to label %984 unwind label %999

984:                                              ; preds = %981
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind writable sret(%"class.HIR::ExprPtr") align 8 %110, ptr noundef nonnull align 8 dereferenceable(16) %983)
          to label %985 unwind label %999

985:                                              ; preds = %984
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %107, ptr noundef %108, i1 noundef zeroext %977, ptr noundef %109, ptr noundef %110)
          to label %986 unwind label %1003

986:                                              ; preds = %985
  invoke void @_ZN3HIR14TraitValueItem11make_StaticENS_6StaticE(ptr dead_on_unwind writable sret(%"class.HIR::TraitValueItem") align 8 %106, ptr noundef %107)
          to label %987 unwind label %1007

987:                                              ; preds = %986
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.539") align 8 %105, ptr noundef nonnull align 8 dereferenceable(8) %972, ptr noundef nonnull align 8 dereferenceable(368) %106)
          to label %988 unwind label %1011

988:                                              ; preds = %987
  %989 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %970, ptr noundef nonnull align 8 dereferenceable(376) %105)
          to label %990 unwind label %1015

990:                                              ; preds = %988
  %991 = getelementptr inbounds { ptr, i8 }, ptr %111, i32 0, i32 0
  %992 = extractvalue { ptr, i8 } %989, 0
  store ptr %992, ptr %991, align 8
  %993 = getelementptr inbounds { ptr, i8 }, ptr %111, i32 0, i32 1
  %994 = extractvalue { ptr, i8 } %989, 1
  store i8 %994, ptr %993, align 8
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %105) #10
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %106) #10
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %107) #10
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %110) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %108) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %105) #10
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %104) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr %104) #10
  br label %1024

995:                                              ; preds = %980, %975, %969
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %10, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %11, align 4
  br label %1023

999:                                              ; preds = %984, %981
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %10, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %11, align 4
  br label %1022

1003:                                             ; preds = %985
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %10, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %11, align 4
  br label %1021

1007:                                             ; preds = %986
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %10, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %11, align 4
  br label %1020

1011:                                             ; preds = %987
  %1012 = landingpad { ptr, i32 }
          cleanup
  %1013 = extractvalue { ptr, i32 } %1012, 0
  store ptr %1013, ptr %10, align 8
  %1014 = extractvalue { ptr, i32 } %1012, 1
  store i32 %1014, ptr %11, align 4
  br label %1019

1015:                                             ; preds = %988
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %10, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %11, align 4
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %105) #10
  br label %1019

1019:                                             ; preds = %1015, %1011
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %106) #10
  br label %1020

1020:                                             ; preds = %1019, %1007
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %107) #10
  br label %1021

1021:                                             ; preds = %1020, %1003
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %110) #10
  br label %1022

1022:                                             ; preds = %1021, %999
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  br label %1023

1023:                                             ; preds = %1022, %995
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %108) #10
  call void @llvm.lifetime.end.p0(i64 368, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %105) #10
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %104) #10
  call void @llvm.lifetime.end.p0(i64 72, ptr %104) #10
  br label %1026

1024:                                             ; preds = %990, %935
  br label %1025

1025:                                             ; preds = %1024
  store i8 0, ptr %95, align 1, !tbaa !9
  br label %900, !llvm.loop !118

1026:                                             ; preds = %1023, %968, %905
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %95) #10
  br label %1032

1027:                                             ; preds = %904
  br label %1028

1028:                                             ; preds = %1027
  store i8 0, ptr %95, align 1, !tbaa !9
  br label %892, !llvm.loop !119

1029:                                             ; preds = %895
  br label %1030

1030:                                             ; preds = %1029, %890, %825, %486, %463, %440
  br label %1031

1031:                                             ; preds = %1030
  store i8 0, ptr %42, align 1, !tbaa !9
  br label %405, !llvm.loop !120

1032:                                             ; preds = %1026, %887, %822, %478, %455, %435, %434, %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #10
  br label %1038

1033:                                             ; preds = %408
  br label %1034

1034:                                             ; preds = %1033
  store i8 0, ptr %42, align 1, !tbaa !9
  br label %390, !llvm.loop !121

1035:                                             ; preds = %393
  call void @llvm.lifetime.end.p0(i64 56, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  br label %1036

1036:                                             ; preds = %1035
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br label %333

1038:                                             ; preds = %1032, %398
  call void @llvm.lifetime.end.p0(i64 56, ptr %41) #10
  br label %1039

1039:                                             ; preds = %1038, %394
  call void @llvm.lifetime.end.p0(i64 56, ptr %40) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #10
  br label %1040

1040:                                             ; preds = %1039, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #10
  br label %1054

1041:                                             ; preds = %335
  %1042 = load ptr, ptr %6, align 8, !tbaa !5
  %1043 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %1042)
          to label %1044 unwind label %1048

1044:                                             ; preds = %1041
  %1045 = getelementptr inbounds %"class.HIR::Trait", ptr %0, i32 0, i32 3
  %1046 = zext i1 %1043 to i8
  store i8 %1046, ptr %1045, align 8, !tbaa !122
  store i1 true, ptr %26, align 1
  store i32 1, ptr %38, align 4
  %1047 = load i1, ptr %26, align 1
  br i1 %1047, label %1053, label %1052

1048:                                             ; preds = %1041
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %10, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %11, align 4
  br label %1054

1052:                                             ; preds = %1044
  call void @_ZN3HIR5TraitD2Ev(ptr noundef nonnull align 8 dereferenceable(400) %0) #10
  br label %1053

1053:                                             ; preds = %1052, %1044
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #10
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #10
  ret void

1054:                                             ; preds = %1048, %1040, %377
  call void @_ZN3HIR5TraitD2Ev(ptr noundef nonnull align 8 dereferenceable(400) %0) #10
  br label %1055

1055:                                             ; preds = %1054, %336, %298
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %20) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #10
  br label %1056

1056:                                             ; preds = %1055, %226, %174, %173, %161
  call void @llvm.lifetime.end.p0(i64 4, ptr %15) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %14) #10
  br label %1057

1057:                                             ; preds = %1056, %157
  call void @llvm.lifetime.end.p0(i64 96, ptr %14) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #10
  br label %1058

1058:                                             ; preds = %1057, %153, %149
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  br label %1059

1059:                                             ; preds = %1058, %145
  call void @llvm.lifetime.end.p0(i64 40, ptr %7) #10
  br label %1060

1060:                                             ; preds = %1059
  %1061 = load ptr, ptr %10, align 8
  %1062 = load i32, ptr %11, align 4
  %1063 = insertvalue { ptr, i32 } poison, ptr %1061, 0
  %1064 = insertvalue { ptr, i32 } %1063, i32 %1062, 1
  resume { ptr, i32 } %1064

1065:                                             ; preds = %751, %705, %655, %594, %425, %144
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168)) #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR14AssociatedTypeEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.527") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(136)) #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.539") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(368)) #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem13make_FunctionENS_8FunctionE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem13make_ConstantENS_8ConstantE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) #2 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem11make_StaticENS_6StaticE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = !{!"bool", !7, i64 0}
!11 = !{i64 0, i64 4, !12}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !6, i64 136}
!15 = !{!"_ZTSN3HIR9TraitPathE", !16, i64 0, !22, i64 8, !29, i64 40, !38, i64 88, !6, i64 136}
!16 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !18, i64 0}
!18 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !21, i64 0}
!21 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!22 = !{!"_ZTSN3HIR11GenericPathE", !23, i64 0, !25, i64 8}
!23 = !{!"_ZTSN3HIR10SimplePathE", !24, i64 0}
!24 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!25 = !{!"_ZTSN3HIR10PathParamsE", !26, i64 0, !27, i64 8, !28, i64 16}
!26 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!27 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!28 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!29 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !30, i64 0}
!30 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !31, i64 0}
!31 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !32, i64 0, !34, i64 8}
!32 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !33, i64 0}
!33 = !{!"_ZTSSt4lessI8RcStringE"}
!34 = !{!"_ZTSSt15_Rb_tree_header", !35, i64 0, !37, i64 32}
!35 = !{!"_ZTSSt18_Rb_tree_node_base", !36, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!36 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!37 = !{!"long", !7, i64 0}
!38 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !39, i64 0}
!39 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !40, i64 0}
!40 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !32, i64 0, !34, i64 8}
!41 = !{i8 0, i8 2}
!42 = !{}
!43 = distinct !{!43, !44}
!44 = !{!"llvm.loop.mustprogress"}
!45 = distinct !{!45, !44}
!46 = distinct !{!46, !44}
!47 = distinct !{!47, !44}
!48 = !{!49, !13, i64 8}
!49 = !{!"_ZTSN3HIR10GenericRefE", !50, i64 0, !13, i64 8}
!50 = !{!"_ZTS8RcString", !6, i64 0}
!51 = distinct !{!51, !44}
!52 = distinct !{!52, !44}
!53 = distinct !{!53, !44}
!54 = distinct !{!54, !44}
!55 = distinct !{!55, !44}
!56 = distinct !{!56, !44}
!57 = distinct !{!57, !44}
!58 = distinct !{!58, !44}
!59 = distinct !{!59, !44}
!60 = distinct !{!60, !44}
!61 = !{!62, !10, i64 96}
!62 = !{!"_ZTSN3HIR14AssociatedTypeE", !63, i64 0, !10, i64 96, !80, i64 100, !81, i64 104, !85, i64 128}
!63 = !{!"_ZTSN3HIR13GenericParamsE", !64, i64 0, !68, i64 24, !72, i64 48, !76, i64 72}
!64 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!68 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !69, i64 0}
!69 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!72 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!80 = !{!"_ZTSN3HIR11LifetimeRefE", !13, i64 0}
!81 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !82, i64 0}
!82 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!85 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!86 = distinct !{!86, !44}
!87 = distinct !{!87, !44}
!88 = !{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}
!89 = !{!90, !10, i64 0}
!90 = !{!"_ZTSN3HIR8FunctionE", !10, i64 0, !91, i64 8, !95, i64 80, !85, i64 88, !50, i64 96, !10, i64 104, !10, i64 105, !63, i64 112, !96, i64 208, !10, i64 232, !85, i64 240, !100, i64 248, !108, i64 320}
!91 = !{!"_ZTSN3HIR7LinkageE", !92, i64 0, !93, i64 8, !93, i64 40}
!92 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!93 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !94, i64 0, !37, i64 8, !7, i64 16}
!94 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!95 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!96 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!100 = !{!"_ZTSN3HIR7ExprPtrE", !101, i64 0, !102, i64 8, !102, i64 32, !106, i64 56, !107, i64 64}
!101 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!102 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !103, i64 0}
!103 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!106 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!107 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!108 = !{!"_ZTSN3HIR8Function8MarkingsE", !109, i64 0, !10, i64 24, !113, i64 28}
!109 = !{!"_ZTSSt6vectorIjSaIjEE", !110, i64 0}
!110 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!113 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!114 = distinct !{!114, !44}
!115 = distinct !{!115, !44}
!116 = !{!117, !117, i64 0}
!117 = !{!"_ZTSN3AST6Static5ClassE", !7, i64 0}
!118 = distinct !{!118, !44}
!119 = distinct !{!119, !44}
!120 = distinct !{!120, !44}
!121 = distinct !{!121, !44}
!122 = !{!123, !10, i64 128}
!123 = !{!"_ZTSN3HIR5TraitE", !63, i64 0, !80, i64 96, !81, i64 104, !10, i64 128, !124, i64 136, !129, i64 192, !131, i64 248, !133, i64 304, !13, i64 360, !81, i64 368, !23, i64 392}
!124 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !125, i64 0}
!125 = !{!"_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, !37, i64 8, !126, i64 16, !37, i64 24, !127, i64 32, !6, i64 48}
!126 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!127 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !128, i64 0, !37, i64 8}
!128 = !{!"float", !7, i64 0}
!129 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !130, i64 0}
!130 = !{!"_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, !37, i64 8, !126, i64 16, !37, i64 24, !127, i64 32, !6, i64 48}
!131 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !132, i64 0}
!132 = !{!"_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, !37, i64 8, !126, i64 16, !37, i64 24, !127, i64 32, !6, i64 48}
!133 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !134, i64 0}
!134 = !{!"_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, !37, i64 8, !126, i64 16, !37, i64 24, !127, i64 32, !6, i64 48}


; 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 }
%"class.HIR::TypeRef" = type { 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::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::TraitPath" = type { %"class.std::unique_ptr.106", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.120", ptr }
%"class.std::unique_ptr.106" = type { %"struct.std::__uniq_ptr_data.107" }
%"struct.std::__uniq_ptr_data.107" = type { %"class.std::__uniq_ptr_impl.108" }
%"class.std::__uniq_ptr_impl.108" = type { %"class.std::tuple.109" }
%"class.std::tuple.109" = type { %"struct.std::_Tuple_impl.110" }
%"struct.std::_Tuple_impl.110" = type { %"struct.std::_Head_base.113" }
%"struct.std::_Head_base.113" = 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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, 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.120" = type { %"class.std::_Rb_tree.121" }
%"class.std::_Rb_tree.121" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::GenericBound" = type { i32, %"union.HIR::GenericBound::DataUnion" }
%"union.HIR::GenericBound::DataUnion" = type { %"struct.HIR::GenericBound::Data_TraitBound" }
%"struct.HIR::GenericBound::Data_TraitBound" = type { %"class.std::unique_ptr.106", %"class.HIR::TypeRef", %"class.HIR::TraitPath" }
%"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 }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"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 }
%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.424 = type { ptr }
%struct.Span = type { ptr }
%class.anon.425 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.427" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.429" = type { ptr }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.515 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.517" = type { ptr }
%class.anon.518 = type { ptr }
%class.anon.519 = type { ptr }
%class.anon.520 = type { i8 }
%class.anon.522 = type { i8 }
%"struct.std::pair.527" = type { %class.RcString, %"struct.HIR::AssociatedType" }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.126", %"class.HIR::TypeRef" }
%"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 }
%"struct.std::pair.539" = type { %class.RcString, %"class.HIR::TraitValueItem" }
%"class.HIR::TraitValueItem" = type { i32, %"union.HIR::TraitValueItem::DataUnion" }
%"union.HIR::TraitValueItem::DataUnion" = type { %"class.HIR::Static" }
%"class.HIR::Static" = type { %"class.HIR::GenericParams", %"struct.HIR::Linkage", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i8, i8, i8, %"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.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.551" }

@g_crate_name = external dso_local global %class.RcString, align 8
@_ZN12_GLOBAL__N_17ty_SelfE = external hidden global %"class.HIR::TypeRef", 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
@_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
@.str.17 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [12 x i8], align 1
@__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE = external hidden unnamed_addr constant [69 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: mustprogress uwtable
declare dso_local i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i16 @_ZNK3AST11LifetimeRef7bindingEv(ptr noundef nonnull align 8 dereferenceable(18)) local_unnamed_addr #3 align 2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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: mustprogress uwtable
declare dso_local void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(240), ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR12GenericBound15make_TraitBoundENS0_15Data_TraitBoundE(ptr dead_on_unwind noalias writable sret(%"class.HIR::GenericBound") align 8, ptr noundef) local_unnamed_addr #2 align 2

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

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

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

; 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: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144)) unnamed_addr #0 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #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 #2 align 2

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i32 noundef, i1 noundef zeroext) local_unnamed_addr #6

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

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

; 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 dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE(ptr dead_on_unwind noalias writable sret(%"class.HIR::Trait") align 8 %0, ptr noundef %1, ptr noundef nonnull align 8 dereferenceable(128) %2) local_unnamed_addr #2 personality ptr @__gxx_personality_v0 {
  %4 = alloca %class.TraceLog, align 8
  %5 = alloca %"class.std::function", align 8
  %6 = alloca %class.anon.424, align 8
  %7 = alloca %class.RcString, align 8
  %8 = alloca i8, align 1
  %9 = alloca %"class.HIR::GenericParams", align 8
  %10 = alloca %"struct.HIR::LifetimeRef", align 4
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.425, align 1
  %14 = alloca %"class.std::vector.126", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.427", align 8
  %17 = alloca %"class.HIR::TraitPath", align 8
  %18 = alloca %"class.HIR::GenericParams", align 8
  %19 = alloca %"class.std::vector.126", align 8
  %20 = alloca %"class.HIR::GenericPath", align 8
  %21 = alloca %"struct.HIR::SimplePath", align 8
  %22 = alloca %"struct.HIR::PathParams", align 8
  %23 = alloca %"class.HIR::GenericBound", align 8
  %24 = alloca %"struct.HIR::GenericBound::Data_TraitBound", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.429", align 8
  %27 = alloca %"class.HIR::ItemPath", align 8
  %28 = alloca %"class.HIR::ItemPath", align 8
  %29 = alloca %struct.Span, align 8
  %30 = alloca %"class.std::function", align 8
  %31 = alloca %class.anon.515, align 1
  %32 = alloca i8, align 1
  %33 = alloca %"class.std::vector.126", align 8
  %34 = alloca %"struct.HIR::LifetimeRef", align 4
  %35 = alloca %"class.HIR::GenericParams", align 8
  %36 = alloca %"class.HIR::GenericParams", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.517", align 8
  %38 = alloca %"class.__gnu_cxx::__normal_iterator.517", align 8
  %39 = alloca %struct.Span, align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.518, align 8
  %42 = alloca %struct.Span, align 8
  %43 = alloca %"class.std::function", align 8
  %44 = alloca %class.anon.519, align 8
  %45 = alloca %struct.Span, align 8
  %46 = alloca %"class.std::function", align 8
  %47 = alloca %class.anon.520, align 1
  %48 = alloca %struct.Span, align 8
  %49 = alloca %"class.std::function", align 8
  %50 = alloca %class.anon.522, align 1
  %51 = alloca %"struct.std::pair.527", align 8
  %52 = alloca %"struct.HIR::AssociatedType", align 8
  %53 = alloca %"class.HIR::Function", align 8
  %54 = alloca %"struct.std::pair.539", align 8
  %55 = alloca %"class.HIR::TraitValueItem", align 8
  %56 = alloca %"class.HIR::Function", align 8
  %57 = alloca %"struct.std::pair.539", align 8
  %58 = alloca %"class.HIR::TraitValueItem", align 8
  %59 = alloca %"class.HIR::Constant", align 8
  %60 = alloca %"class.HIR::GenericParams", align 8
  %61 = alloca %"class.HIR::TypeRef", align 8
  %62 = alloca %"class.HIR::ExprPtr", align 8
  %63 = alloca %"struct.HIR::Linkage", align 8
  %64 = alloca %"struct.std::pair.539", align 8
  %65 = alloca %"class.HIR::TraitValueItem", align 8
  %66 = alloca %"class.HIR::Static", align 8
  %67 = alloca %"struct.HIR::Linkage", align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %"class.HIR::ExprPtr", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %4) #9
  %70 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %71 = select i1 %70, ptr @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #9
  store ptr %1, ptr %6, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %6) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %4, ptr noundef %71, ptr noundef nonnull %5)
          to label %72 unwind label %89

72:                                               ; preds = %3
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) @g_crate_name)
  invoke void @_ZN3HIR10SimplePath17update_crate_nameE8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %7)
          to label %73 unwind label %91

73:                                               ; preds = %72
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %8) #9
  store i8 0, ptr %8, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %9) #9
  %74 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %9, ptr noundef nonnull align 8 dereferenceable(48) %74, ptr noundef nonnull %8)
          to label %75 unwind label %93

75:                                               ; preds = %73
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %10) #9
  call void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %10)
  %76 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %77 = call noundef zeroext i1 @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  br i1 %77, label %142, label %78

78:                                               ; preds = %75
  %79 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %80 = call noundef i64 @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %79) #9
  %81 = icmp eq i64 %80, 1
  br i1 %81, label %104, label %82

82:                                               ; preds = %78
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %83 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %84 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %83, i64 noundef 0) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %85 unwind label %97

85:                                               ; preds = %82
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %86 unwind label %99

86:                                               ; preds = %85
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  %87 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull @.str.9)
          to label %88 unwind label %102

88:                                               ; preds = %86
  invoke void @__cxa_throw(ptr nonnull %87, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %95

89:                                               ; preds = %3
  %90 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %5) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #9
  br label %450

91:                                               ; preds = %72
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  br label %449

93:                                               ; preds = %73
  %94 = landingpad { ptr, i32 }
          cleanup
  br label %448

95:                                               ; preds = %138, %136, %134, %128, %126, %121, %119, %117, %115, %112, %109, %88
  %96 = landingpad { ptr, i32 }
          cleanup
  br label %447

97:                                               ; preds = %82
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %101

99:                                               ; preds = %85
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br label %101

101:                                              ; preds = %99, %97
  %.pn = phi { ptr, i32 } [ %100, %99 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  br label %447

102:                                              ; preds = %86
  %103 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %87) #9
  br label %447

104:                                              ; preds = %78
  %105 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %106 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %105, i64 noundef 0) #9
  %107 = getelementptr inbounds i8, ptr %106, i64 8
  %108 = invoke i32 @_Z20LowerHIR_LifetimeRefRKN3AST11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(18) %107)
          to label %109 unwind label %140

109:                                              ; preds = %104
  store i32 %108, ptr %10, align 4, !tbaa !11
  %110 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %111 unwind label %95

111:                                              ; preds = %109
  br i1 %110, label %112, label %142

112:                                              ; preds = %111
  %113 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %113, ptr noundef nonnull @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE)
          to label %115 unwind label %95

115:                                              ; preds = %112
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @.str.35)
          to label %117 unwind label %95

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 4 dereferenceable(4) %10)
          to label %119 unwind label %95

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @.str.36)
          to label %121 unwind label %95

121:                                              ; preds = %119
  %122 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %123 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %122, i64 noundef 0) #9
  %124 = getelementptr inbounds i8, ptr %123, i64 8
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3ASTlsERSoRKNS_11LifetimeRefE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(18) %124)
          to label %126 unwind label %95

126:                                              ; preds = %121
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull @.str.17)
          to label %128 unwind label %95

128:                                              ; preds = %126
  %129 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait9lifetimesEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  %130 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %129, i64 noundef 0) #9
  %131 = getelementptr inbounds i8, ptr %130, i64 8
  %132 = call noundef zeroext i16 @_ZNK3AST11LifetimeRef7bindingEv(ptr noundef nonnull align 8 dereferenceable(18) %131)
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEt(ptr noundef nonnull align 8 dereferenceable(8) %127, i16 noundef zeroext %132)
          to label %134 unwind label %95

134:                                              ; preds = %128
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @.str.37)
          to label %136 unwind label %95

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %138 unwind label %95

138:                                              ; preds = %136
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %142 unwind label %95

140:                                              ; preds = %104
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %447

142:                                              ; preds = %111, %138, %75
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %14) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %143 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait11supertraitsEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  %144 = call ptr @_ZNKSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #9
  store ptr %144, ptr %15, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %145 = call ptr @_ZNKSt6vectorI7SpannedI14Type_TraitPathESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %143) #9
  store ptr %145, ptr %16, align 8
  %146 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %146, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %174, %142
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %18, ptr noundef nonnull align 8 dereferenceable(96) %9) #9
  %.sroa.080.0.copyload = load i32, ptr %10, align 4, !tbaa !11
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  invoke void @_ZN3HIR5TraitC2ENS_13GenericParamsENS_11LifetimeRefESt6vectorINS_9TraitPathESaIS4_EE(ptr noundef nonnull align 8 dereferenceable(400) %0, ptr noundef nonnull %18, i32 %.sroa.080.0.copyload, ptr noundef nonnull %19)
          to label %178 unwind label %211

.lr.ph:                                           ; preds = %142, %174
  %147 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %17) #9
  %148 = getelementptr inbounds i8, ptr %147, i64 8
  %149 = getelementptr inbounds i8, ptr %147, i64 32
  %150 = call noundef nonnull align 8 dereferenceable(240) ptr @_ZNKSt10unique_ptrIN3AST4PathESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %149) #9
  invoke void @_Z18LowerHIR_TraitPathRK4SpanRKN3AST4PathERKNS2_18HigherRankedBoundsEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef nonnull align 8 dereferenceable(240) %150, ptr noundef nonnull align 8 dereferenceable(24) %148, i1 noundef zeroext true)
          to label %151 unwind label %167

151:                                              ; preds = %.lr.ph
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %14, ptr noundef nonnull align 8 dereferenceable(144) %17)
          to label %152 unwind label %169

152:                                              ; preds = %151
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %17) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %17) #9
  %153 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %154 unwind label %172

154:                                              ; preds = %152
  br i1 %153, label %155, label %174

155:                                              ; preds = %154
  %156 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %156, ptr noundef nonnull @__func__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE)
          to label %158 unwind label %172

158:                                              ; preds = %155
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull @.str.38)
          to label %160 unwind label %172

160:                                              ; preds = %158
  %161 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(144) %161)
          to label %163 unwind label %172

163:                                              ; preds = %160
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %165 unwind label %172

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %174 unwind label %172

167:                                              ; preds = %.lr.ph
  %168 = landingpad { ptr, i32 }
          cleanup
  br label %171

169:                                              ; preds = %151
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %17) #9
  br label %171

171:                                              ; preds = %169, %167
  %.pn222 = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %17) #9
  br label %177

172:                                              ; preds = %165, %163, %160, %158, %155, %152
  %173 = landingpad { ptr, i32 }
          cleanup
  br label %177

174:                                              ; preds = %165, %154
  %175 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  %176 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPK7SpannedI14Type_TraitPathESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br i1 %176, label %.lr.ph, label %._crit_edge

177:                                              ; preds = %172, %171
  %.pn224 = phi { ptr, i32 } [ %173, %172 ], [ %.pn222, %171 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %446

178:                                              ; preds = %._crit_edge
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %18) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %20) #9
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %179 unwind label %213

179:                                              ; preds = %178
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull %21)
          to label %180 unwind label %215

180:                                              ; preds = %179
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #9
  invoke void @_ZNK3HIR13GenericParams15make_nop_paramsEjb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %22, ptr noundef nonnull align 8 dereferenceable(96) %0, i32 noundef 0, i1 noundef zeroext false)
          to label %181 unwind label %217

181:                                              ; preds = %180
  %182 = getelementptr inbounds i8, ptr %20, i64 8
  %183 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %184 unwind label %219

184:                                              ; preds = %181
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  %185 = getelementptr inbounds i8, ptr %0, i64 72
  call void @llvm.lifetime.start.p0(i64 168, ptr nonnull %23) #9
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  %186 = getelementptr inbounds i8, ptr %24, i64 8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %186, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %187 unwind label %222

187:                                              ; preds = %184
  %188 = getelementptr inbounds i8, ptr %24, i64 16
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEC2IS3_vEEv(ptr noundef nonnull align 8 dereferenceable(8) %188) #9
  %189 = getelementptr inbounds i8, ptr %24, i64 24
  invoke void @_ZN3HIR11GenericPathC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %189, ptr noundef nonnull align 8 dereferenceable(32) %20)
          to label %190 unwind label %224

190:                                              ; preds = %187
  %191 = getelementptr inbounds i8, ptr %24, i64 56
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %191, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %191) #9
  %192 = getelementptr inbounds i8, ptr %24, i64 104
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %192, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %192) #9
  %193 = getelementptr inbounds i8, ptr %24, i64 152
  store ptr null, ptr %193, align 8, !tbaa !13
  invoke void @_ZN3HIR12GenericBound15make_TraitBoundENS0_15Data_TraitBoundE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericBound") align 8 %23, ptr noundef nonnull %24)
          to label %194 unwind label %227

194:                                              ; preds = %190
  invoke void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %185, ptr noundef nonnull align 8 dereferenceable(168) %23)
          to label %195 unwind label %229

195:                                              ; preds = %194
  call void @_ZN3HIR12GenericBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %23) #9
  call void @_ZN3HIR12GenericBound15Data_TraitBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %24) #9
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %23) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  %196 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3AST5Trait5itemsEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #9
  %197 = call ptr @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %196) #9
  store ptr %197, ptr %25, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %198 = call ptr @_ZNKSt6vectorIN3AST5NamedINS0_4ItemEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %196) #9
  store ptr %198, ptr %26, align 8
  %199 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br i1 %199, label %.lr.ph845, label %._crit_edge846

.lr.ph845:                                        ; preds = %195
  %200 = getelementptr inbounds i8, ptr %0, i64 192
  %201 = getelementptr inbounds i8, ptr %60, i64 24
  %202 = getelementptr inbounds i8, ptr %60, i64 48
  %203 = getelementptr inbounds i8, ptr %60, i64 72
  %204 = getelementptr inbounds i8, ptr %36, i64 72
  %205 = getelementptr inbounds i8, ptr %0, i64 136
  %206 = getelementptr inbounds i8, ptr %52, i64 96
  %207 = getelementptr inbounds i8, ptr %52, i64 100
  %208 = getelementptr inbounds i8, ptr %52, i64 104
  %209 = getelementptr inbounds i8, ptr %52, i64 128
  br label %.lr.ph842

._crit_edge846:                                   ; preds = %.loopexit253, %195
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  %210 = invoke noundef zeroext i1 @_ZNK3AST5Trait9is_markerEv(ptr noundef nonnull align 8 dereferenceable(128) %2)
          to label %440 unwind label %443

211:                                              ; preds = %._crit_edge
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %18) #9
  br label %446

213:                                              ; preds = %178
  %214 = landingpad { ptr, i32 }
          cleanup
  br label %234

215:                                              ; preds = %179
  %216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  br label %234

217:                                              ; preds = %180
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %221

219:                                              ; preds = %181
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  br label %221

221:                                              ; preds = %219, %217
  %.pn167 = phi { ptr, i32 } [ %220, %219 ], [ %218, %217 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  br label %233

222:                                              ; preds = %184
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %226

224:                                              ; preds = %187
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %188) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %186) #9
  br label %226

226:                                              ; preds = %224, %222
  %.pn169 = phi { ptr, i32 } [ %225, %224 ], [ %223, %222 ]
  call void @_ZNSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %232

227:                                              ; preds = %190
  %228 = landingpad { ptr, i32 }
          cleanup
  br label %231

229:                                              ; preds = %194
  %230 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12GenericBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(168) %23) #9
  br label %231

231:                                              ; preds = %229, %227
  %.pn171 = phi { ptr, i32 } [ %230, %229 ], [ %228, %227 ]
  call void @_ZN3HIR12GenericBound15Data_TraitBoundD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %24) #9
  br label %232

232:                                              ; preds = %231, %226
  %.pn171.pn = phi { ptr, i32 } [ %.pn171, %231 ], [ %.pn169, %226 ]
  call void @llvm.lifetime.end.p0(i64 168, ptr nonnull %23) #9
  br label %233

233:                                              ; preds = %232, %221
  %.pn171.pn.pn = phi { ptr, i32 } [ %.pn171.pn, %232 ], [ %.pn167, %221 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #9
  br label %234

234:                                              ; preds = %233, %215, %213
  %.pn171.pn.pn.pn = phi { ptr, i32 } [ %.pn171.pn.pn, %233 ], [ %216, %215 ], [ %214, %213 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %20) #9
  br label %445

.loopexit253:                                     ; preds = %.preheader245.split, %.preheader243.split, %..loopexit241_crit_edge, %..loopexit240_crit_edge, %421, %391
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #9
  %235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  %236 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br i1 %236, label %.lr.ph842, label %._crit_edge846

.lr.ph842:                                        ; preds = %.loopexit253, %.lr.ph845
  %237 = call noundef nonnull align 8 dereferenceable(568) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3AST5NamedINS1_4ItemEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %25) #9
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %27) #9
  call void @_ZN3HIR8ItemPathC2ERKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %28) #9
  %238 = getelementptr inbounds i8, ptr %237, i64 72
  %239 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %238)
  call void @_ZN3HIR8ItemPathC2ERKS0_PKc(ptr noundef nonnull align 8 dereferenceable(56) %28, ptr noundef nonnull align 8 dereferenceable(56) %27, ptr noundef %239)
  %240 = getelementptr inbounds i8, ptr %237, i64 80
  %241 = call noundef i32 @_ZNK3AST4Item3tagEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  switch i32 %241, label %249 [
    i32 0, label %248
    i32 1, label %.preheader243.split
    i32 2, label %.preheader245.split
    i32 11, label %.lr.ph758
    i32 17, label %.preheader249.split.split
    i32 18, label %.lr.ph296
  ]

.preheader249.split.split:                        ; preds = %.lr.ph842
  %242 = getelementptr inbounds i8, ptr %237, i64 8
  %243 = call noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3AST4Item11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  call void @llvm.lifetime.start.p0(i64 352, ptr nonnull %53) #9
  invoke void @_Z17LowerHIR_FunctionN3HIR8ItemPathERKN3AST13AttributeListERKNS1_8FunctionERKNS_7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::Function") align 8 %53, ptr noundef nonnull byval(%"class.HIR::ItemPath") align 8 %28, ptr noundef nonnull align 8 dereferenceable(24) %242, ptr noundef nonnull align 8 dereferenceable(368) %243, ptr noundef nonnull align 8 dereferenceable(8) @_ZN12_GLOBAL__N_17ty_SelfE)
          to label %364 unwind label %.split.split

.preheader245.split:                              ; preds = %.lr.ph842
  %244 = call noundef nonnull align 8 dereferenceable(393) ptr @_ZNK3AST4Item11as_MacroInvEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  br label %.loopexit253

.preheader243.split:                              ; preds = %.lr.ph842
  %245 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3AST4Item7as_NoneEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  br label %.loopexit253

246:                                              ; preds = %253
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %439

248:                                              ; preds = %.lr.ph842
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 1489, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE) #11
  unreachable

249:                                              ; preds = %.lr.ph842
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %250 unwind label %254

250:                                              ; preds = %249
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 1 dereferenceable(1) %31) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull %30)
          to label %251 unwind label %256

251:                                              ; preds = %250
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  %252 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %252, ptr noundef nonnull @.str.9)
          to label %253 unwind label %259

253:                                              ; preds = %251
  invoke void @__cxa_throw(ptr nonnull %252, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %246

254:                                              ; preds = %249
  %255 = landingpad { ptr, i32 }
          cleanup
  br label %258

256:                                              ; preds = %250
  %257 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %258

258:                                              ; preds = %256, %254
  %.pn217 = phi { ptr, i32 } [ %257, %256 ], [ %255, %254 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %439

259:                                              ; preds = %251
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %252) #9
  br label %439

.lr.ph758:                                        ; preds = %.lr.ph842
  %261 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item7as_TypeEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %32) #9
  store i8 1, ptr %32, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %34) #9
  call void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %34)
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %35) #9
  %262 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST9TypeAlias6paramsEv(ptr noundef nonnull align 8 dereferenceable(216) %261)
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %35, ptr noundef nonnull align 8 dereferenceable(48) %262, ptr noundef nonnull %32)
          to label %263 unwind label %272

263:                                              ; preds = %.lr.ph758
  %264 = getelementptr inbounds i8, ptr %261, i64 48
  call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %36) #9
  invoke void @_Z22LowerHIR_GenericParamsRKN3AST13GenericParamsEPb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %36, ptr noundef nonnull align 8 dereferenceable(48) %264, ptr noundef nonnull %32)
          to label %265 unwind label %274

265:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #9
  %266 = call ptr @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %204) #9
  store ptr %266, ptr %37, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  %267 = call ptr @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %204) #9
  store ptr %267, ptr %38, align 8
  %268 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br i1 %268, label %.lr.ph755, label %._crit_edge756

._crit_edge756:                                   ; preds = %..loopexit237_crit_edge, %265
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %51) #9
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %52) #9
  call void @_ZN3HIR13GenericParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(96) %52, ptr noundef nonnull align 8 dereferenceable(96) %35) #9
  %269 = load i8, ptr %32, align 1, !tbaa !9, !range !40, !noundef !41
  store i8 %269, ptr %206, align 8, !tbaa !42
  %270 = load i32, ptr %34, align 4, !tbaa !11
  store i32 %270, ptr %207, align 4, !tbaa !11
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %208, ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  %271 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST9TypeAlias4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %261)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %209, ptr noundef nonnull align 8 dereferenceable(120) %271)
          to label %350 unwind label %353

272:                                              ; preds = %.lr.ph758
  %273 = landingpad { ptr, i32 }
          cleanup
  br label %363

274:                                              ; preds = %263
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %362

.lr.ph755:                                        ; preds = %265, %..loopexit237_crit_edge
  %276 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  %277 = call noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %276)
  switch i32 %277, label %..loopexit237_crit_edge [
    i32 0, label %.split594
    i32 2, label %.preheader.split.split
    i32 3, label %.preheader234.split
    i32 1, label %.split596
    i32 4, label %.split600
  ]

.preheader234.split:                              ; preds = %.lr.ph755
  %278 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %276)
  %279 = getelementptr inbounds i8, ptr %278, i64 8
  %280 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %279)
  %281 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %280)
  %282 = getelementptr inbounds i8, ptr %281, i64 8
  %283 = load i32, ptr %282, align 8, !tbaa !67
  %284 = icmp eq i32 %283, 65535
  br i1 %284, label %317, label %.split445

.preheader.split.split:                           ; preds = %.lr.ph755
  %285 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %276)
  %286 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %285)
  %287 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %286)
  %288 = getelementptr inbounds i8, ptr %287, i64 8
  %289 = load i32, ptr %288, align 8, !tbaa !67
  %290 = icmp eq i32 %289, 65535
  br i1 %290, label %..loopexit_crit_edge, label %.split493

.split594:                                        ; preds = %.lr.ph755
  call void @__assert_fail(ptr noundef nonnull @.str.7, ptr noundef nonnull @.str.5, i32 noundef 1507, ptr noundef nonnull @__PRETTY_FUNCTION__._Z14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitE) #11
  unreachable

291:                                              ; preds = %296
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %349

.split493:                                        ; preds = %.preheader.split.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %293 unwind label %297

293:                                              ; preds = %.split493
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  store ptr %285, ptr %41, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull %40)
          to label %294 unwind label %299

294:                                              ; preds = %293
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  %295 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %295, ptr noundef nonnull @.str.9)
          to label %296 unwind label %302

296:                                              ; preds = %294
  invoke void @__cxa_throw(ptr nonnull %295, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %291

297:                                              ; preds = %.split493
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %301

299:                                              ; preds = %293
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br label %301

301:                                              ; preds = %299, %297
  %.pn209 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  br label %349

302:                                              ; preds = %294
  %303 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %295) #9
  br label %349

..loopexit_crit_edge:                             ; preds = %.preheader.split.split
  %304 = getelementptr inbounds i8, ptr %285, i64 8
  %305 = load i32, ptr %304, align 8, !tbaa !11
  store i32 %305, ptr %34, align 4, !tbaa !11
  br label %..loopexit237_crit_edge

.loopexit232.split.split.split:                   ; preds = %317
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %349

.loopexit.split-lp:                               ; preds = %309
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %349

.split445:                                        ; preds = %.preheader234.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %306 unwind label %310

306:                                              ; preds = %.split445
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #9
  store ptr %278, ptr %44, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull %43)
          to label %307 unwind label %312

307:                                              ; preds = %306
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  %308 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %308, ptr noundef nonnull @.str.9)
          to label %309 unwind label %315

309:                                              ; preds = %307
  invoke void @__cxa_throw(ptr nonnull %308, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %.loopexit.split-lp

310:                                              ; preds = %.split445
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %314

312:                                              ; preds = %306
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %314

314:                                              ; preds = %312, %310
  %.pn205 = phi { ptr, i32 } [ %313, %312 ], [ %311, %310 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %349

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %308) #9
  br label %349

317:                                              ; preds = %.preheader234.split
  %318 = getelementptr inbounds i8, ptr %278, i64 16
  invoke void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(144) %318)
          to label %..loopexit237_crit_edge unwind label %.loopexit232.split.split.split, !llvm.loop !70

.split596:                                        ; preds = %.lr.ph755
  %319 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR12GenericBound11as_LifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %276)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %322 unwind label %326

320:                                              ; preds = %325
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %349

322:                                              ; preds = %.split596
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %47) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 1 dereferenceable(1) %47) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull %46)
          to label %323 unwind label %328

323:                                              ; preds = %322
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  %324 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %324, ptr noundef nonnull @.str.9)
          to label %325 unwind label %331

325:                                              ; preds = %323
  invoke void @__cxa_throw(ptr nonnull %324, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %320

326:                                              ; preds = %.split596
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %330

328:                                              ; preds = %322
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %47) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %330

330:                                              ; preds = %328, %326
  %.pn201 = phi { ptr, i32 } [ %329, %328 ], [ %327, %326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #9
  br label %349

331:                                              ; preds = %323
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %324) #9
  br label %349

.split600:                                        ; preds = %.lr.ph755
  %333 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR12GenericBound15as_TypeEqualityEv(ptr noundef nonnull align 8 dereferenceable(168) %276)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %336 unwind label %340

334:                                              ; preds = %339
  %335 = landingpad { ptr, i32 }
          cleanup
  br label %349

336:                                              ; preds = %.split600
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %50) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ14LowerHIR_TraitN3HIR10SimplePathERKN3AST5TraitEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 1 dereferenceable(1) %50) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %49)
          to label %337 unwind label %342

337:                                              ; preds = %336
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  %338 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %338, ptr noundef nonnull @.str.9)
          to label %339 unwind label %345

339:                                              ; preds = %337
  invoke void @__cxa_throw(ptr nonnull %338, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %451 unwind label %334

340:                                              ; preds = %.split600
  %341 = landingpad { ptr, i32 }
          cleanup
  br label %344

342:                                              ; preds = %336
  %343 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %50) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %344

344:                                              ; preds = %342, %340
  %.pn197 = phi { ptr, i32 } [ %343, %342 ], [ %341, %340 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %349

345:                                              ; preds = %337
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %338) #9
  br label %349

..loopexit237_crit_edge:                          ; preds = %317, %..loopexit_crit_edge, %.lr.ph755
  %347 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  %348 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br i1 %348, label %.lr.ph755, label %._crit_edge756

349:                                              ; preds = %.loopexit232.split.split.split, %.loopexit.split-lp, %334, %344, %345, %320, %330, %331, %314, %315, %291, %301, %302
  %.pn199.pn = phi { ptr, i32 } [ %292, %291 ], [ %303, %302 ], [ %.pn209, %301 ], [ %316, %315 ], [ %.pn205, %314 ], [ %321, %320 ], [ %332, %331 ], [ %.pn201, %330 ], [ %335, %334 ], [ %346, %345 ], [ %.pn197, %344 ], [ %lpad.loopexit, %.loopexit232.split.split.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #9
  br label %361

350:                                              ; preds = %._crit_edge756
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14AssociatedTypeEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.527") align 8 %51, ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(136) %52)
          to label %351 unwind label %355

351:                                              ; preds = %350
  %352 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %205, ptr noundef nonnull align 8 dereferenceable(144) %51)
          to label %..loopexit240_crit_edge unwind label %357

..loopexit240_crit_edge:                          ; preds = %351
  call void @_ZNSt4pairI8RcStringN3HIR14AssociatedTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %51) #9
  call void @_ZN3HIR14AssociatedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %52) #9
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %51) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %36) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %36) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %35) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  br label %.loopexit253

353:                                              ; preds = %._crit_edge756
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %208) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %52) #9
  br label %360

355:                                              ; preds = %350
  %356 = landingpad { ptr, i32 }
          cleanup
  br label %359

357:                                              ; preds = %351
  %358 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR14AssociatedTypeEED2Ev(ptr noundef nonnull align 8 dereferenceable(144) %51) #9
  br label %359

359:                                              ; preds = %357, %355
  %.pn194 = phi { ptr, i32 } [ %358, %357 ], [ %356, %355 ]
  call void @_ZN3HIR14AssociatedTypeD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %52) #9
  br label %360

360:                                              ; preds = %359, %353
  %.pn194.pn = phi { ptr, i32 } [ %.pn194, %359 ], [ %354, %353 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %52) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %51) #9
  br label %361

361:                                              ; preds = %360, %349
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %349 ], [ %.pn194.pn, %360 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %36) #9
  br label %362

362:                                              ; preds = %361, %274
  %.pn199.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn, %361 ], [ %275, %274 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %36) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %35) #9
  br label %363

363:                                              ; preds = %362, %272
  %.pn199.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn199.pn.pn.pn, %362 ], [ %273, %272 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %35) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %34) #9
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %32) #9
  br label %439

364:                                              ; preds = %.preheader249.split.split
  store i8 1, ptr %53, align 8, !tbaa !72
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %54) #9
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %55) #9
  invoke void @_ZN3HIR8FunctionC2EOS0_(ptr noundef nonnull align 8 dereferenceable(352) %56, ptr noundef nonnull align 8 dereferenceable(352) %53)
          to label %365 unwind label %.split301.split

365:                                              ; preds = %364
  invoke void @_ZN3HIR14TraitValueItem13make_FunctionENS_8FunctionE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitValueItem") align 8 %55, ptr noundef nonnull %56)
          to label %366 unwind label %.split304.split

366:                                              ; preds = %365
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.539") align 8 %54, ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(368) %55)
          to label %367 unwind label %.split307.split

367:                                              ; preds = %366
  %368 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %200, ptr noundef nonnull align 8 dereferenceable(376) %54)
          to label %..loopexit241_crit_edge unwind label %.split310.split

..loopexit241_crit_edge:                          ; preds = %367
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %54) #9
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %55) #9
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %56) #9
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %55) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %54) #9
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %53) #9
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %53) #9
  br label %.loopexit253

.split.split:                                     ; preds = %.preheader249.split.split
  %369 = landingpad { ptr, i32 }
          cleanup
  br label %377

.split301.split:                                  ; preds = %364
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %376

.split304.split:                                  ; preds = %365
  %371 = landingpad { ptr, i32 }
          cleanup
  br label %375

.split307.split:                                  ; preds = %366
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %374

.split310.split:                                  ; preds = %367
  %373 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %54) #9
  br label %374

374:                                              ; preds = %.split310.split, %.split307.split
  %.pn189 = phi { ptr, i32 } [ %373, %.split310.split ], [ %372, %.split307.split ]
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %55) #9
  br label %375

375:                                              ; preds = %374, %.split304.split
  %.pn189.pn = phi { ptr, i32 } [ %.pn189, %374 ], [ %371, %.split304.split ]
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %56) #9
  br label %376

376:                                              ; preds = %375, %.split301.split
  %.pn189.pn.pn = phi { ptr, i32 } [ %.pn189.pn, %375 ], [ %370, %.split301.split ]
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %55) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %54) #9
  call void @_ZN3HIR8FunctionD2Ev(ptr noundef nonnull align 8 dereferenceable(352) %53) #9
  br label %377

377:                                              ; preds = %376, %.split.split
  %.pn189.pn.pn.pn = phi { ptr, i32 } [ %.pn189.pn.pn, %376 ], [ %369, %.split.split ]
  call void @llvm.lifetime.end.p0(i64 352, ptr nonnull %53) #9
  br label %439

.lr.ph296:                                        ; preds = %.lr.ph842
  %378 = call noundef nonnull align 8 dereferenceable(216) ptr @_ZNK3AST4Item9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(488) %240)
  %379 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  %380 = load i32, ptr %379, align 4, !tbaa !97
  %381 = icmp eq i32 %380, 0
  br i1 %381, label %382, label %409

382:                                              ; preds = %.lr.ph296
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %57) #9
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %58) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %60, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12TypeParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %201, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR11LifetimeDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %201) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %202, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR13ValueParamDefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %202) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %203, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR12GenericBoundESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %203) #9
  %383 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %61, ptr noundef nonnull align 8 dereferenceable(120) %383)
          to label %384 unwind label %392

384:                                              ; preds = %382
  %385 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %62, ptr noundef nonnull align 8 dereferenceable(16) %385)
          to label %386 unwind label %394

386:                                              ; preds = %384
  invoke void @_ZN3HIR8ConstantC2ENS_13GenericParamsENS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(280) %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %62)
          to label %387 unwind label %396

387:                                              ; preds = %386
  invoke void @_ZN3HIR14TraitValueItem13make_ConstantENS_8ConstantE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitValueItem") align 8 %58, ptr noundef nonnull %59)
          to label %388 unwind label %398

388:                                              ; preds = %387
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.539") align 8 %57, ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(368) %58)
          to label %389 unwind label %400

389:                                              ; preds = %388
  %390 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %200, ptr noundef nonnull align 8 dereferenceable(376) %57)
          to label %391 unwind label %402

391:                                              ; preds = %389
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %57) #9
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %58) #9
  call void @_ZN3HIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(280) %59) #9
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %62) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %60) #9
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %58) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %57) #9
  br label %.loopexit253

392:                                              ; preds = %382
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %408

394:                                              ; preds = %384
  %395 = landingpad { ptr, i32 }
          cleanup
  br label %407

396:                                              ; preds = %386
  %397 = landingpad { ptr, i32 }
          cleanup
  br label %406

398:                                              ; preds = %387
  %399 = landingpad { ptr, i32 }
          cleanup
  br label %405

400:                                              ; preds = %388
  %401 = landingpad { ptr, i32 }
          cleanup
  br label %404

402:                                              ; preds = %389
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %57) #9
  br label %404

404:                                              ; preds = %402, %400
  %.pn182 = phi { ptr, i32 } [ %403, %402 ], [ %401, %400 ]
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %58) #9
  br label %405

405:                                              ; preds = %404, %398
  %.pn182.pn = phi { ptr, i32 } [ %.pn182, %404 ], [ %399, %398 ]
  call void @_ZN3HIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(280) %59) #9
  br label %406

406:                                              ; preds = %405, %396
  %.pn182.pn.pn = phi { ptr, i32 } [ %.pn182.pn, %405 ], [ %397, %396 ]
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %62) #9
  br label %407

407:                                              ; preds = %406, %394
  %.pn182.pn.pn.pn = phi { ptr, i32 } [ %.pn182.pn.pn, %406 ], [ %395, %394 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #9
  br label %408

408:                                              ; preds = %407, %392
  %.pn182.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn182.pn.pn.pn, %407 ], [ %393, %392 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %60) #9
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %58) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %57) #9
  br label %439

409:                                              ; preds = %.lr.ph296
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %63) #9
  call void @_ZN3HIR7LinkageC2Ev(ptr noundef nonnull align 8 dereferenceable(72) %63) #9
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %64) #9
  call void @llvm.lifetime.start.p0(i64 368, ptr nonnull %65) #9
  call void @_ZN3HIR7LinkageC2EOS0_(ptr noundef nonnull align 8 dereferenceable(72) %67, ptr noundef nonnull align 8 dereferenceable(72) %63) #9
  %410 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3AST6Static7s_classEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  %411 = load i32, ptr %410, align 4, !tbaa !97
  %412 = icmp eq i32 %411, 2
  %413 = call noundef nonnull align 8 dereferenceable(120) ptr @_ZNK3AST6Static4typeEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  invoke void @_Z13LowerHIR_TypeRK7TypeRef(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %68, ptr noundef nonnull align 8 dereferenceable(120) %413)
          to label %414 unwind label %422

414:                                              ; preds = %409
  %415 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3AST6Static5valueEv(ptr noundef nonnull align 8 dereferenceable(216) %378)
  invoke void @_Z13LowerHIR_ExprRKN3AST4ExprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ExprPtr") align 8 %69, ptr noundef nonnull align 8 dereferenceable(16) %415)
          to label %416 unwind label %424

416:                                              ; preds = %414
  invoke void @_ZN3HIR6StaticC2ENS_7LinkageEbNS_7TypeRefENS_7ExprPtrE(ptr noundef nonnull align 8 dereferenceable(360) %66, ptr noundef nonnull %67, i1 noundef zeroext %412, ptr noundef nonnull %68, ptr noundef nonnull %69)
          to label %417 unwind label %426

417:                                              ; preds = %416
  invoke void @_ZN3HIR14TraitValueItem11make_StaticENS_6StaticE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitValueItem") align 8 %65, ptr noundef nonnull %66)
          to label %418 unwind label %428

418:                                              ; preds = %417
  invoke void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.539") align 8 %64, ptr noundef nonnull align 8 dereferenceable(8) %238, ptr noundef nonnull align 8 dereferenceable(368) %65)
          to label %419 unwind label %430

419:                                              ; preds = %418
  %420 = invoke { ptr, i8 } @_ZNSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE6insertIS7_IS0_S2_EEENSt9enable_ifIXsr16is_constructibleIS9_OT_EE5valueES7_INSt8__detail14_Node_iteratorIS9_Lb0ELb0EEEbEE4typeESG_(ptr noundef nonnull align 8 dereferenceable(56) %200, ptr noundef nonnull align 8 dereferenceable(376) %64)
          to label %421 unwind label %432

421:                                              ; preds = %419
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %64) #9
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %65) #9
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %66) #9
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %69) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %67) #9
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %64) #9
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %63) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %63) #9
  br label %.loopexit253

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

424:                                              ; preds = %414
  %425 = landingpad { ptr, i32 }
          cleanup
  br label %437

426:                                              ; preds = %416
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %436

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

430:                                              ; preds = %418
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %434

432:                                              ; preds = %419
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR14TraitValueItemEED2Ev(ptr noundef nonnull align 8 dereferenceable(376) %64) #9
  br label %434

434:                                              ; preds = %432, %430
  %.pn176 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @_ZN3HIR14TraitValueItemD2Ev(ptr noundef nonnull align 8 dereferenceable(368) %65) #9
  br label %435

435:                                              ; preds = %434, %428
  %.pn176.pn = phi { ptr, i32 } [ %.pn176, %434 ], [ %429, %428 ]
  call void @_ZN3HIR6StaticD2Ev(ptr noundef nonnull align 8 dereferenceable(360) %66) #9
  br label %436

436:                                              ; preds = %435, %426
  %.pn176.pn.pn = phi { ptr, i32 } [ %.pn176.pn, %435 ], [ %427, %426 ]
  call void @_ZN3HIR7ExprPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %69) #9
  br label %437

437:                                              ; preds = %436, %424
  %.pn176.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn, %436 ], [ %425, %424 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  br label %438

438:                                              ; preds = %437, %422
  %.pn176.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn176.pn.pn.pn, %437 ], [ %423, %422 ]
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %67) #9
  call void @llvm.lifetime.end.p0(i64 368, ptr nonnull %65) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %64) #9
  call void @_ZN3HIR7LinkageD2Ev(ptr noundef nonnull align 8 dereferenceable(72) %63) #9
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %63) #9
  br label %439

439:                                              ; preds = %408, %438, %377, %363, %259, %258, %246
  %.pn219 = phi { ptr, i32 } [ %247, %246 ], [ %260, %259 ], [ %.pn217, %258 ], [ %.pn189.pn.pn.pn, %377 ], [ %.pn199.pn.pn.pn.pn, %363 ], [ %.pn182.pn.pn.pn.pn, %408 ], [ %.pn176.pn.pn.pn.pn, %438 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #9
  br label %445

440:                                              ; preds = %._crit_edge846
  %441 = getelementptr inbounds i8, ptr %0, i64 128
  %442 = zext i1 %210 to i8
  store i8 %442, ptr %441, align 8, !tbaa !99
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #9
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #9
  ret void

443:                                              ; preds = %._crit_edge846
  %444 = landingpad { ptr, i32 }
          cleanup
  br label %445

445:                                              ; preds = %443, %439, %234
  %.pn219.pn = phi { ptr, i32 } [ %.pn219, %439 ], [ %444, %443 ], [ %.pn171.pn.pn.pn, %234 ]
  call void @_ZN3HIR5TraitD2Ev(ptr noundef nonnull align 8 dereferenceable(400) %0) #9
  br label %446

446:                                              ; preds = %445, %211, %177
  %.pn224.pn = phi { ptr, i32 } [ %.pn224, %177 ], [ %.pn219.pn, %445 ], [ %212, %211 ]
  call void @_ZNSt6vectorIN3HIR9TraitPathESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %14) #9
  br label %447

447:                                              ; preds = %446, %140, %102, %101, %95
  %.pn224.pn.pn = phi { ptr, i32 } [ %.pn224.pn, %446 ], [ %96, %95 ], [ %141, %140 ], [ %103, %102 ], [ %.pn, %101 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %10) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %9) #9
  br label %448

448:                                              ; preds = %447, %93
  %.pn224.pn.pn.pn = phi { ptr, i32 } [ %.pn224.pn.pn, %447 ], [ %94, %93 ]
  call void @llvm.lifetime.end.p0(i64 96, ptr nonnull %9) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %8) #9
  br label %449

449:                                              ; preds = %448, %91
  %.pn224.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn224.pn.pn.pn, %448 ], [ %92, %91 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %4) #9
  br label %450

450:                                              ; preds = %449, %89
  %.pn224.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn224.pn.pn.pn.pn, %449 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %4) #9
  resume { ptr, i32 } %.pn224.pn.pn.pn.pn.pn

451:                                              ; preds = %339, %325, %309, %296, %253, %88
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(48) ptr @_ZNK3AST5Trait6paramsEv(ptr noundef nonnull align 8 dereferenceable(128)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt6vectorI7SpannedIN3AST11LifetimeRefEESaIS3_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR14AssociatedTypeEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.527") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(136)) local_unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRK8RcStringN3HIR14TraitValueItemEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.539") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem13make_FunctionENS_8FunctionE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem13make_ConstantENS_8ConstantE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR14TraitValueItem11make_StaticENS_6StaticE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TraitValueItem") align 8, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
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 = { nounwind }
attributes #10 = { noreturn }
attributes #11 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !6, i64 136}
!14 = !{!"_ZTSN3HIR9TraitPathE", !15, i64 0, !21, i64 8, !28, i64 40, !37, i64 88, !6, i64 136}
!15 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !17, i64 0}
!17 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !18, i64 0}
!18 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !19, i64 0}
!19 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !20, i64 0}
!20 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!21 = !{!"_ZTSN3HIR11GenericPathE", !22, i64 0, !24, i64 8}
!22 = !{!"_ZTSN3HIR10SimplePathE", !23, i64 0}
!23 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!24 = !{!"_ZTSN3HIR10PathParamsE", !25, i64 0, !26, i64 8, !27, i64 16}
!25 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!26 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!27 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!28 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !29, i64 0}
!29 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !30, i64 0}
!30 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !31, i64 0, !33, i64 8}
!31 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !32, i64 0}
!32 = !{!"_ZTSSt4lessI8RcStringE"}
!33 = !{!"_ZTSSt15_Rb_tree_header", !34, i64 0, !36, i64 32}
!34 = !{!"_ZTSSt18_Rb_tree_node_base", !35, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!36 = !{!"long", !7, i64 0}
!37 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !31, i64 0, !33, i64 8}
!40 = !{i8 0, i8 2}
!41 = !{}
!42 = !{!43, !10, i64 96}
!43 = !{!"_ZTSN3HIR14AssociatedTypeE", !44, i64 0, !10, i64 96, !61, i64 100, !62, i64 104, !66, i64 128}
!44 = !{!"_ZTSN3HIR13GenericParamsE", !45, i64 0, !49, i64 24, !53, i64 48, !57, i64 72}
!45 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !50, i64 0}
!50 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!53 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSN3HIR11LifetimeRefE", !12, i64 0}
!62 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!66 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!67 = !{!68, !12, i64 8}
!68 = !{!"_ZTSN3HIR10GenericRefE", !69, i64 0, !12, i64 8}
!69 = !{!"_ZTS8RcString", !6, i64 0}
!70 = distinct !{!70, !71}
!71 = !{!"llvm.loop.mustprogress"}
!72 = !{!73, !10, i64 0}
!73 = !{!"_ZTSN3HIR8FunctionE", !10, i64 0, !74, i64 8, !78, i64 80, !66, i64 88, !69, i64 96, !10, i64 104, !10, i64 105, !44, i64 112, !79, i64 208, !10, i64 232, !66, i64 240, !83, i64 248, !91, i64 320}
!74 = !{!"_ZTSN3HIR7LinkageE", !75, i64 0, !76, i64 8, !76, i64 40}
!75 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!76 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !77, i64 0, !36, i64 8, !7, i64 16}
!77 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!78 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!79 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!"_ZTSN3HIR7ExprPtrE", !84, i64 0, !85, i64 8, !85, i64 32, !89, i64 56, !90, i64 64}
!84 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, 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", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!90 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!91 = !{!"_ZTSN3HIR8Function8MarkingsE", !92, i64 0, !10, i64 24, !96, i64 28}
!92 = !{!"_ZTSSt6vectorIjSaIjEE", !93, i64 0}
!93 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !94, i64 0}
!94 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!96 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!97 = !{!98, !98, i64 0}
!98 = !{!"_ZTSN3AST6Static5ClassE", !7, i64 0}
!99 = !{!100, !10, i64 128}
!100 = !{!"_ZTSN3HIR5TraitE", !44, i64 0, !61, i64 96, !62, i64 104, !10, i64 128, !101, i64 136, !106, i64 192, !108, i64 248, !110, i64 304, !12, i64 360, !62, i64 368, !22, i64 392}
!101 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !102, i64 0}
!102 = !{!"_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, !36, i64 8, !103, i64 16, !36, i64 24, !104, i64 32, !6, i64 48}
!103 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!104 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !105, i64 0, !36, i64 8}
!105 = !{!"float", !7, i64 0}
!106 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !107, i64 0}
!107 = !{!"_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, !36, i64 8, !103, i64 16, !36, i64 24, !104, i64 32, !6, i64 48}
!108 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !109, i64 0}
!109 = !{!"_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, !36, i64 8, !103, i64 16, !36, i64 24, !104, i64 32, !6, i64 48}
!110 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !111, i64 0}
!111 = !{!"_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, !36, i64 8, !103, i64 16, !36, i64 24, !104, i64 32, !6, i64 48}


; Effective O3 passes: EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,InstSimplifyPass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,MemCpyOptPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass