; LLVM IR from thepowersgang/mrustc :: src/hir_typeck (static)

; 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.HIR::TypeRef" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.322 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.322 = type { i64, [8 x i8] }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.std::_Rb_tree_iterator.529" = type { ptr }
%"struct.std::pair.535" = type { %"class.std::__cxx11::basic_string", %"class.HIR::TypeRef" }
%"struct.std::pair.532" = type <{ %"struct.std::_Rb_tree_iterator.529", i8, [7 x i8] }>
%struct.Span = type { ptr }
%"class.std::function.0" = 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.537 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.538" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.539" = type { ptr }
%class.anon.540 = type { ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { 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.46" }
%"struct.std::_Head_base.46" = type { ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.23", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_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.RangeVecMap = type <{ %"class.std::vector.29", [8 x i8] }>
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Crate" = type { %class.RcString, i32, %"class.HIR::Module", %"class.std::vector.143", %"class.std::vector.148", %"struct.HIR::Crate::ImplGroup", %"class.HIR::InherentCache", %"class.std::map.168", %"class.std::map.173", %"class.std::vector.178", %"struct.HIR::Crate::ImplGroup.183", %"class.std::map.194", %"class.std::map.199", %"class.std::vector.204", %"class.std::unordered_map.209", %"class.std::vector.204", %"class.std::unordered_map.228", %"class.std::vector.242", %"class.std::vector.247" }
%"class.HIR::Module" = type { %"class.std::vector.99", %"class.std::unordered_map", %"class.std::unordered_map.110", %"class.std::unordered_map.124", %"class.std::vector.138" }
%"class.std::vector.99" = type { %"struct.std::_Vector_base.100" }
%"struct.std::_Vector_base.100" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::SimplePath, std::allocator<HIR::SimplePath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unordered_map" = 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.110" = type { %"class.std::_Hashtable.111" }
%"class.std::_Hashtable.111" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.124" = type { %"class.std::_Hashtable.125" }
%"class.std::_Hashtable.125" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.138" = type { %"struct.std::_Vector_base.139" }
%"struct.std::_Vector_base.139" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::Static>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::Static>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.143" = type { %"struct.std::_Vector_base.144" }
%"struct.std::_Vector_base.144" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::TypeItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.148" = type { %"struct.std::_Vector_base.149" }
%"struct.std::_Vector_base.149" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>, std::allocator<std::pair<RcString, std::unique_ptr<HIR::VisEnt<HIR::ValueItem>>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup" = type { %"class.std::map.153", %"class.std::vector.158", %"class.std::vector.158" }
%"class.std::map.153" = type { %"class.std::_Rb_tree.154" }
%"class.std::_Rb_tree.154" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<std::unique_ptr<HIR::TypeImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.158" = type { %"struct.std::_Vector_base.159" }
%"struct.std::_Vector_base.159" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeImpl>, std::allocator<std::unique_ptr<HIR::TypeImpl>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::InherentCache" = type { %"class.std::map.163" }
%"class.std::map.163" = type { %"class.std::_Rb_tree.164" }
%"class.std::_Rb_tree.164" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::InherentCache::Inner>, std::_Select1st<std::pair<const RcString, HIR::InherentCache::Inner>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.168" = type { %"class.std::_Rb_tree.169" }
%"class.std::_Rb_tree.169" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::TraitImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.173" = type { %"class.std::_Rb_tree.174" }
%"class.std::_Rb_tree.174" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<std::unique_ptr<HIR::MarkerImpl>>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.178" = type { %"struct.std::_Vector_base.179" }
%"struct.std::_Vector_base.179" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GlobalAssembly, std::allocator<HIR::GlobalAssembly>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Crate::ImplGroup.183" = type { %"class.std::map.184", %"class.std::vector.189", %"class.std::vector.189" }
%"class.std::map.184" = type { %"class.std::_Rb_tree.185" }
%"class.std::_Rb_tree.185" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, std::vector<const HIR::TypeImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.189" = type { %"struct.std::_Vector_base.190" }
%"struct.std::_Vector_base.190" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::TypeImpl *, std::allocator<const HIR::TypeImpl *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.194" = type { %"class.std::_Rb_tree.195" }
%"class.std::_Rb_tree.195" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::TraitImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.199" = type { %"class.std::_Rb_tree.200" }
%"class.std::_Rb_tree.200" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::Crate::ImplGroup<const HIR::MarkerImpl *>>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::unordered_map.209" = type { %"class.std::_Hashtable.210" }
%"class.std::_Hashtable.210" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.204" = type { %"struct.std::_Vector_base.205" }
%"struct.std::_Vector_base.205" = 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::unordered_map.228" = type { %"class.std::_Hashtable.229" }
%"class.std::_Hashtable.229" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.242" = type { %"struct.std::_Vector_base.243" }
%"struct.std::_Vector_base.243" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExternLibrary, std::allocator<HIR::ExternLibrary>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.247" = type { %"struct.std::_Vector_base.248" }
%"struct.std::_Vector_base.248" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::__cxx11::basic_string<char>, std::allocator<std::__cxx11::basic_string<char>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Path::Data::Data_UfcsInherent" = type { %"class.HIR::TypeRef", %class.RcString, %"struct.HIR::PathParams", %"struct.HIR::PathParams" }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.34", %"class.std::map.34", %"class.std::map.34", %"class.std::map.39" }
%"class.std::map.34" = type { %"class.std::_Rb_tree.35" }
%"class.std::_Rb_tree.35" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.39" = type { %"class.std::_Rb_tree.40" }
%"class.std::_Rb_tree.40" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::pair.530" = type { %"class.std::__cxx11::basic_string", %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.52", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", 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" }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = 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.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.67", [8 x i8] }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.75" }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = 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.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = 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.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = 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.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = 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.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = 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 }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE = external hidden unnamed_addr constant [93 x i8], align 1
@__FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE = external hidden unnamed_addr constant [30 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [8 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #7 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) #7 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #7 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca ptr, align 8
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca i8, align 1
  %8 = alloca i32, align 4
  %9 = alloca ptr, align 8
  %10 = alloca i8, align 1
  %11 = alloca ptr, align 8
  %12 = alloca i8, align 1
  %13 = alloca ptr, align 8
  %14 = alloca i8, align 1
  %15 = alloca ptr, align 8
  %16 = alloca i8, align 1
  %17 = alloca ptr, align 8
  %18 = alloca i8, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i8, align 1
  %21 = alloca ptr, align 8
  %22 = alloca %"struct.HIR::SimplePath", align 8
  %23 = alloca %class.RcString, align 8
  %24 = alloca %"class.std::initializer_list", align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca i8, align 1
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::__cxx11::basic_string", align 8
  %36 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %37 = alloca %"struct.std::_Rb_tree_iterator.529", align 8
  %38 = alloca %"struct.std::_Rb_tree_iterator.529", align 8
  %39 = alloca %"class.HIR::TypeRef", align 8
  %40 = alloca %"struct.std::pair.535", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"struct.std::pair.532", align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca %struct.Span, align 8
  %46 = alloca %"class.std::function.0", align 8
  %47 = alloca %class.anon.537, align 8
  %48 = alloca i8, align 1
  %49 = alloca ptr, align 8
  %50 = alloca i8, align 1
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.__gnu_cxx::__normal_iterator.538", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.538", align 8
  %55 = alloca ptr, align 8
  %56 = alloca i8, align 1
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca %"struct.HIR::SimplePath", align 8
  %61 = alloca %class.RcString, align 8
  %62 = alloca %"class.std::initializer_list", align 8
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca i8, align 1
  %66 = alloca ptr, align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %69 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %70 = alloca ptr, align 8
  %71 = alloca i8, align 1
  %72 = alloca ptr, align 8
  %73 = alloca i8, align 1
  %74 = alloca ptr, align 8
  %75 = alloca i8, align 1
  %76 = alloca ptr, align 8
  %77 = alloca i8, align 1
  %78 = alloca ptr, align 8
  %79 = alloca i8, align 1
  %80 = alloca ptr, align 8
  %81 = alloca i8, align 1
  %82 = alloca ptr, align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca i8, align 1
  %88 = alloca ptr, align 8
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca %struct.Span, align 8
  %92 = alloca %"class.std::function.0", align 8
  %93 = alloca %class.anon.540, align 8
  %94 = alloca i8, align 1
  %95 = alloca ptr, align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %98 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %99 = alloca ptr, align 8
  %100 = alloca i8, align 1
  %101 = alloca ptr, align 8
  %102 = alloca i8, align 1
  %103 = alloca ptr, align 8
  store ptr %0, ptr %4, align 8, !tbaa !5
  store ptr %1, ptr %5, align 8, !tbaa !5
  store ptr %2, ptr %6, align 8, !tbaa !5
  %104 = load ptr, ptr %4, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %7) #8
  store i8 1, ptr %7, align 1, !tbaa !9
  br label %105

105:                                              ; preds = %943, %3
  %106 = load i8, ptr %7, align 1, !tbaa !9, !range !11, !noundef !12
  %107 = trunc i8 %106 to i1
  br i1 %107, label %109, label %108

108:                                              ; preds = %105
  store i32 2, ptr %8, align 4
  br label %944

109:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %9) #8
  %110 = load ptr, ptr %6, align 8, !tbaa !5
  %111 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %110)
  store ptr %111, ptr %9, align 8, !tbaa !5
  br label %112

112:                                              ; preds = %938, %109
  %113 = load i8, ptr %7, align 1, !tbaa !9, !range !11, !noundef !12
  %114 = trunc i8 %113 to i1
  br i1 %114, label %116, label %115

115:                                              ; preds = %112
  store i32 5, ptr %8, align 4
  br label %939

116:                                              ; preds = %112
  %117 = load ptr, ptr %9, align 8, !tbaa !5
  %118 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %117)
  switch i32 %118, label %937 [
    i32 0, label %119
    i32 1, label %120
    i32 2, label %138
    i32 3, label %156
    i32 4, label %174
    i32 5, label %474
    i32 6, label %492
    i32 7, label %532
    i32 8, label %550
    i32 9, label %596
    i32 10, label %617
    i32 11, label %652
    i32 12, label %673
    i32 13, label %694
    i32 14, label %862
    i32 15, label %901
    i32 16, label %919
  ]

119:                                              ; preds = %116
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1515, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

120:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #8
  store i8 1, ptr %10, align 1, !tbaa !9
  br label %121

121:                                              ; preds = %136, %120
  %122 = load i8, ptr %10, align 1, !tbaa !9, !range !11, !noundef !12
  %123 = trunc i8 %122 to i1
  br i1 %123, label %125, label %124

124:                                              ; preds = %121
  store i32 9, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #8
  br label %137

125:                                              ; preds = %121
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #8
  %126 = load ptr, ptr %9, align 8, !tbaa !5
  %127 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %126)
  store ptr %127, ptr %11, align 8, !tbaa !5
  br label %128

128:                                              ; preds = %134, %125
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  %130 = load i8, ptr %10, align 1, !tbaa !9, !range !11, !noundef !12
  %131 = trunc i8 %130 to i1
  br i1 %131, label %133, label %132

132:                                              ; preds = %128
  store i32 12, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #8
  br label %135

133:                                              ; preds = %128
  br label %134

134:                                              ; preds = %133
  store i8 0, ptr %10, align 1, !tbaa !9
  br label %128, !llvm.loop !13

135:                                              ; preds = %132
  br label %136

136:                                              ; preds = %135
  store i8 0, ptr %10, align 1, !tbaa !9
  br label %121, !llvm.loop !15

137:                                              ; preds = %124
  br label %937

138:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %12) #8
  store i8 1, ptr %12, align 1, !tbaa !9
  br label %139

139:                                              ; preds = %154, %138
  %140 = load i8, ptr %12, align 1, !tbaa !9, !range !11, !noundef !12
  %141 = trunc i8 %140 to i1
  br i1 %141, label %143, label %142

142:                                              ; preds = %139
  store i32 15, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %12) #8
  br label %155

143:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 8, ptr %13) #8
  %144 = load ptr, ptr %9, align 8, !tbaa !5
  %145 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %144)
  store ptr %145, ptr %13, align 8, !tbaa !5
  br label %146

146:                                              ; preds = %152, %143
  %147 = load ptr, ptr %13, align 8, !tbaa !5
  %148 = load i8, ptr %12, align 1, !tbaa !9, !range !11, !noundef !12
  %149 = trunc i8 %148 to i1
  br i1 %149, label %151, label %150

150:                                              ; preds = %146
  store i32 18, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %13) #8
  br label %153

151:                                              ; preds = %146
  br label %152

152:                                              ; preds = %151
  store i8 0, ptr %12, align 1, !tbaa !9
  br label %146, !llvm.loop !16

153:                                              ; preds = %150
  br label %154

154:                                              ; preds = %153
  store i8 0, ptr %12, align 1, !tbaa !9
  br label %139, !llvm.loop !17

155:                                              ; preds = %142
  br label %937

156:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %14) #8
  store i8 1, ptr %14, align 1, !tbaa !9
  br label %157

157:                                              ; preds = %172, %156
  %158 = load i8, ptr %14, align 1, !tbaa !9, !range !11, !noundef !12
  %159 = trunc i8 %158 to i1
  br i1 %159, label %161, label %160

160:                                              ; preds = %157
  store i32 21, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %14) #8
  br label %173

161:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %162 = load ptr, ptr %9, align 8, !tbaa !5
  %163 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %162)
  store ptr %163, ptr %15, align 8, !tbaa !5
  br label %164

164:                                              ; preds = %170, %161
  %165 = load ptr, ptr %15, align 8, !tbaa !5
  %166 = load i8, ptr %14, align 1, !tbaa !9, !range !11, !noundef !12
  %167 = trunc i8 %166 to i1
  br i1 %167, label %169, label %168

168:                                              ; preds = %164
  store i32 24, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %171

169:                                              ; preds = %164
  br label %170

170:                                              ; preds = %169
  store i8 0, ptr %14, align 1, !tbaa !9
  br label %164, !llvm.loop !18

171:                                              ; preds = %168
  br label %172

172:                                              ; preds = %171
  store i8 0, ptr %14, align 1, !tbaa !9
  br label %157, !llvm.loop !19

173:                                              ; preds = %160
  br label %937

174:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #8
  store i8 1, ptr %16, align 1, !tbaa !9
  br label %175

175:                                              ; preds = %470, %174
  %176 = load i8, ptr %16, align 1, !tbaa !9, !range !11, !noundef !12
  %177 = trunc i8 %176 to i1
  br i1 %177, label %179, label %178

178:                                              ; preds = %175
  store i32 27, ptr %8, align 4
  br label %471

179:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %180 = load ptr, ptr %9, align 8, !tbaa !5
  %181 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %180)
  store ptr %181, ptr %17, align 8, !tbaa !5
  br label %182

182:                                              ; preds = %466, %179
  %183 = load ptr, ptr %17, align 8, !tbaa !5
  %184 = load i8, ptr %16, align 1, !tbaa !9, !range !11, !noundef !12
  %185 = trunc i8 %184 to i1
  br i1 %185, label %187, label %186

186:                                              ; preds = %182
  store i32 30, ptr %8, align 4
  br label %467

187:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #8
  store i8 1, ptr %18, align 1, !tbaa !9
  br label %188

188:                                              ; preds = %462, %187
  %189 = load i8, ptr %18, align 1, !tbaa !9, !range !11, !noundef !12
  %190 = trunc i8 %189 to i1
  br i1 %190, label %192, label %191

191:                                              ; preds = %188
  store i32 33, ptr %8, align 4
  br label %463

192:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %193 = load ptr, ptr %17, align 8, !tbaa !5
  %194 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %193, i32 0, i32 0
  %195 = getelementptr inbounds %"class.HIR::Path", ptr %194, i32 0, i32 0
  store ptr %195, ptr %19, align 8, !tbaa !5
  br label %196

196:                                              ; preds = %457, %192
  %197 = load i8, ptr %18, align 1, !tbaa !9, !range !11, !noundef !12
  %198 = trunc i8 %197 to i1
  br i1 %198, label %200, label %199

199:                                              ; preds = %196
  store i32 36, ptr %8, align 4
  br label %458

200:                                              ; preds = %196
  %201 = load ptr, ptr %19, align 8, !tbaa !5
  %202 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %201)
  switch i32 %202, label %456 [
    i32 0, label %203
    i32 1, label %204
    i32 2, label %260
    i32 3, label %304
    i32 4, label %420
  ]

203:                                              ; preds = %200
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1526, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

204:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 1, ptr %20) #8
  store i8 1, ptr %20, align 1, !tbaa !9
  br label %205

205:                                              ; preds = %258, %204
  %206 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %207 = trunc i8 %206 to i1
  br i1 %207, label %209, label %208

208:                                              ; preds = %205
  store i32 40, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  br label %259

209:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #8
  %210 = load ptr, ptr %19, align 8, !tbaa !5
  %211 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %210)
  store ptr %211, ptr %21, align 8, !tbaa !5
  br label %212

212:                                              ; preds = %247, %209
  %213 = load ptr, ptr %21, align 8, !tbaa !5
  %214 = load i8, ptr %20, align 1, !tbaa !9, !range !11, !noundef !12
  %215 = trunc i8 %214 to i1
  br i1 %215, label %217, label %216

216:                                              ; preds = %212
  store i32 43, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  br label %257

217:                                              ; preds = %212
  %218 = load ptr, ptr %5, align 8, !tbaa !5
  %219 = getelementptr inbounds i8, ptr %104, i64 8
  %220 = getelementptr inbounds %struct.TraitResolveCommon, ptr %219, i32 0, i32 0
  %221 = load ptr, ptr %220, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #8
  %222 = getelementptr inbounds i8, ptr %104, i64 8
  %223 = getelementptr inbounds %struct.TraitResolveCommon, ptr %222, i32 0, i32 0
  %224 = load ptr, ptr %223, align 8, !tbaa !20
  %225 = getelementptr inbounds %"class.HIR::Crate", ptr %224, i32 0, i32 0
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %225)
  call void @_ZNSt16initializer_listI8RcStringEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %24) #8
  %226 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %227 = load ptr, ptr %226, align 8
  %228 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %229 = load i64, ptr %228, align 8
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt16initializer_listIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %23, ptr %227, i64 %229)
          to label %230 unwind label %248

230:                                              ; preds = %217
  %231 = getelementptr inbounds i8, ptr %104, i64 8
  %232 = getelementptr inbounds %struct.TraitResolveCommon, ptr %231, i32 0, i32 1
  %233 = load ptr, ptr %232, align 8, !tbaa !39
  %234 = getelementptr inbounds i8, ptr %104, i64 8
  %235 = getelementptr inbounds %struct.TraitResolveCommon, ptr %234, i32 0, i32 2
  %236 = load ptr, ptr %235, align 8, !tbaa !40
  %237 = load ptr, ptr %17, align 8, !tbaa !5
  %238 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %237, i32 0, i32 1
  %239 = invoke noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16) %238)
          to label %240 unwind label %252

240:                                              ; preds = %230
  %241 = load ptr, ptr %21, align 8, !tbaa !5
  %242 = getelementptr inbounds %"class.HIR::GenericPath", ptr %241, i32 0, i32 1
  invoke void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef nonnull align 8 dereferenceable(944) %221, ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef %233, ptr noundef %236, ptr noundef nonnull align 8 dereferenceable(96) %239, ptr noundef nonnull align 8 dereferenceable(24) %242)
          to label %243 unwind label %252

243:                                              ; preds = %240
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  %244 = load ptr, ptr %5, align 8, !tbaa !5
  %245 = load ptr, ptr %21, align 8, !tbaa !5
  %246 = getelementptr inbounds %"class.HIR::GenericPath", ptr %245, i32 0, i32 1
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(24) %246)
  br label %247

247:                                              ; preds = %243
  store i8 0, ptr %20, align 1, !tbaa !9
  br label %212, !llvm.loop !41

248:                                              ; preds = %217
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %25, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %26, align 4
  br label %256

252:                                              ; preds = %240, %230
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %25, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %26, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br label %256

256:                                              ; preds = %252, %248
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %20) #8
  br label %460

257:                                              ; preds = %216
  br label %258

258:                                              ; preds = %257
  store i8 0, ptr %20, align 1, !tbaa !9
  br label %205, !llvm.loop !42

259:                                              ; preds = %208
  br label %456

260:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #8
  store i8 1, ptr %27, align 1, !tbaa !9
  br label %261

261:                                              ; preds = %302, %260
  %262 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %263 = trunc i8 %262 to i1
  br i1 %263, label %265, label %264

264:                                              ; preds = %261
  store i32 46, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #8
  br label %303

265:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %266 = load ptr, ptr %19, align 8, !tbaa !5
  %267 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %266)
  store ptr %267, ptr %28, align 8, !tbaa !5
  br label %268

268:                                              ; preds = %300, %265
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %271 = trunc i8 %270 to i1
  br i1 %271, label %273, label %272

272:                                              ; preds = %268
  store i32 49, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %301

273:                                              ; preds = %268
  %274 = load ptr, ptr %5, align 8, !tbaa !5
  %275 = load ptr, ptr %28, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %275, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %274, ptr noundef nonnull align 8 dereferenceable(8) %276)
  %277 = load ptr, ptr %5, align 8, !tbaa !5
  %278 = load ptr, ptr %28, align 8, !tbaa !5
  %279 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %278, i32 0, i32 2
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull align 8 dereferenceable(24) %279)
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %280 = load ptr, ptr %28, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %280, i32 0, i32 3
  %282 = getelementptr inbounds %"struct.HIR::PathParams", ptr %281, i32 0, i32 1
  store ptr %282, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %283 = load ptr, ptr %29, align 8, !tbaa !5
  %284 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %283)
  store ptr %284, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #8
  %285 = load ptr, ptr %29, align 8, !tbaa !5
  %286 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %285)
  store ptr %286, ptr %31, align 8, !tbaa !5
  br label %287

287:                                              ; preds = %296, %273
  %288 = load ptr, ptr %30, align 8, !tbaa !5
  %289 = load ptr, ptr %31, align 8, !tbaa !5
  %290 = icmp ne ptr %288, %289
  br i1 %290, label %292, label %291

291:                                              ; preds = %287
  store i32 52, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %299

292:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %293 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %293, ptr %32, align 8, !tbaa !5
  %294 = load ptr, ptr %5, align 8, !tbaa !5
  %295 = load ptr, ptr %32, align 8, !tbaa !5
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %295)
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %296

296:                                              ; preds = %292
  %297 = load ptr, ptr %30, align 8, !tbaa !5
  %298 = getelementptr inbounds %"class.HIR::TypeRef", ptr %297, i32 1
  store ptr %298, ptr %30, align 8, !tbaa !5
  br label %287

299:                                              ; preds = %291
  br label %300

300:                                              ; preds = %299
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %268, !llvm.loop !43

301:                                              ; preds = %272
  br label %302

302:                                              ; preds = %301
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %261, !llvm.loop !44

303:                                              ; preds = %264
  br label %456

304:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #8
  store i8 1, ptr %33, align 1, !tbaa !9
  br label %305

305:                                              ; preds = %416, %304
  %306 = load i8, ptr %33, align 1, !tbaa !9, !range !11, !noundef !12
  %307 = trunc i8 %306 to i1
  br i1 %307, label %309, label %308

308:                                              ; preds = %305
  store i32 54, ptr %8, align 4
  br label %417

309:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #8
  %310 = load ptr, ptr %19, align 8, !tbaa !5
  %311 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %310)
  store ptr %311, ptr %34, align 8, !tbaa !5
  br label %312

312:                                              ; preds = %412, %309
  %313 = load ptr, ptr %34, align 8, !tbaa !5
  %314 = load i8, ptr %33, align 1, !tbaa !9, !range !11, !noundef !12
  %315 = trunc i8 %314 to i1
  br i1 %315, label %317, label %316

316:                                              ; preds = %312
  store i32 57, ptr %8, align 4
  br label %413

317:                                              ; preds = %312
  %318 = load ptr, ptr %17, align 8, !tbaa !5
  %319 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %318, i32 0, i32 1
  %320 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %319)
  br i1 %320, label %322, label %321

321:                                              ; preds = %317
  store i32 1, ptr %8, align 4
  br label %413

322:                                              ; preds = %317
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr %36) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %36)
  %323 = load ptr, ptr %17, align 8, !tbaa !5
  %324 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %323, i32 0, i32 0
  %325 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR4PathEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %36, ptr noundef nonnull align 8 dereferenceable(88) %324)
          to label %326 unwind label %354

326:                                              ; preds = %322
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %35, ptr noundef nonnull align 8 dereferenceable(112) %325)
          to label %327 unwind label %354

327:                                              ; preds = %326
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %36) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr %36) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %328 = getelementptr inbounds %class.StaticTraitResolve, ptr %104, i32 0, i32 6
  %329 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE4findERSB_(ptr noundef nonnull align 8 dereferenceable(48) %328, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %330 unwind label %358

330:                                              ; preds = %327
  %331 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.529", ptr %37, i32 0, i32 0
  store ptr %329, ptr %331, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %332 = getelementptr inbounds %class.StaticTraitResolve, ptr %104, i32 0, i32 6
  %333 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %332) #8
  %334 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.529", ptr %38, i32 0, i32 0
  store ptr %333, ptr %334, align 8
  %335 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br i1 %335, label %336, label %380

336:                                              ; preds = %330
  br label %337

337:                                              ; preds = %336
  %338 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %339 unwind label %358

339:                                              ; preds = %337
  br i1 %338, label %340, label %362

340:                                              ; preds = %339
  %341 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %342 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %341, ptr noundef @__FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE)
          to label %343 unwind label %358

343:                                              ; preds = %340
  %344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %342, ptr noundef @.str.53)
          to label %345 unwind label %358

345:                                              ; preds = %343
  %346 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  %347 = getelementptr inbounds %"struct.std::pair.530", ptr %346, i32 0, i32 1
  %348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull align 8 dereferenceable(8) %347)
          to label %349 unwind label %358

349:                                              ; preds = %345
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef @_ZSt3decRSt8ios_base)
          to label %351 unwind label %358

351:                                              ; preds = %349
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %350, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %353 unwind label %358

353:                                              ; preds = %351
  br label %362

354:                                              ; preds = %326, %322
  %355 = landingpad { ptr, i32 }
          cleanup
  %356 = extractvalue { ptr, i32 } %355, 0
  store ptr %356, ptr %25, align 8
  %357 = extractvalue { ptr, i32 } %355, 1
  store i32 %357, ptr %26, align 4
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %36) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr %36) #8
  br label %411

358:                                              ; preds = %380, %351, %349, %345, %343, %340, %337, %327
  %359 = landingpad { ptr, i32 }
          cleanup
  %360 = extractvalue { ptr, i32 } %359, 0
  store ptr %360, ptr %25, align 8
  %361 = extractvalue { ptr, i32 } %359, 1
  store i32 %361, ptr %26, align 4
  br label %410

362:                                              ; preds = %353, %339
  br label %363

363:                                              ; preds = %362
  br label %364

364:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %365 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  %366 = getelementptr inbounds %"struct.std::pair.530", ptr %365, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %39, ptr noundef nonnull align 8 dereferenceable(8) %366)
          to label %367 unwind label %371

367:                                              ; preds = %364
  %368 = load ptr, ptr %6, align 8, !tbaa !5
  %369 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %370 unwind label %375

370:                                              ; preds = %367
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %409

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

375:                                              ; preds = %367
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %25, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %379

379:                                              ; preds = %375, %371
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %410

380:                                              ; preds = %330
  %381 = load ptr, ptr %5, align 8, !tbaa !5
  %382 = load ptr, ptr %6, align 8, !tbaa !5
  %383 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull align 8 dereferenceable(8) %382, i1 noundef zeroext true)
          to label %384 unwind label %358

384:                                              ; preds = %380
  %385 = getelementptr inbounds %class.StaticTraitResolve, ptr %104, i32 0, i32 6
  call void @llvm.lifetime.start.p0(i64 40, ptr %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %386 = load ptr, ptr %6, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %41, ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %387 unwind label %395

387:                                              ; preds = %384
  invoke void @_ZSt9make_pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind writable sret(%"struct.std::pair.535") align 8 %40, ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %388 unwind label %399

388:                                              ; preds = %387
  %389 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE6insertISA_IS5_S7_EEENSt9enable_ifIXsr16is_constructibleISC_T_EE5valueESA_ISt17_Rb_tree_iteratorISC_EbEE4typeEOSI_(ptr noundef nonnull align 8 dereferenceable(48) %385, ptr noundef nonnull align 8 dereferenceable(40) %40)
          to label %390 unwind label %403

390:                                              ; preds = %388
  %391 = getelementptr inbounds { ptr, i8 }, ptr %42, i32 0, i32 0
  %392 = extractvalue { ptr, i8 } %389, 0
  store ptr %392, ptr %391, align 8
  %393 = getelementptr inbounds { ptr, i8 }, ptr %42, i32 0, i32 1
  %394 = extractvalue { ptr, i8 } %389, 1
  store i8 %394, ptr %393, align 8
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #8
  br label %409

395:                                              ; preds = %384
  %396 = landingpad { ptr, i32 }
          cleanup
  %397 = extractvalue { ptr, i32 } %396, 0
  store ptr %397, ptr %25, align 8
  %398 = extractvalue { ptr, i32 } %396, 1
  store i32 %398, ptr %26, align 4
  br label %408

399:                                              ; preds = %387
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %25, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %26, align 4
  br label %407

403:                                              ; preds = %388
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %25, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %26, align 4
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %40) #8
  br label %407

407:                                              ; preds = %403, %399
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %408

408:                                              ; preds = %407, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %40) #8
  br label %410

409:                                              ; preds = %390, %370
  store i32 1, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %413

410:                                              ; preds = %408, %379, %358
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %411

411:                                              ; preds = %410, %354
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  br label %460

412:                                              ; No predecessors!
  store i8 0, ptr %33, align 1, !tbaa !9
  br label %312, !llvm.loop !47

413:                                              ; preds = %409, %321, %316
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #8
  %414 = load i32, ptr %8, align 4
  switch i32 %414, label %417 [
    i32 57, label %415
  ]

415:                                              ; preds = %413
  br label %416

416:                                              ; preds = %415
  store i8 0, ptr %33, align 1, !tbaa !9
  br label %305, !llvm.loop !48

417:                                              ; preds = %413, %308
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  %418 = load i32, ptr %8, align 4
  switch i32 %418, label %458 [
    i32 54, label %419
  ]

419:                                              ; preds = %417
  br label %456

420:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  store i8 1, ptr %43, align 1, !tbaa !9
  br label %421

421:                                              ; preds = %454, %420
  %422 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %423 = trunc i8 %422 to i1
  br i1 %423, label %425, label %424

424:                                              ; preds = %421
  store i32 62, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %455

425:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %426 = load ptr, ptr %19, align 8, !tbaa !5
  %427 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %426)
  store ptr %427, ptr %44, align 8, !tbaa !5
  br label %428

428:                                              ; preds = %451, %425
  %429 = load ptr, ptr %44, align 8, !tbaa !5
  %430 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %431 = trunc i8 %430 to i1
  br i1 %431, label %433, label %432

432:                                              ; preds = %428
  store i32 65, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %453

433:                                              ; preds = %428
  br label %434

434:                                              ; preds = %433
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %435 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %435)
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %436 = getelementptr inbounds %class.anon.537, ptr %47, i32 0, i32 0
  %437 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %437, ptr %436, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef %46)
          to label %438 unwind label %441

438:                                              ; preds = %434
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  %439 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %439, ptr noundef @.str)
          to label %440 unwind label %445

440:                                              ; preds = %438
  call void @__cxa_throw(ptr %439, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
  unreachable

441:                                              ; preds = %434
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %25, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %452

445:                                              ; preds = %438
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %25, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %26, align 4
  call void @__cxa_free_exception(ptr %439) #8
  br label %452

449:                                              ; No predecessors!
  br label %450

450:                                              ; preds = %449
  br label %451

451:                                              ; preds = %450
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %428, !llvm.loop !49

452:                                              ; preds = %445, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  br label %460

453:                                              ; preds = %432
  br label %454

454:                                              ; preds = %453
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %421, !llvm.loop !50

455:                                              ; preds = %424
  br label %456

456:                                              ; preds = %455, %419, %303, %259, %200
  br label %457

457:                                              ; preds = %456
  store i8 0, ptr %18, align 1, !tbaa !9
  br label %196, !llvm.loop !51

458:                                              ; preds = %417, %199
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  %459 = load i32, ptr %8, align 4
  switch i32 %459, label %463 [
    i32 36, label %461
  ]

460:                                              ; preds = %452, %411, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  br label %941

461:                                              ; preds = %458
  br label %462

462:                                              ; preds = %461
  store i8 0, ptr %18, align 1, !tbaa !9
  br label %188, !llvm.loop !52

463:                                              ; preds = %458, %191
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #8
  %464 = load i32, ptr %8, align 4
  switch i32 %464, label %467 [
    i32 33, label %465
  ]

465:                                              ; preds = %463
  br label %466

466:                                              ; preds = %465
  store i8 0, ptr %16, align 1, !tbaa !9
  br label %182, !llvm.loop !53

467:                                              ; preds = %463, %186
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  %468 = load i32, ptr %8, align 4
  switch i32 %468, label %471 [
    i32 30, label %469
  ]

469:                                              ; preds = %467
  br label %470

470:                                              ; preds = %469
  store i8 0, ptr %16, align 1, !tbaa !9
  br label %175, !llvm.loop !54

471:                                              ; preds = %467, %178
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #8
  %472 = load i32, ptr %8, align 4
  switch i32 %472, label %939 [
    i32 27, label %473
  ]

473:                                              ; preds = %471
  br label %937

474:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %48) #8
  store i8 1, ptr %48, align 1, !tbaa !9
  br label %475

475:                                              ; preds = %490, %474
  %476 = load i8, ptr %48, align 1, !tbaa !9, !range !11, !noundef !12
  %477 = trunc i8 %476 to i1
  br i1 %477, label %479, label %478

478:                                              ; preds = %475
  store i32 70, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #8
  br label %491

479:                                              ; preds = %475
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %480 = load ptr, ptr %9, align 8, !tbaa !5
  %481 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %480)
  store ptr %481, ptr %49, align 8, !tbaa !5
  br label %482

482:                                              ; preds = %488, %479
  %483 = load ptr, ptr %49, align 8, !tbaa !5
  %484 = load i8, ptr %48, align 1, !tbaa !9, !range !11, !noundef !12
  %485 = trunc i8 %484 to i1
  br i1 %485, label %487, label %486

486:                                              ; preds = %482
  store i32 73, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  br label %489

487:                                              ; preds = %482
  br label %488

488:                                              ; preds = %487
  store i8 0, ptr %48, align 1, !tbaa !9
  br label %482, !llvm.loop !55

489:                                              ; preds = %486
  br label %490

490:                                              ; preds = %489
  store i8 0, ptr %48, align 1, !tbaa !9
  br label %475, !llvm.loop !56

491:                                              ; preds = %478
  br label %937

492:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #8
  store i8 1, ptr %50, align 1, !tbaa !9
  br label %493

493:                                              ; preds = %530, %492
  %494 = load i8, ptr %50, align 1, !tbaa !9, !range !11, !noundef !12
  %495 = trunc i8 %494 to i1
  br i1 %495, label %497, label %496

496:                                              ; preds = %493
  store i32 76, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #8
  br label %531

497:                                              ; preds = %493
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %498 = load ptr, ptr %9, align 8, !tbaa !5
  %499 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZN3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %498)
  store ptr %499, ptr %51, align 8, !tbaa !5
  br label %500

500:                                              ; preds = %528, %497
  %501 = load ptr, ptr %51, align 8, !tbaa !5
  %502 = load i8, ptr %50, align 1, !tbaa !9, !range !11, !noundef !12
  %503 = trunc i8 %502 to i1
  br i1 %503, label %505, label %504

504:                                              ; preds = %500
  store i32 79, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  br label %529

505:                                              ; preds = %500
  %506 = load ptr, ptr %5, align 8, !tbaa !5
  %507 = load ptr, ptr %51, align 8, !tbaa !5
  %508 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %507, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull align 8 dereferenceable(144) %508)
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %509 = load ptr, ptr %51, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %509, i32 0, i32 1
  store ptr %510, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %511 = load ptr, ptr %52, align 8, !tbaa !5
  %512 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %511) #8
  %513 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.538", ptr %53, i32 0, i32 0
  store ptr %512, ptr %513, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %514 = load ptr, ptr %52, align 8, !tbaa !5
  %515 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %514) #8
  %516 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.538", ptr %54, i32 0, i32 0
  store ptr %515, ptr %516, align 8
  br label %517

517:                                              ; preds = %525, %505
  %518 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br i1 %518, label %520, label %519

519:                                              ; preds = %517
  store i32 82, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %527

520:                                              ; preds = %517
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %521 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  store ptr %521, ptr %55, align 8, !tbaa !5
  %522 = load ptr, ptr %5, align 8, !tbaa !5
  %523 = load ptr, ptr %55, align 8, !tbaa !5
  %524 = getelementptr inbounds %"class.HIR::GenericPath", ptr %523, i32 0, i32 1
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull align 8 dereferenceable(24) %524)
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %525

525:                                              ; preds = %520
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  br label %517

527:                                              ; preds = %519
  br label %528

528:                                              ; preds = %527
  store i8 0, ptr %50, align 1, !tbaa !9
  br label %500, !llvm.loop !57

529:                                              ; preds = %504
  br label %530

530:                                              ; preds = %529
  store i8 0, ptr %50, align 1, !tbaa !9
  br label %493, !llvm.loop !58

531:                                              ; preds = %496
  br label %937

532:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %56) #8
  store i8 1, ptr %56, align 1, !tbaa !9
  br label %533

533:                                              ; preds = %548, %532
  %534 = load i8, ptr %56, align 1, !tbaa !9, !range !11, !noundef !12
  %535 = trunc i8 %534 to i1
  br i1 %535, label %537, label %536

536:                                              ; preds = %533
  store i32 84, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %56) #8
  br label %549

537:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %538 = load ptr, ptr %9, align 8, !tbaa !5
  %539 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %538)
  store ptr %539, ptr %57, align 8, !tbaa !5
  br label %540

540:                                              ; preds = %546, %537
  %541 = load ptr, ptr %57, align 8, !tbaa !5
  %542 = load i8, ptr %56, align 1, !tbaa !9, !range !11, !noundef !12
  %543 = trunc i8 %542 to i1
  br i1 %543, label %545, label %544

544:                                              ; preds = %540
  store i32 87, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  br label %547

545:                                              ; preds = %540
  br label %546

546:                                              ; preds = %545
  store i8 0, ptr %56, align 1, !tbaa !9
  br label %540, !llvm.loop !59

547:                                              ; preds = %544
  br label %548

548:                                              ; preds = %547
  store i8 0, ptr %56, align 1, !tbaa !9
  br label %533, !llvm.loop !60

549:                                              ; preds = %536
  br label %937

550:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #8
  store i8 1, ptr %58, align 1, !tbaa !9
  br label %551

551:                                              ; preds = %594, %550
  %552 = load i8, ptr %58, align 1, !tbaa !9, !range !11, !noundef !12
  %553 = trunc i8 %552 to i1
  br i1 %553, label %555, label %554

554:                                              ; preds = %551
  store i32 90, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %595

555:                                              ; preds = %551
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %556 = load ptr, ptr %9, align 8, !tbaa !5
  %557 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %556)
  store ptr %557, ptr %59, align 8, !tbaa !5
  br label %558

558:                                              ; preds = %583, %555
  %559 = load ptr, ptr %59, align 8, !tbaa !5
  %560 = load i8, ptr %58, align 1, !tbaa !9, !range !11, !noundef !12
  %561 = trunc i8 %560 to i1
  br i1 %561, label %563, label %562

562:                                              ; preds = %558
  store i32 93, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %593

563:                                              ; preds = %558
  %564 = load ptr, ptr %5, align 8, !tbaa !5
  %565 = getelementptr inbounds i8, ptr %104, i64 8
  %566 = getelementptr inbounds %struct.TraitResolveCommon, ptr %565, i32 0, i32 0
  %567 = load ptr, ptr %566, align 8, !tbaa !20
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %568 = getelementptr inbounds i8, ptr %104, i64 8
  %569 = getelementptr inbounds %struct.TraitResolveCommon, ptr %568, i32 0, i32 0
  %570 = load ptr, ptr %569, align 8, !tbaa !20
  %571 = getelementptr inbounds %"class.HIR::Crate", ptr %570, i32 0, i32 0
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %571)
  call void @_ZNSt16initializer_listI8RcStringEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %62) #8
  %572 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 0
  %573 = load ptr, ptr %572, align 8
  %574 = getelementptr inbounds { ptr, i64 }, ptr %62, i32 0, i32 1
  %575 = load i64, ptr %574, align 8
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt16initializer_listIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef %61, ptr %573, i64 %575)
          to label %576 unwind label %584

576:                                              ; preds = %563
  %577 = load ptr, ptr %59, align 8, !tbaa !5
  %578 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %577, i32 0, i32 1
  invoke void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %564, ptr noundef nonnull align 8 dereferenceable(944) %567, ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(32) %578)
          to label %579 unwind label %588

579:                                              ; preds = %576
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  %580 = load ptr, ptr %5, align 8, !tbaa !5
  %581 = load ptr, ptr %59, align 8, !tbaa !5
  %582 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %581, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %580, ptr noundef nonnull align 8 dereferenceable(8) %582)
  br label %583

583:                                              ; preds = %579
  store i8 0, ptr %58, align 1, !tbaa !9
  br label %558, !llvm.loop !61

584:                                              ; preds = %563
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %25, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %26, align 4
  br label %592

588:                                              ; preds = %576
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %25, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %26, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  br label %592

592:                                              ; preds = %588, %584
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #8
  br label %941

593:                                              ; preds = %562
  br label %594

594:                                              ; preds = %593
  store i8 0, ptr %58, align 1, !tbaa !9
  br label %551, !llvm.loop !62

595:                                              ; preds = %554
  br label %937

596:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #8
  store i8 1, ptr %63, align 1, !tbaa !9
  br label %597

597:                                              ; preds = %615, %596
  %598 = load i8, ptr %63, align 1, !tbaa !9, !range !11, !noundef !12
  %599 = trunc i8 %598 to i1
  br i1 %599, label %601, label %600

600:                                              ; preds = %597
  store i32 96, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #8
  br label %616

601:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %602 = load ptr, ptr %9, align 8, !tbaa !5
  %603 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %602)
  store ptr %603, ptr %64, align 8, !tbaa !5
  br label %604

604:                                              ; preds = %613, %601
  %605 = load ptr, ptr %64, align 8, !tbaa !5
  %606 = load i8, ptr %63, align 1, !tbaa !9, !range !11, !noundef !12
  %607 = trunc i8 %606 to i1
  br i1 %607, label %609, label %608

608:                                              ; preds = %604
  store i32 99, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %614

609:                                              ; preds = %604
  %610 = load ptr, ptr %5, align 8, !tbaa !5
  %611 = load ptr, ptr %64, align 8, !tbaa !5
  %612 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %611, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull align 8 dereferenceable(8) %612)
  br label %613

613:                                              ; preds = %609
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %604, !llvm.loop !63

614:                                              ; preds = %608
  br label %615

615:                                              ; preds = %614
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %597, !llvm.loop !64

616:                                              ; preds = %600
  br label %937

617:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %65) #8
  store i8 1, ptr %65, align 1, !tbaa !9
  br label %618

618:                                              ; preds = %650, %617
  %619 = load i8, ptr %65, align 1, !tbaa !9, !range !11, !noundef !12
  %620 = trunc i8 %619 to i1
  br i1 %620, label %622, label %621

621:                                              ; preds = %618
  store i32 102, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #8
  br label %651

622:                                              ; preds = %618
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %623 = load ptr, ptr %9, align 8, !tbaa !5
  %624 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %623)
  store ptr %624, ptr %66, align 8, !tbaa !5
  br label %625

625:                                              ; preds = %648, %622
  %626 = load ptr, ptr %66, align 8, !tbaa !5
  %627 = load i8, ptr %65, align 1, !tbaa !9, !range !11, !noundef !12
  %628 = trunc i8 %627 to i1
  br i1 %628, label %630, label %629

629:                                              ; preds = %625
  store i32 105, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  br label %649

630:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #8
  %631 = load ptr, ptr %66, align 8, !tbaa !5
  store ptr %631, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #8
  %632 = load ptr, ptr %67, align 8, !tbaa !5
  %633 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %632) #8
  %634 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.539", ptr %68, i32 0, i32 0
  store ptr %633, ptr %634, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %635 = load ptr, ptr %67, align 8, !tbaa !5
  %636 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %635) #8
  %637 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.539", ptr %69, i32 0, i32 0
  store ptr %636, ptr %637, align 8
  br label %638

638:                                              ; preds = %645, %630
  %639 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  br i1 %639, label %641, label %640

640:                                              ; preds = %638
  store i32 108, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #8
  br label %647

641:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %642 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  store ptr %642, ptr %70, align 8, !tbaa !5
  %643 = load ptr, ptr %5, align 8, !tbaa !5
  %644 = load ptr, ptr %70, align 8, !tbaa !5
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %643, ptr noundef nonnull align 8 dereferenceable(8) %644)
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %645

645:                                              ; preds = %641
  %646 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  br label %638

647:                                              ; preds = %640
  br label %648

648:                                              ; preds = %647
  store i8 0, ptr %65, align 1, !tbaa !9
  br label %625, !llvm.loop !65

649:                                              ; preds = %629
  br label %650

650:                                              ; preds = %649
  store i8 0, ptr %65, align 1, !tbaa !9
  br label %618, !llvm.loop !66

651:                                              ; preds = %621
  br label %937

652:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #8
  store i8 1, ptr %71, align 1, !tbaa !9
  br label %653

653:                                              ; preds = %671, %652
  %654 = load i8, ptr %71, align 1, !tbaa !9, !range !11, !noundef !12
  %655 = trunc i8 %654 to i1
  br i1 %655, label %657, label %656

656:                                              ; preds = %653
  store i32 110, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #8
  br label %672

657:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %658 = load ptr, ptr %9, align 8, !tbaa !5
  %659 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %658)
  store ptr %659, ptr %72, align 8, !tbaa !5
  br label %660

660:                                              ; preds = %669, %657
  %661 = load ptr, ptr %72, align 8, !tbaa !5
  %662 = load i8, ptr %71, align 1, !tbaa !9, !range !11, !noundef !12
  %663 = trunc i8 %662 to i1
  br i1 %663, label %665, label %664

664:                                              ; preds = %660
  store i32 113, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  br label %670

665:                                              ; preds = %660
  %666 = load ptr, ptr %5, align 8, !tbaa !5
  %667 = load ptr, ptr %72, align 8, !tbaa !5
  %668 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %667, i32 0, i32 2
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 8 dereferenceable(8) %668)
  br label %669

669:                                              ; preds = %665
  store i8 0, ptr %71, align 1, !tbaa !9
  br label %660, !llvm.loop !67

670:                                              ; preds = %664
  br label %671

671:                                              ; preds = %670
  store i8 0, ptr %71, align 1, !tbaa !9
  br label %653, !llvm.loop !68

672:                                              ; preds = %656
  br label %937

673:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #8
  store i8 1, ptr %73, align 1, !tbaa !9
  br label %674

674:                                              ; preds = %692, %673
  %675 = load i8, ptr %73, align 1, !tbaa !9, !range !11, !noundef !12
  %676 = trunc i8 %675 to i1
  br i1 %676, label %678, label %677

677:                                              ; preds = %674
  store i32 116, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #8
  br label %693

678:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %679 = load ptr, ptr %9, align 8, !tbaa !5
  %680 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %679)
  store ptr %680, ptr %74, align 8, !tbaa !5
  br label %681

681:                                              ; preds = %690, %678
  %682 = load ptr, ptr %74, align 8, !tbaa !5
  %683 = load i8, ptr %73, align 1, !tbaa !9, !range !11, !noundef !12
  %684 = trunc i8 %683 to i1
  br i1 %684, label %686, label %685

685:                                              ; preds = %681
  store i32 119, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  br label %691

686:                                              ; preds = %681
  %687 = load ptr, ptr %5, align 8, !tbaa !5
  %688 = load ptr, ptr %74, align 8, !tbaa !5
  %689 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %688, i32 0, i32 1
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %687, ptr noundef nonnull align 8 dereferenceable(8) %689)
  br label %690

690:                                              ; preds = %686
  store i8 0, ptr %73, align 1, !tbaa !9
  br label %681, !llvm.loop !69

691:                                              ; preds = %685
  br label %692

692:                                              ; preds = %691
  store i8 0, ptr %73, align 1, !tbaa !9
  br label %674, !llvm.loop !70

693:                                              ; preds = %677
  br label %937

694:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #8
  store i8 1, ptr %75, align 1, !tbaa !9
  br label %695

695:                                              ; preds = %860, %694
  %696 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %697 = trunc i8 %696 to i1
  br i1 %697, label %699, label %698

698:                                              ; preds = %695
  store i32 122, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  br label %861

699:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #8
  %700 = load ptr, ptr %9, align 8, !tbaa !5
  %701 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %700)
  store ptr %701, ptr %76, align 8, !tbaa !5
  br label %702

702:                                              ; preds = %858, %699
  %703 = load ptr, ptr %76, align 8, !tbaa !5
  %704 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %705 = trunc i8 %704 to i1
  br i1 %705, label %707, label %706

706:                                              ; preds = %702
  store i32 125, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  br label %859

707:                                              ; preds = %702
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #8
  store i8 1, ptr %77, align 1, !tbaa !9
  br label %708

708:                                              ; preds = %856, %707
  %709 = load i8, ptr %77, align 1, !tbaa !9, !range !11, !noundef !12
  %710 = trunc i8 %709 to i1
  br i1 %710, label %712, label %711

711:                                              ; preds = %708
  store i32 128, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  br label %857

712:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %713 = load ptr, ptr %76, align 8, !tbaa !5
  %714 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %713, i32 0, i32 0
  %715 = getelementptr inbounds %"class.HIR::Path", ptr %714, i32 0, i32 0
  store ptr %715, ptr %78, align 8, !tbaa !5
  br label %716

716:                                              ; preds = %854, %712
  %717 = load i8, ptr %77, align 1, !tbaa !9, !range !11, !noundef !12
  %718 = trunc i8 %717 to i1
  br i1 %718, label %720, label %719

719:                                              ; preds = %716
  store i32 131, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %855

720:                                              ; preds = %716
  %721 = load ptr, ptr %78, align 8, !tbaa !5
  %722 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %721)
  switch i32 %722, label %853 [
    i32 0, label %723
    i32 1, label %724
    i32 2, label %745
    i32 3, label %789
    i32 4, label %817
  ]

723:                                              ; preds = %720
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1590, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

724:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #8
  store i8 1, ptr %79, align 1, !tbaa !9
  br label %725

725:                                              ; preds = %743, %724
  %726 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %727 = trunc i8 %726 to i1
  br i1 %727, label %729, label %728

728:                                              ; preds = %725
  store i32 135, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #8
  br label %744

729:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #8
  %730 = load ptr, ptr %78, align 8, !tbaa !5
  %731 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %730)
  store ptr %731, ptr %80, align 8, !tbaa !5
  br label %732

732:                                              ; preds = %741, %729
  %733 = load ptr, ptr %80, align 8, !tbaa !5
  %734 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %735 = trunc i8 %734 to i1
  br i1 %735, label %737, label %736

736:                                              ; preds = %732
  store i32 138, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #8
  br label %742

737:                                              ; preds = %732
  %738 = load ptr, ptr %5, align 8, !tbaa !5
  %739 = load ptr, ptr %80, align 8, !tbaa !5
  %740 = getelementptr inbounds %"class.HIR::GenericPath", ptr %739, i32 0, i32 1
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %738, ptr noundef nonnull align 8 dereferenceable(24) %740)
  br label %741

741:                                              ; preds = %737
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %732, !llvm.loop !71

742:                                              ; preds = %736
  br label %743

743:                                              ; preds = %742
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %725, !llvm.loop !72

744:                                              ; preds = %728
  br label %853

745:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #8
  store i8 1, ptr %81, align 1, !tbaa !9
  br label %746

746:                                              ; preds = %787, %745
  %747 = load i8, ptr %81, align 1, !tbaa !9, !range !11, !noundef !12
  %748 = trunc i8 %747 to i1
  br i1 %748, label %750, label %749

749:                                              ; preds = %746
  store i32 141, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #8
  br label %788

750:                                              ; preds = %746
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #8
  %751 = load ptr, ptr %78, align 8, !tbaa !5
  %752 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %751)
  store ptr %752, ptr %82, align 8, !tbaa !5
  br label %753

753:                                              ; preds = %785, %750
  %754 = load ptr, ptr %82, align 8, !tbaa !5
  %755 = load i8, ptr %81, align 1, !tbaa !9, !range !11, !noundef !12
  %756 = trunc i8 %755 to i1
  br i1 %756, label %758, label %757

757:                                              ; preds = %753
  store i32 144, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #8
  br label %786

758:                                              ; preds = %753
  %759 = load ptr, ptr %5, align 8, !tbaa !5
  %760 = load ptr, ptr %82, align 8, !tbaa !5
  %761 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %760, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef nonnull align 8 dereferenceable(8) %761)
  %762 = load ptr, ptr %5, align 8, !tbaa !5
  %763 = load ptr, ptr %82, align 8, !tbaa !5
  %764 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %763, i32 0, i32 2
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %762, ptr noundef nonnull align 8 dereferenceable(24) %764)
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %765 = load ptr, ptr %82, align 8, !tbaa !5
  %766 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %765, i32 0, i32 3
  %767 = getelementptr inbounds %"struct.HIR::PathParams", ptr %766, i32 0, i32 1
  store ptr %767, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %768 = load ptr, ptr %83, align 8, !tbaa !5
  %769 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %768)
  store ptr %769, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #8
  %770 = load ptr, ptr %83, align 8, !tbaa !5
  %771 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %770)
  store ptr %771, ptr %85, align 8, !tbaa !5
  br label %772

772:                                              ; preds = %781, %758
  %773 = load ptr, ptr %84, align 8, !tbaa !5
  %774 = load ptr, ptr %85, align 8, !tbaa !5
  %775 = icmp ne ptr %773, %774
  br i1 %775, label %777, label %776

776:                                              ; preds = %772
  store i32 147, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %784

777:                                              ; preds = %772
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %778 = load ptr, ptr %84, align 8, !tbaa !5
  store ptr %778, ptr %86, align 8, !tbaa !5
  %779 = load ptr, ptr %5, align 8, !tbaa !5
  %780 = load ptr, ptr %86, align 8, !tbaa !5
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %779, ptr noundef nonnull align 8 dereferenceable(8) %780)
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  br label %781

781:                                              ; preds = %777
  %782 = load ptr, ptr %84, align 8, !tbaa !5
  %783 = getelementptr inbounds %"class.HIR::TypeRef", ptr %782, i32 1
  store ptr %783, ptr %84, align 8, !tbaa !5
  br label %772

784:                                              ; preds = %776
  br label %785

785:                                              ; preds = %784
  store i8 0, ptr %81, align 1, !tbaa !9
  br label %753, !llvm.loop !73

786:                                              ; preds = %757
  br label %787

787:                                              ; preds = %786
  store i8 0, ptr %81, align 1, !tbaa !9
  br label %746, !llvm.loop !74

788:                                              ; preds = %749
  br label %853

789:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  store i8 1, ptr %87, align 1, !tbaa !9
  br label %790

790:                                              ; preds = %815, %789
  %791 = load i8, ptr %87, align 1, !tbaa !9, !range !11, !noundef !12
  %792 = trunc i8 %791 to i1
  br i1 %792, label %794, label %793

793:                                              ; preds = %790
  store i32 149, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  br label %816

794:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %795 = load ptr, ptr %78, align 8, !tbaa !5
  %796 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %795)
  store ptr %796, ptr %88, align 8, !tbaa !5
  br label %797

797:                                              ; preds = %813, %794
  %798 = load ptr, ptr %88, align 8, !tbaa !5
  %799 = load i8, ptr %87, align 1, !tbaa !9, !range !11, !noundef !12
  %800 = trunc i8 %799 to i1
  br i1 %800, label %802, label %801

801:                                              ; preds = %797
  store i32 152, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  br label %814

802:                                              ; preds = %797
  %803 = load ptr, ptr %5, align 8, !tbaa !5
  %804 = load ptr, ptr %88, align 8, !tbaa !5
  %805 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %804, i32 0, i32 0
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %803, ptr noundef nonnull align 8 dereferenceable(8) %805)
  %806 = load ptr, ptr %5, align 8, !tbaa !5
  %807 = load ptr, ptr %88, align 8, !tbaa !5
  %808 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %807, i32 0, i32 1
  %809 = getelementptr inbounds %"class.HIR::GenericPath", ptr %808, i32 0, i32 1
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %806, ptr noundef nonnull align 8 dereferenceable(24) %809)
  %810 = load ptr, ptr %5, align 8, !tbaa !5
  %811 = load ptr, ptr %88, align 8, !tbaa !5
  %812 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %811, i32 0, i32 3
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %810, ptr noundef nonnull align 8 dereferenceable(24) %812)
  br label %813

813:                                              ; preds = %802
  store i8 0, ptr %87, align 1, !tbaa !9
  br label %797, !llvm.loop !75

814:                                              ; preds = %801
  br label %815

815:                                              ; preds = %814
  store i8 0, ptr %87, align 1, !tbaa !9
  br label %790, !llvm.loop !76

816:                                              ; preds = %793
  br label %853

817:                                              ; preds = %720
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  store i8 1, ptr %89, align 1, !tbaa !9
  br label %818

818:                                              ; preds = %851, %817
  %819 = load i8, ptr %89, align 1, !tbaa !9, !range !11, !noundef !12
  %820 = trunc i8 %819 to i1
  br i1 %820, label %822, label %821

821:                                              ; preds = %818
  store i32 155, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %852

822:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %823 = load ptr, ptr %78, align 8, !tbaa !5
  %824 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %823)
  store ptr %824, ptr %90, align 8, !tbaa !5
  br label %825

825:                                              ; preds = %848, %822
  %826 = load ptr, ptr %90, align 8, !tbaa !5
  %827 = load i8, ptr %89, align 1, !tbaa !9, !range !11, !noundef !12
  %828 = trunc i8 %827 to i1
  br i1 %828, label %830, label %829

829:                                              ; preds = %825
  store i32 158, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %850

830:                                              ; preds = %825
  br label %831

831:                                              ; preds = %830
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  %832 = load ptr, ptr %5, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %832)
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #8
  %833 = getelementptr inbounds %class.anon.540, ptr %93, i32 0, i32 0
  %834 = load ptr, ptr %76, align 8, !tbaa !5
  store ptr %834, ptr %833, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %92)
          to label %835 unwind label %838

835:                                              ; preds = %831
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  %836 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %836, ptr noundef @.str)
          to label %837 unwind label %842

837:                                              ; preds = %835
  call void @__cxa_throw(ptr %836, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
  unreachable

838:                                              ; preds = %831
  %839 = landingpad { ptr, i32 }
          cleanup
  %840 = extractvalue { ptr, i32 } %839, 0
  store ptr %840, ptr %25, align 8
  %841 = extractvalue { ptr, i32 } %839, 1
  store i32 %841, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %849

842:                                              ; preds = %835
  %843 = landingpad { ptr, i32 }
          cleanup
  %844 = extractvalue { ptr, i32 } %843, 0
  store ptr %844, ptr %25, align 8
  %845 = extractvalue { ptr, i32 } %843, 1
  store i32 %845, ptr %26, align 4
  call void @__cxa_free_exception(ptr %836) #8
  br label %849

846:                                              ; No predecessors!
  br label %847

847:                                              ; preds = %846
  br label %848

848:                                              ; preds = %847
  store i8 0, ptr %89, align 1, !tbaa !9
  br label %825, !llvm.loop !77

849:                                              ; preds = %842, %838
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #8
  br label %941

850:                                              ; preds = %829
  br label %851

851:                                              ; preds = %850
  store i8 0, ptr %89, align 1, !tbaa !9
  br label %818, !llvm.loop !78

852:                                              ; preds = %821
  br label %853

853:                                              ; preds = %852, %816, %788, %744, %720
  br label %854

854:                                              ; preds = %853
  store i8 0, ptr %77, align 1, !tbaa !9
  br label %716, !llvm.loop !79

855:                                              ; preds = %719
  br label %856

856:                                              ; preds = %855
  store i8 0, ptr %77, align 1, !tbaa !9
  br label %708, !llvm.loop !80

857:                                              ; preds = %711
  br label %858

858:                                              ; preds = %857
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %702, !llvm.loop !81

859:                                              ; preds = %706
  br label %860

860:                                              ; preds = %859
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %695, !llvm.loop !82

861:                                              ; preds = %698
  br label %937

862:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %94) #8
  store i8 1, ptr %94, align 1, !tbaa !9
  br label %863

863:                                              ; preds = %899, %862
  %864 = load i8, ptr %94, align 1, !tbaa !9, !range !11, !noundef !12
  %865 = trunc i8 %864 to i1
  br i1 %865, label %867, label %866

866:                                              ; preds = %863
  store i32 163, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %94) #8
  br label %900

867:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %868 = load ptr, ptr %9, align 8, !tbaa !5
  %869 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %868)
  store ptr %869, ptr %95, align 8, !tbaa !5
  br label %870

870:                                              ; preds = %897, %867
  %871 = load ptr, ptr %95, align 8, !tbaa !5
  %872 = load i8, ptr %94, align 1, !tbaa !9, !range !11, !noundef !12
  %873 = trunc i8 %872 to i1
  br i1 %873, label %875, label %874

874:                                              ; preds = %870
  store i32 166, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %898

875:                                              ; preds = %870
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #8
  %876 = load ptr, ptr %95, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %876, i32 0, i32 5
  store ptr %877, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %878 = load ptr, ptr %96, align 8, !tbaa !5
  %879 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %878) #8
  %880 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.539", ptr %97, i32 0, i32 0
  store ptr %879, ptr %880, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %881 = load ptr, ptr %96, align 8, !tbaa !5
  %882 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %881) #8
  %883 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.539", ptr %98, i32 0, i32 0
  store ptr %882, ptr %883, align 8
  br label %884

884:                                              ; preds = %891, %875
  %885 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br i1 %885, label %887, label %886

886:                                              ; preds = %884
  store i32 169, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #8
  br label %893

887:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %888 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  store ptr %888, ptr %99, align 8, !tbaa !5
  %889 = load ptr, ptr %5, align 8, !tbaa !5
  %890 = load ptr, ptr %99, align 8, !tbaa !5
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %889, ptr noundef nonnull align 8 dereferenceable(8) %890)
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  br label %891

891:                                              ; preds = %887
  %892 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #8
  br label %884

893:                                              ; preds = %886
  %894 = load ptr, ptr %5, align 8, !tbaa !5
  %895 = load ptr, ptr %95, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %895, i32 0, i32 4
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %104, ptr noundef nonnull align 8 dereferenceable(8) %894, ptr noundef nonnull align 8 dereferenceable(8) %896)
  br label %897

897:                                              ; preds = %893
  store i8 0, ptr %94, align 1, !tbaa !9
  br label %870, !llvm.loop !83

898:                                              ; preds = %874
  br label %899

899:                                              ; preds = %898
  store i8 0, ptr %94, align 1, !tbaa !9
  br label %863, !llvm.loop !84

900:                                              ; preds = %866
  br label %937

901:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #8
  store i8 1, ptr %100, align 1, !tbaa !9
  br label %902

902:                                              ; preds = %917, %901
  %903 = load i8, ptr %100, align 1, !tbaa !9, !range !11, !noundef !12
  %904 = trunc i8 %903 to i1
  br i1 %904, label %906, label %905

905:                                              ; preds = %902
  store i32 171, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #8
  br label %918

906:                                              ; preds = %902
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #8
  %907 = load ptr, ptr %9, align 8, !tbaa !5
  %908 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %907)
  store ptr %908, ptr %101, align 8, !tbaa !5
  br label %909

909:                                              ; preds = %915, %906
  %910 = load ptr, ptr %101, align 8, !tbaa !5
  %911 = load i8, ptr %100, align 1, !tbaa !9, !range !11, !noundef !12
  %912 = trunc i8 %911 to i1
  br i1 %912, label %914, label %913

913:                                              ; preds = %909
  store i32 174, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #8
  br label %916

914:                                              ; preds = %909
  br label %915

915:                                              ; preds = %914
  store i8 0, ptr %100, align 1, !tbaa !9
  br label %909, !llvm.loop !85

916:                                              ; preds = %913
  br label %917

917:                                              ; preds = %916
  store i8 0, ptr %100, align 1, !tbaa !9
  br label %902, !llvm.loop !86

918:                                              ; preds = %905
  br label %937

919:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #8
  store i8 1, ptr %102, align 1, !tbaa !9
  br label %920

920:                                              ; preds = %935, %919
  %921 = load i8, ptr %102, align 1, !tbaa !9, !range !11, !noundef !12
  %922 = trunc i8 %921 to i1
  br i1 %922, label %924, label %923

923:                                              ; preds = %920
  store i32 177, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #8
  br label %936

924:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #8
  %925 = load ptr, ptr %9, align 8, !tbaa !5
  %926 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %925)
  store ptr %926, ptr %103, align 8, !tbaa !5
  br label %927

927:                                              ; preds = %933, %924
  %928 = load ptr, ptr %103, align 8, !tbaa !5
  %929 = load i8, ptr %102, align 1, !tbaa !9, !range !11, !noundef !12
  %930 = trunc i8 %929 to i1
  br i1 %930, label %932, label %931

931:                                              ; preds = %927
  store i32 180, ptr %8, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #8
  br label %934

932:                                              ; preds = %927
  br label %933

933:                                              ; preds = %932
  store i8 0, ptr %102, align 1, !tbaa !9
  br label %927, !llvm.loop !87

934:                                              ; preds = %931
  br label %935

935:                                              ; preds = %934
  store i8 0, ptr %102, align 1, !tbaa !9
  br label %920, !llvm.loop !88

936:                                              ; preds = %923
  br label %937

937:                                              ; preds = %936, %918, %900, %861, %693, %672, %651, %616, %595, %549, %531, %491, %473, %173, %155, %137, %116
  br label %938

938:                                              ; preds = %937
  store i8 0, ptr %7, align 1, !tbaa !9
  br label %112, !llvm.loop !89

939:                                              ; preds = %471, %115
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  %940 = load i32, ptr %8, align 4
  switch i32 %940, label %944 [
    i32 5, label %942
  ]

941:                                              ; preds = %849, %592, %460
  call void @llvm.lifetime.end.p0(i64 8, ptr %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #8
  br label %947

942:                                              ; preds = %939
  br label %943

943:                                              ; preds = %942
  store i8 0, ptr %7, align 1, !tbaa !9
  br label %105, !llvm.loop !90

944:                                              ; preds = %939, %108
  call void @llvm.lifetime.end.p0(i64 1, ptr %7) #8
  %945 = load i32, ptr %8, align 4
  switch i32 %945, label %952 [
    i32 2, label %946
    i32 1, label %946
  ]

946:                                              ; preds = %944, %944
  ret void

947:                                              ; preds = %941
  %948 = load ptr, ptr %25, align 8
  %949 = load i32, ptr %26, align 4
  %950 = insertvalue { ptr, i32 } poison, ptr %948, 0
  %951 = insertvalue { ptr, i32 } %950, i32 %949, 1
  resume { ptr, i32 } %951

952:                                              ; preds = %944
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8)) #7 align 2

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

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

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

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

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

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

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

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

declare void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24)) #1

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

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

declare noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR4PathEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(88)) #6

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.535") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { 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 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

!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 = !{i8 0, i8 2}
!12 = !{}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = !{!21, !6, i64 0}
!21 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !22, i64 24, !31, i64 72, !37, i64 104, !37, i64 112, !37, i64 120, !37, i64 128, !37, i64 136, !37, i64 144, !37, i64 152, !37, i64 160, !37, i64 168, !37, i64 176, !37, i64 184, !37, i64 192, !37, i64 200, !37, i64 208}
!22 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !23, i64 0}
!23 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !24, i64 0}
!24 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !25, i64 0, !27, i64 8}
!25 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !26, i64 0}
!26 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!27 = !{!"_ZTSSt15_Rb_tree_header", !28, i64 0, !30, i64 32}
!28 = !{!"_ZTSSt18_Rb_tree_node_base", !29, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!29 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!30 = !{!"long", !7, i64 0}
!31 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !32, i64 0, !36, i64 24}
!32 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!37 = !{!"_ZTSN3HIR10SimplePathE", !38, i64 0}
!38 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!39 = !{!21, !6, i64 8}
!40 = !{!21, !6, i64 16}
!41 = distinct !{!41, !14}
!42 = distinct !{!42, !14}
!43 = distinct !{!43, !14}
!44 = distinct !{!44, !14}
!45 = !{!46, !46, i64 0}
!46 = !{!"int", !7, i64 0}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = distinct !{!81, !14}
!82 = distinct !{!82, !14}
!83 = distinct !{!83, !14}
!84 = distinct !{!84, !14}
!85 = distinct !{!85, !14}
!86 = distinct !{!86, !14}
!87 = distinct !{!87, !14}
!88 = distinct !{!88, !14}
!89 = distinct !{!89, !14}
!90 = distinct !{!90, !14}


; 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.HIR::TypeRef" = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.322 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.322 = type { i64, [8 x i8] }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"class.std::initializer_list" = type { ptr, i64 }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.std::_Rb_tree_iterator.529" = type { ptr }
%"struct.std::pair.535" = type { %"class.std::__cxx11::basic_string", %"class.HIR::TypeRef" }
%struct.Span = type { ptr }
%"class.std::function.0" = 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.537 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.538" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.539" = type { ptr }
%class.anon.540 = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE = external hidden unnamed_addr constant [93 x i8], align 1
@__FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE = external hidden unnamed_addr constant [30 x i8], align 1
@.str.53 = external hidden unnamed_addr constant [8 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

; Function Attrs: nounwind
declare void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #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 #1

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #7 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
.lr.ph960:
  %3 = alloca %"struct.HIR::SimplePath", align 8
  %4 = alloca %class.RcString, align 8
  %5 = alloca %"class.std::initializer_list", align 8
  %6 = alloca %"class.std::__cxx11::basic_string", align 8
  %7 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %8 = alloca %"struct.std::_Rb_tree_iterator.529", align 8
  %9 = alloca %"struct.std::_Rb_tree_iterator.529", align 8
  %10 = alloca %"class.HIR::TypeRef", align 8
  %11 = alloca %"struct.std::pair.535", align 8
  %12 = alloca %"class.HIR::TypeRef", align 8
  %13 = alloca %struct.Span, align 8
  %14 = alloca %"class.std::function.0", align 8
  %15 = alloca %class.anon.537, align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.538", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.538", align 8
  %18 = alloca %"struct.HIR::SimplePath", align 8
  %19 = alloca %class.RcString, align 8
  %20 = alloca %"class.std::initializer_list", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %23 = alloca %struct.Span, align 8
  %24 = alloca %"class.std::function.0", align 8
  %25 = alloca %class.anon.540, align 8
  %26 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.539", align 8
  br label %tailrecurse

tailrecurse:                                      ; preds = %.preheader355, %.preheader359, %.preheader361, %.lr.ph960
  %.tr981 = phi ptr [ %2, %.lr.ph960 ], [ %43, %.preheader361 ], [ %45, %.preheader359 ], [ %50, %.preheader355 ]
  %28 = getelementptr inbounds i8, ptr %0, i64 8
  %29 = getelementptr inbounds i8, ptr %5, i64 8
  %30 = getelementptr inbounds i8, ptr %0, i64 16
  %31 = getelementptr inbounds i8, ptr %0, i64 24
  %32 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %.tr981)
  %33 = tail call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  switch i32 %33, label %common.ret [
    i32 0, label %66
    i32 1, label %.preheader340
    i32 2, label %.preheader341
    i32 3, label %.preheader343
    i32 4, label %.lr.ph832
    i32 5, label %.preheader347
    i32 6, label %.preheader349
    i32 7, label %.preheader351
    i32 8, label %.preheader353
    i32 9, label %.preheader355
    i32 10, label %.preheader357
    i32 11, label %.preheader359
    i32 12, label %.preheader361
    i32 13, label %.lr.ph466
    i32 14, label %.preheader365
    i32 15, label %.preheader367
    i32 16, label %.preheader369
  ]

.preheader369:                                    ; preds = %tailrecurse
  %34 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader367:                                    ; preds = %tailrecurse
  %35 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader365:                                    ; preds = %tailrecurse
  %36 = tail call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %37 = getelementptr inbounds i8, ptr %36, i64 120
  %38 = getelementptr inbounds i8, ptr %36, i64 112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %39 = tail call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  store ptr %39, ptr %26, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %40 = tail call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %37) #8
  store ptr %40, ptr %27, align 8
  %41 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %41, label %.lr.ph, label %..loopexit337_crit_edge

.preheader361:                                    ; preds = %tailrecurse
  %42 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %43 = getelementptr inbounds i8, ptr %42, i64 8
  br label %tailrecurse

.preheader359:                                    ; preds = %tailrecurse
  %44 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %45 = getelementptr inbounds i8, ptr %44, i64 8
  br label %tailrecurse

.preheader357:                                    ; preds = %tailrecurse
  %46 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %47 = tail call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  store ptr %47, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %48 = tail call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %46) #8
  store ptr %48, ptr %22, align 8
  %49 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %49, label %.lr.ph524, label %..loopexit333_crit_edge

.preheader355:                                    ; preds = %tailrecurse
  %50 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %tailrecurse

.preheader353:                                    ; preds = %tailrecurse
  %51 = getelementptr inbounds i8, ptr %20, i64 8
  %52 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %53 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %53)
  call void @_ZNSt16initializer_listI8RcStringEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #8
  %54 = load ptr, ptr %20, align 8
  %55 = load i64, ptr %51, align 8
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt16initializer_listIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull %19, ptr %54, i64 %55)
          to label %160 unwind label %.split593.split

.preheader351:                                    ; preds = %tailrecurse
  %56 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader349:                                    ; preds = %tailrecurse
  %57 = tail call noundef nonnull align 8 dereferenceable(172) ptr @_ZN3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %58 = getelementptr inbounds i8, ptr %57, i64 144
  tail call void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %57)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %59 = tail call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  store ptr %59, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %60 = tail call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %58) #8
  store ptr %60, ptr %17, align 8
  %61 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %61, label %.lr.ph680, label %..loopexit329_crit_edge

.preheader347:                                    ; preds = %tailrecurse
  %62 = tail call noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader343:                                    ; preds = %tailrecurse
  %63 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader341:                                    ; preds = %tailrecurse
  %64 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

.preheader340:                                    ; preds = %tailrecurse
  %65 = tail call noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  br label %common.ret

66:                                               ; preds = %tailrecurse
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1515, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

.lr.ph832:                                        ; preds = %tailrecurse
  %67 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %68 = getelementptr inbounds i8, ptr %67, i64 88
  %69 = tail call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %67)
  switch i32 %69, label %common.ret [
    i32 0, label %80
    i32 1, label %.preheader
    i32 2, label %.preheader308
    i32 3, label %90
    i32 4, label %147
  ]

.preheader308:                                    ; preds = %.lr.ph832
  %70 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %67)
  %71 = getelementptr inbounds i8, ptr %70, i64 16
  %72 = getelementptr inbounds i8, ptr %70, i64 48
  tail call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %70)
  tail call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %71)
  %73 = tail call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %72)
  %74 = tail call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %72)
  %.not282757 = icmp eq ptr %73, %74
  br i1 %.not282757, label %common.ret, label %.lr.ph760

.preheader:                                       ; preds = %.lr.ph832
  %75 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %67)
  %76 = getelementptr inbounds i8, ptr %75, i64 8
  %77 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %3) #8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %77)
  call void @_ZNSt16initializer_listI8RcStringEC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %5) #8
  %78 = load ptr, ptr %5, align 8
  %79 = load i64, ptr %29, align 8
  invoke void @_ZN3HIR10SimplePathC2E8RcStringSt16initializer_listIS1_E(ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %4, ptr %78, i64 %79)
          to label %81 unwind label %.split783.split

80:                                               ; preds = %.lr.ph832
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1526, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

81:                                               ; preds = %.preheader
  %82 = load ptr, ptr %30, align 8, !tbaa !27
  %83 = load ptr, ptr %31, align 8, !tbaa !28
  %84 = invoke noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
          to label %85 unwind label %.split786.split

85:                                               ; preds = %81
  invoke void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(944) %77, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %82, ptr noundef %83, ptr noundef nonnull align 8 dereferenceable(96) %84, ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %..loopexit302_crit_edge unwind label %.split786.split

..loopexit302_crit_edge:                          ; preds = %85
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %76)
  br label %common.ret

.split783.split:                                  ; preds = %.preheader
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %88

.split786.split:                                  ; preds = %85, %81
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %3) #8
  br label %88

88:                                               ; preds = %.split786.split, %.split783.split
  %.pn283 = phi { ptr, i32 } [ %87, %.split786.split ], [ %86, %.split783.split ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %3) #8
  br label %194

.lr.ph760:                                        ; preds = %.preheader308, %.lr.ph760
  %.0246758 = phi ptr [ %89, %.lr.ph760 ], [ %73, %.preheader308 ]
  tail call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.0246758)
  %89 = getelementptr inbounds i8, ptr %.0246758, i64 8
  %.not282 = icmp eq ptr %89, %74
  br i1 %.not282, label %common.ret, label %.lr.ph760

90:                                               ; preds = %.lr.ph832
  %91 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %67)
  %92 = tail call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %68)
  br i1 %92, label %93, label %common.ret

93:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %6) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %7) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7)
  %94 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR4PathEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %7, ptr noundef nonnull align 8 dereferenceable(88) %67)
          to label %95 unwind label %118

95:                                               ; preds = %93
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %6, ptr noundef nonnull align 8 dereferenceable(112) %94)
          to label %96 unwind label %118

96:                                               ; preds = %95
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %7) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %97 = getelementptr inbounds i8, ptr %0, i64 376
  %98 = invoke ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE4findERSB_(ptr noundef nonnull align 8 dereferenceable(48) %97, ptr noundef nonnull align 8 dereferenceable(32) %6)
          to label %99 unwind label %120

99:                                               ; preds = %96
  store ptr %98, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %100 = call ptr @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %97) #8
  store ptr %100, ptr %9, align 8
  %101 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEESD_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  br i1 %101, label %102, label %129

102:                                              ; preds = %99
  %103 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %104 unwind label %120

104:                                              ; preds = %102
  br i1 %103, label %105, label %122

105:                                              ; preds = %104
  %106 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !29
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %106, ptr noundef nonnull @__FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE)
          to label %108 unwind label %120

108:                                              ; preds = %105
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull @.str.53)
          to label %110 unwind label %120

110:                                              ; preds = %108
  %111 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %112 = getelementptr inbounds i8, ptr %111, i64 32
  %113 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %114 unwind label %120

114:                                              ; preds = %110
  %115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %116 unwind label %120

116:                                              ; preds = %114
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %115, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %122 unwind label %120

118:                                              ; preds = %95, %93
  %119 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %7) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %7) #8
  br label %146

120:                                              ; preds = %129, %116, %114, %110, %108, %105, %102, %96
  %121 = landingpad { ptr, i32 }
          cleanup
  br label %145

122:                                              ; preds = %116, %104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %123 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %124 = getelementptr inbounds i8, ptr %123, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %10, ptr noundef nonnull align 8 dereferenceable(8) %124)
          to label %125 unwind label %127

125:                                              ; preds = %122
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %.tr981, ptr noundef nonnull align 8 dereferenceable(8) %10)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %144

127:                                              ; preds = %122
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %145

129:                                              ; preds = %99
  %130 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.tr981, i1 noundef zeroext true)
          to label %131 unwind label %120

131:                                              ; preds = %129
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %12, ptr noundef nonnull align 8 dereferenceable(8) %.tr981)
          to label %132 unwind label %136

132:                                              ; preds = %131
  invoke void @_ZSt9make_pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.535") align 8 %11, ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %133 unwind label %138

133:                                              ; preds = %132
  %134 = invoke { ptr, i8 } @_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE6insertISA_IS5_S7_EEENSt9enable_ifIXsr16is_constructibleISC_T_EE5valueESA_ISt17_Rb_tree_iteratorISC_EbEE4typeEOSI_(ptr noundef nonnull align 8 dereferenceable(48) %97, ptr noundef nonnull align 8 dereferenceable(40) %11)
          to label %135 unwind label %140

135:                                              ; preds = %133
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #8
  br label %144

136:                                              ; preds = %131
  %137 = landingpad { ptr, i32 }
          cleanup
  br label %143

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

140:                                              ; preds = %133
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %11) #8
  br label %142

142:                                              ; preds = %140, %138
  %.pn276 = phi { ptr, i32 } [ %141, %140 ], [ %139, %138 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %143

143:                                              ; preds = %142, %136
  %.pn276.pn = phi { ptr, i32 } [ %.pn276, %142 ], [ %137, %136 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %11) #8
  br label %145

144:                                              ; preds = %135, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %common.ret

145:                                              ; preds = %143, %127, %120
  %.pn279 = phi { ptr, i32 } [ %128, %127 ], [ %121, %120 ], [ %.pn276.pn, %143 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  br label %146

146:                                              ; preds = %145, %118
  %.pn279.pn = phi { ptr, i32 } [ %.pn279, %145 ], [ %119, %118 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %6) #8
  br label %194

147:                                              ; preds = %.lr.ph832
  %148 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %67)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  store ptr %67, ptr %15, align 8, !tbaa !31
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull %14)
          to label %149 unwind label %152

149:                                              ; preds = %147
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %150 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %150, ptr noundef nonnull @.str)
          to label %151 unwind label %154

151:                                              ; preds = %149
  call void @__cxa_throw(ptr nonnull %150, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

152:                                              ; preds = %147
  %153 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %194

154:                                              ; preds = %149
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %150) #8
  br label %194

..loopexit329_crit_edge:                          ; preds = %.lr.ph680, %.preheader349
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %common.ret

.lr.ph680:                                        ; preds = %.preheader349, %.lr.ph680
  %156 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %157 = getelementptr inbounds i8, ptr %156, i64 8
  call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %157)
  %158 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %159 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %159, label %.lr.ph680, label %..loopexit329_crit_edge

160:                                              ; preds = %.preheader353
  %161 = getelementptr inbounds i8, ptr %52, i64 8
  invoke void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(944) %53, ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(32) %161)
          to label %..loopexit331_crit_edge unwind label %.split595.split

..loopexit331_crit_edge:                          ; preds = %160
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %52)
  br label %common.ret

.split593.split:                                  ; preds = %.preheader353
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %164

.split595.split:                                  ; preds = %160
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %164

164:                                              ; preds = %.split595.split, %.split593.split
  %.pn272 = phi { ptr, i32 } [ %163, %.split595.split ], [ %162, %.split593.split ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %194

..loopexit333_crit_edge:                          ; preds = %.lr.ph524, %.preheader357
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %common.ret

.lr.ph524:                                        ; preds = %.preheader357, %.lr.ph524
  %165 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %165)
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %167 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %167, label %.lr.ph524, label %..loopexit333_crit_edge

.lr.ph466:                                        ; preds = %tailrecurse
  %168 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %32)
  %169 = tail call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  switch i32 %169, label %common.ret [
    i32 0, label %180
    i32 1, label %.preheader310
    i32 2, label %.preheader312
    i32 3, label %.preheader314
    i32 4, label %182
  ]

common.ret:                                       ; preds = %90, %144, %.preheader369, %.preheader367, %.preheader351, %.preheader347, %.preheader343, %.preheader341, %.preheader340, %tailrecurse, %..loopexit329_crit_edge, %..loopexit331_crit_edge, %..loopexit333_crit_edge, %..loopexit337_crit_edge, %.lr.ph832, %..loopexit302_crit_edge, %.preheader308, %.lr.ph466, %.preheader310, %.preheader312, %.lr.ph760, %.lr.ph435, %.preheader314
  ret void

.preheader314:                                    ; preds = %.lr.ph466
  %170 = tail call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  %171 = getelementptr inbounds i8, ptr %170, i64 16
  %172 = getelementptr inbounds i8, ptr %170, i64 48
  tail call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %170)
  tail call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %171)
  tail call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %172)
  br label %common.ret

.preheader312:                                    ; preds = %.lr.ph466
  %173 = tail call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  %174 = getelementptr inbounds i8, ptr %173, i64 16
  %175 = getelementptr inbounds i8, ptr %173, i64 48
  tail call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %173)
  tail call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %174)
  %176 = tail call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %175)
  %177 = tail call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %175)
  %.not432 = icmp eq ptr %176, %177
  br i1 %.not432, label %common.ret, label %.lr.ph435

.preheader310:                                    ; preds = %.lr.ph466
  %178 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  %179 = getelementptr inbounds i8, ptr %178, i64 8
  tail call void @_ZNK18StaticTraitResolve30expand_associated_types_paramsERK4SpanRN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %179)
  br label %common.ret

180:                                              ; preds = %.lr.ph466
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1590, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE) #9
  unreachable

.lr.ph435:                                        ; preds = %.preheader312, %.lr.ph435
  %.0231433 = phi ptr [ %181, %.lr.ph435 ], [ %176, %.preheader312 ]
  tail call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.0231433)
  %181 = getelementptr inbounds i8, ptr %.0231433, i64 8
  %.not = icmp eq ptr %181, %177
  br i1 %.not, label %common.ret, label %.lr.ph435

182:                                              ; preds = %.lr.ph466
  %183 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %168)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  store ptr %168, ptr %25, align 8, !tbaa !31
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %24)
          to label %184 unwind label %187

184:                                              ; preds = %182
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  %185 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %185, ptr noundef nonnull @.str)
          to label %186 unwind label %189

186:                                              ; preds = %184
  call void @__cxa_throw(ptr nonnull %185, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

187:                                              ; preds = %182
  %188 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %194

189:                                              ; preds = %184
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %185) #8
  br label %194

..loopexit337_crit_edge:                          ; preds = %.lr.ph, %.preheader365
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %38)
  br label %common.ret

.lr.ph:                                           ; preds = %.preheader365, %.lr.ph
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %191)
  %192 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  %193 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br i1 %193, label %.lr.ph, label %..loopexit337_crit_edge

194:                                              ; preds = %187, %189, %88, %146, %154, %152, %164
  %.pn.pn = phi { ptr, i32 } [ %.pn272, %164 ], [ %.pn279.pn, %146 ], [ %.pn283, %88 ], [ %155, %154 ], [ %153, %152 ], [ %190, %189 ], [ %188, %187 ]
  resume { ptr, i32 } %.pn.pn
}

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

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

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

declare noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEN3HIR4PathEEOT_S9_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #6

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.535") align 8, ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #7

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

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

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

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

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

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

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

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

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

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

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

declare void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { 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 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

!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, !7, i64 0}
!6 = !{!"_ZTS18TraitResolveCommon", !7, i64 0, !7, i64 8, !7, i64 16, !10, i64 24, !19, i64 72, !25, i64 104, !25, i64 112, !25, i64 120, !25, i64 128, !25, i64 136, !25, i64 144, !25, i64 152, !25, i64 160, !25, i64 168, !25, i64 176, !25, i64 184, !25, i64 192, !25, i64 200, !25, i64 208}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !11, i64 0}
!11 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !12, i64 0}
!12 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !13, i64 0, !15, i64 8}
!13 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !14, i64 0}
!14 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!15 = !{!"_ZTSSt15_Rb_tree_header", !16, i64 0, !18, i64 32}
!16 = !{!"_ZTSSt18_Rb_tree_node_base", !17, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!17 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!18 = !{!"long", !8, i64 0}
!19 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !20, i64 0, !24, i64 24}
!20 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!24 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!25 = !{!"_ZTSN3HIR10SimplePathE", !26, i64 0}
!26 = !{!"_ZTS10ThinVectorI8RcStringE", !7, i64 0}
!27 = !{!6, !7, i64 8}
!28 = !{!6, !7, i64 16}
!29 = !{!30, !30, i64 0}
!30 = !{!"int", !8, i64 0}
!31 = !{!7, !7, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass