; 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 }
%"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.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"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.643 = type { ptr, ptr }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::span" = type { ptr, i64 }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumValue" = type { ptr, i64 }
%struct.Span = type { ptr }
%class.anon.660 = type { i8 }
%class.anon.662 = type { ptr, ptr }
%"struct.StaticTraitResolve::ValuePtr::Data_StructConstructor" = type { ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.StaticTraitResolve::ValuePtr::Data_NotYetKnown" = type { i8 }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"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::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.663 = type { ptr, ptr, ptr, ptr }
%class.anon.664 = type { ptr, ptr }
%class.anon.665 = type { i8 }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"class.std::function.667" = type { %"class.std::_Function_base", ptr }
%class.anon.670 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.671 = type { 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" }
%class.RcString = 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" }
%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::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.81", [8 x i8] }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.91" }
%"class.std::map.91" = type { %"class.std::_Rb_tree.92" }
%"class.std::_Rb_tree.92" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::Enum::DataVariant" = type { %class.RcString, i8, %"class.HIR::TypeRef" }
%"struct.HIR::ValueItem::Data_StructConstructor" = type { %"struct.HIR::SimplePath" }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.252" }
%"class.std::vector.252" = type { %"struct.std::_Vector_base.253" }
%"struct.std::_Vector_base.253" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.57", i8, %"class.std::unordered_map.339", %"class.std::unordered_map.353", %"class.std::unordered_multimap", %"class.std::unordered_map.380", i32, %"class.std::vector.57", %"struct.HIR::SimplePath" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::unordered_map.339" = type { %"class.std::_Hashtable.340" }
%"class.std::_Hashtable.340" = 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.353" = type { %"class.std::_Hashtable.354" }
%"class.std::_Hashtable.354" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.367" }
%"class.std::_Hashtable.367" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.380" = type { %"class.std::_Hashtable.381" }
%"class.std::_Hashtable.381" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Constant" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %struct.EncodedLiteral, i32, %"class.std::map.654" }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.75", %"class.std::vector.75", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { 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 }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%struct.EncodedLiteral = type { %"class.std::vector.644", %"class.std::vector.649" }
%"class.std::vector.644" = type { %"struct.std::_Vector_base.645" }
%"struct.std::_Vector_base.645" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned char, std::allocator<unsigned char>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.649" = type { %"struct.std::_Vector_base.650" }
%"struct.std::_Vector_base.650" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl" = type { %"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" }
%"struct.std::_Vector_base<Reloc, std::allocator<Reloc>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map.654" = type { %"class.std::_Rb_tree.655" }
%"class.std::_Rb_tree.655" = type { %"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::Path, std::pair<const HIR::Path, EncodedLiteral>, std::_Select1st<std::pair<const HIR::Path, EncodedLiteral>>, std::less<HIR::Path>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.266", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.322 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.322 = type { i64, [8 x i8] }
%"class.std::vector.266" = type { %"struct.std::_Vector_base.267" }
%"struct.std::_Vector_base.267" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.279", i8, i32 }
%"class.std::vector.279" = type { %"struct.std::_Vector_base.280" }
%"struct.std::_Vector_base.280" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.ImplRef::Data::Data_TraitImpl" = type { %"struct.HIR::PathParams", ptr, ptr, ptr, %"class.HIR::TypeRef" }
%"class.HIR::TraitImpl" = type { %"class.HIR::GenericParams", %"struct.HIR::PathParams", %"class.HIR::TypeRef", %"class.std::map.481", %"class.std::map.486", %"class.std::map.491", %"class.std::map.496", %"struct.HIR::SimplePath" }
%"class.std::map.481" = type { %"class.std::_Rb_tree.482" }
%"class.std::_Rb_tree.482" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Function>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.486" = type { %"class.std::_Rb_tree.487" }
%"class.std::_Rb_tree.487" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Constant>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.491" = type { %"class.std::_Rb_tree.492" }
%"class.std::_Rb_tree.492" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::Static>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.496" = type { %"class.std::_Rb_tree.497" }
%"class.std::_Rb_tree.497" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>, std::_Select1st<std::pair<const RcString, HIR::TraitImpl::ImplEnt<HIR::TypeRef>>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::Path::Data::Data_UfcsInherent" = type { %"class.HIR::TypeRef", %class.RcString, %"struct.HIR::PathParams", %"struct.HIR::PathParams" }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.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
@.str.74 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE = external hidden unnamed_addr constant [10 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE = external hidden unnamed_addr constant [153 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [52 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8) #6 align 2

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind noalias writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(424) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(144) %4, i1 noundef zeroext %5, ptr noundef %6) #0 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca %class.TraceLog, align 8
  %16 = alloca %"class.std::function.0", align 8
  %17 = alloca %class.anon.643, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca %struct.MonomorphState, align 8
  %21 = alloca i8, align 1
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::span", align 8
  %25 = alloca ptr, align 8
  %26 = alloca ptr, align 8
  %27 = alloca i64, align 8
  %28 = alloca %"class.std::span", align 8
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor", align 8
  %31 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_EnumValue", align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::function.0", align 8
  %36 = alloca %class.anon.660, align 1
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %struct.Span, align 8
  %43 = alloca %"class.std::function.0", align 8
  %44 = alloca %class.anon.662, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_StructConstructor", align 8
  %48 = alloca i8, align 1
  %49 = alloca ptr, align 8
  %50 = alloca %"struct.HIR::SimplePath", align 8
  %51 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_NotYetKnown", align 1
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca ptr, align 8
  %54 = alloca ptr, align 8
  %55 = alloca ptr, align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i8, align 1
  %59 = alloca %struct.ImplRef, align 8
  %60 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %61 = alloca %"class.std::function", align 8
  %62 = alloca %class.anon.663, align 8
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca i8, align 1
  %66 = alloca ptr, align 8
  %67 = alloca i8, align 1
  %68 = alloca ptr, align 8
  %69 = alloca i8, align 1
  %70 = alloca ptr, align 8
  %71 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_NotYetKnown", align 1
  %72 = alloca %"struct.StaticTraitResolve::ValuePtr::Data_NotYetKnown", align 1
  %73 = alloca ptr, align 8
  %74 = alloca %struct.Span, align 8
  %75 = alloca %"class.std::function.0", align 8
  %76 = alloca %class.anon.664, align 8
  %77 = alloca ptr, align 8
  %78 = alloca %"struct.HIR::PathParams", align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::function.0", align 8
  %81 = alloca %class.anon.665, align 1
  %82 = alloca i8, align 1
  %83 = alloca ptr, align 8
  %84 = alloca %"class.HIR::TypeRef", align 8
  %85 = alloca i1, align 1
  %86 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %87 = alloca %"class.std::function.667", align 8
  %88 = alloca %class.anon.670, 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.671, align 8
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  %94 = zext i1 %5 to i8
  store i8 %94, ptr %13, align 1, !tbaa !9
  store ptr %6, ptr %14, align 8, !tbaa !5
  %95 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %15) #9
  %96 = call noundef zeroext i1 @_Z13debug_enabledv()
  %97 = zext i1 %96 to i64
  %98 = select i1 %96, ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %17) #9
  %99 = getelementptr inbounds %class.anon.643, ptr %17, i32 0, i32 0
  %100 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %100, ptr %99, align 8, !tbaa !5
  %101 = getelementptr inbounds %class.anon.643, ptr %17, i32 0, i32 1
  store ptr %13, ptr %101, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %98, ptr noundef %16)
          to label %102 unwind label %111

102:                                              ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  call void @llvm.lifetime.start.p0(i64 144, ptr %20) #9
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %103 unwind label %115

103:                                              ; preds = %102
  %104 = load ptr, ptr %12, align 8, !tbaa !5
  %105 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN14MonomorphStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(144) %104, ptr noundef nonnull align 8 dereferenceable(144) %20)
          to label %106 unwind label %119

106:                                              ; preds = %103
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %20) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr %20) #9
  %107 = load ptr, ptr %11, align 8, !tbaa !5
  %108 = getelementptr inbounds %"class.HIR::Path", ptr %107, i32 0, i32 0
  %109 = invoke noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %108)
          to label %110 unwind label %124

110:                                              ; preds = %106
  switch i32 %109, label %1198 [
    i32 0, label %128
    i32 1, label %129
    i32 3, label %467
    i32 2, label %1066
    i32 4, label %1150
  ]

111:                                              ; preds = %7
  %112 = landingpad { ptr, i32 }
          cleanup
  %113 = extractvalue { ptr, i32 } %112, 0
  store ptr %113, ptr %18, align 8
  %114 = extractvalue { ptr, i32 } %112, 1
  store i32 %114, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %17) #9
  br label %1202

115:                                              ; preds = %102
  %116 = landingpad { ptr, i32 }
          cleanup
  %117 = extractvalue { ptr, i32 } %116, 0
  store ptr %117, ptr %18, align 8
  %118 = extractvalue { ptr, i32 } %116, 1
  store i32 %118, ptr %19, align 4
  br label %123

119:                                              ; preds = %103
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %18, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %19, align 4
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %20) #9
  br label %123

123:                                              ; preds = %119, %115
  call void @llvm.lifetime.end.p0(i64 144, ptr %20) #9
  br label %1201

124:                                              ; preds = %1198, %106
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %18, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %19, align 4
  br label %1201

128:                                              ; preds = %110
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 3158, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #10
  unreachable

129:                                              ; preds = %110
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #9
  store i8 1, ptr %21, align 1, !tbaa !9
  br label %130

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

133:                                              ; preds = %130
  store i32 3, ptr %22, align 4
  br label %464

134:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %135 = load ptr, ptr %11, align 8, !tbaa !5
  %136 = getelementptr inbounds %"class.HIR::Path", ptr %135, i32 0, i32 0
  %137 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %136)
          to label %138 unwind label %144

138:                                              ; preds = %134
  store ptr %137, ptr %23, align 8, !tbaa !5
  br label %139

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

143:                                              ; preds = %139
  store i32 6, ptr %22, align 4
  br label %459

144:                                              ; preds = %134
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %18, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %19, align 4
  br label %461

148:                                              ; preds = %139
  call void @llvm.lifetime.start.p0(i64 16, ptr %24) #9
  %149 = load ptr, ptr %23, align 8, !tbaa !5
  %150 = getelementptr inbounds %"class.HIR::GenericPath", ptr %149, i32 0, i32 0
  %151 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %152 unwind label %181

152:                                              ; preds = %148
  %153 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 0
  %154 = extractvalue { ptr, i64 } %151, 0
  store ptr %154, ptr %153, align 8
  %155 = getelementptr inbounds { ptr, i64 }, ptr %24, i32 0, i32 1
  %156 = extractvalue { ptr, i64 } %151, 1
  store i64 %156, ptr %155, align 8
  %157 = invoke noundef i64 @_ZNKSt4spanIK8RcStringE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %24)
          to label %158 unwind label %181

158:                                              ; preds = %152
  %159 = icmp ugt i64 %157, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br i1 %159, label %160, label %275

160:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %161 = getelementptr inbounds i8, ptr %95, i64 8
  %162 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 0
  %163 = load ptr, ptr %162, align 8, !tbaa !13
  %164 = load ptr, ptr %10, align 8, !tbaa !5
  %165 = load ptr, ptr %23, align 8, !tbaa !5
  %166 = getelementptr inbounds %"class.HIR::GenericPath", ptr %165, i32 0, i32 0
  %167 = invoke noundef nonnull align 8 dereferenceable(408) ptr @_ZNK3HIR5Crate20get_typeitem_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944) %163, ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull align 8 dereferenceable(8) %166, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %168 unwind label %185

168:                                              ; preds = %160
  store ptr %167, ptr %25, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #9
  %169 = load ptr, ptr %25, align 8, !tbaa !5
  %170 = invoke noundef ptr @_ZNK3HIR8TypeItem8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(408) %169)
          to label %171 unwind label %189

171:                                              ; preds = %168
  store ptr %170, ptr %26, align 8, !tbaa !5
  %172 = load ptr, ptr %26, align 8, !tbaa !5
  %173 = icmp ne ptr %172, null
  br i1 %173, label %174, label %266

174:                                              ; preds = %171
  %175 = load ptr, ptr %14, align 8, !tbaa !5
  %176 = icmp ne ptr %175, null
  br i1 %176, label %177, label %193

177:                                              ; preds = %174
  %178 = load ptr, ptr %26, align 8, !tbaa !5
  %179 = getelementptr inbounds %"class.HIR::Enum", ptr %178, i32 0, i32 0
  %180 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %179, ptr %180, align 8, !tbaa !5
  br label %193

181:                                              ; preds = %152, %148
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %18, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %24) #9
  br label %461

185:                                              ; preds = %160
  %186 = landingpad { ptr, i32 }
          cleanup
  %187 = extractvalue { ptr, i32 } %186, 0
  store ptr %187, ptr %18, align 8
  %188 = extractvalue { ptr, i32 } %186, 1
  store i32 %188, ptr %19, align 4
  br label %274

189:                                              ; preds = %168
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %18, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %19, align 4
  br label %273

193:                                              ; preds = %177, %174
  %194 = load ptr, ptr %23, align 8, !tbaa !5
  %195 = getelementptr inbounds %"class.HIR::GenericPath", ptr %194, i32 0, i32 1
  %196 = load ptr, ptr %12, align 8, !tbaa !5
  %197 = getelementptr inbounds %struct.MonomorphState, ptr %196, i32 0, i32 2
  store ptr %195, ptr %197, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %198 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %28) #9
  %199 = load ptr, ptr %23, align 8, !tbaa !5
  %200 = getelementptr inbounds %"class.HIR::GenericPath", ptr %199, i32 0, i32 0
  %201 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %200)
          to label %202 unwind label %236

202:                                              ; preds = %193
  %203 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 0
  %204 = extractvalue { ptr, i64 } %201, 0
  store ptr %204, ptr %203, align 8
  %205 = getelementptr inbounds { ptr, i64 }, ptr %28, i32 0, i32 1
  %206 = extractvalue { ptr, i64 } %201, 1
  store i64 %206, ptr %205, align 8
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %208 unwind label %236

208:                                              ; preds = %202
  %209 = invoke noundef i64 @_ZNK3HIR4Enum12find_variantERK8RcString(ptr noundef nonnull align 8 dereferenceable(200) %198, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %210 unwind label %236

210:                                              ; preds = %208
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  store i64 %209, ptr %27, align 8, !tbaa !46
  %211 = load ptr, ptr %26, align 8, !tbaa !5
  %212 = getelementptr inbounds %"class.HIR::Enum", ptr %211, i32 0, i32 3
  %213 = invoke noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %212)
          to label %214 unwind label %240

214:                                              ; preds = %210
  br i1 %213, label %215, label %254

215:                                              ; preds = %214
  %216 = load ptr, ptr %26, align 8, !tbaa !5
  %217 = getelementptr inbounds %"class.HIR::Enum", ptr %216, i32 0, i32 3
  %218 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %217)
          to label %219 unwind label %240

219:                                              ; preds = %215
  %220 = load i64, ptr %27, align 8, !tbaa !46
  %221 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %218, i64 noundef %220) #9
  %222 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %221, i32 0, i32 2
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %29)
          to label %223 unwind label %244

223:                                              ; preds = %219
  %224 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %225 unwind label %248

225:                                              ; preds = %223
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br i1 %224, label %226, label %253

226:                                              ; preds = %225
  %227 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor", ptr %30, i32 0, i32 0
  %228 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %228, ptr %227, align 8, !tbaa !47
  %229 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor", ptr %30, i32 0, i32 1
  %230 = load i64, ptr %27, align 8, !tbaa !46
  store i64 %230, ptr %229, align 8, !tbaa !49
  %231 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 0
  %232 = load ptr, ptr %231, align 8
  %233 = getelementptr inbounds { ptr, i64 }, ptr %30, i32 0, i32 1
  %234 = load i64, ptr %233, align 8
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_20Data_EnumConstructorE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %232, i64 %234)
          to label %235 unwind label %240

235:                                              ; preds = %226
  store i32 1, ptr %22, align 4
  br label %264

236:                                              ; preds = %208, %202, %193
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %18, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %28) #9
  br label %265

240:                                              ; preds = %254, %226, %215, %210
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %18, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %19, align 4
  br label %265

244:                                              ; preds = %219
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %18, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %19, align 4
  br label %252

248:                                              ; preds = %223
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %18, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %252

252:                                              ; preds = %248, %244
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %265

253:                                              ; preds = %225
  br label %254

254:                                              ; preds = %253, %214
  %255 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_EnumValue", ptr %31, i32 0, i32 0
  %256 = load ptr, ptr %26, align 8, !tbaa !5
  store ptr %256, ptr %255, align 8, !tbaa !50
  %257 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_EnumValue", ptr %31, i32 0, i32 1
  %258 = load i64, ptr %27, align 8, !tbaa !46
  store i64 %258, ptr %257, align 8, !tbaa !52
  %259 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 0
  %260 = load ptr, ptr %259, align 8
  %261 = getelementptr inbounds { ptr, i64 }, ptr %31, i32 0, i32 1
  %262 = load i64, ptr %261, align 8
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_14Data_EnumValueE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %260, i64 %262)
          to label %263 unwind label %240

263:                                              ; preds = %254
  store i32 1, ptr %22, align 4
  br label %264

264:                                              ; preds = %263, %235
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %267

265:                                              ; preds = %252, %240, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %273

266:                                              ; preds = %171
  store i32 0, ptr %22, align 4
  br label %267

267:                                              ; preds = %266, %264
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  %268 = load i32, ptr %22, align 4
  switch i32 %268, label %270 [
    i32 0, label %269
  ]

269:                                              ; preds = %267
  store i32 0, ptr %22, align 4
  br label %270

270:                                              ; preds = %269, %267
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  %271 = load i32, ptr %22, align 4
  switch i32 %271, label %459 [
    i32 0, label %272
  ]

272:                                              ; preds = %270
  br label %275

273:                                              ; preds = %265, %189
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #9
  br label %274

274:                                              ; preds = %273, %185
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %461

275:                                              ; preds = %272, %158
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %276 = getelementptr inbounds i8, ptr %95, i64 8
  %277 = getelementptr inbounds %struct.TraitResolveCommon, ptr %276, i32 0, i32 0
  %278 = load ptr, ptr %277, align 8, !tbaa !13
  %279 = load ptr, ptr %10, align 8, !tbaa !5
  %280 = load ptr, ptr %23, align 8, !tbaa !5
  %281 = getelementptr inbounds %"class.HIR::GenericPath", ptr %280, i32 0, i32 0
  %282 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3HIR5Crate19get_valitem_by_pathERK4SpanRKNS_10SimplePathEb(ptr noundef nonnull align 8 dereferenceable(944) %278, ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %281, i1 noundef zeroext false)
          to label %283 unwind label %287

283:                                              ; preds = %275
  store ptr %282, ptr %32, align 8, !tbaa !5
  %284 = load ptr, ptr %32, align 8, !tbaa !5
  %285 = invoke noundef i32 @_ZNK3HIR9ValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %284)
          to label %286 unwind label %287

286:                                              ; preds = %283
  switch i32 %285, label %454 [
    i32 0, label %291
    i32 1, label %292
    i32 2, label %323
    i32 3, label %338
    i32 5, label %353
    i32 4, label %368
    i32 6, label %411
  ]

287:                                              ; preds = %454, %283, %275
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %18, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %19, align 4
  br label %457

291:                                              ; preds = %286
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 3207, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #10
  unreachable

292:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %293 = load ptr, ptr %32, align 8, !tbaa !5
  %294 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR9ValueItem9as_ImportEv(ptr noundef nonnull align 8 dereferenceable(368) %293)
          to label %295 unwind label %303

295:                                              ; preds = %292
  store ptr %294, ptr %33, align 8, !tbaa !5
  %296 = load ptr, ptr %33, align 8, !tbaa !5
  br label %297

297:                                              ; preds = %295
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #9
  %298 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %299 unwind label %307

299:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 1 dereferenceable(1) %36) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef %35)
          to label %300 unwind label %311

300:                                              ; preds = %299
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  %301 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %301, ptr noundef @.str)
          to label %302 unwind label %316

302:                                              ; preds = %300
  invoke void @__cxa_throw(ptr %301, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1208 unwind label %303

303:                                              ; preds = %302, %292
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %18, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %19, align 4
  br label %322

307:                                              ; preds = %297
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %18, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %19, align 4
  br label %315

311:                                              ; preds = %299
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %18, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  br label %315

315:                                              ; preds = %311, %307
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #9
  br label %322

316:                                              ; preds = %300
  %317 = landingpad { ptr, i32 }
          cleanup
  %318 = extractvalue { ptr, i32 } %317, 0
  store ptr %318, ptr %18, align 8
  %319 = extractvalue { ptr, i32 } %317, 1
  store i32 %319, ptr %19, align 4
  call void @__cxa_free_exception(ptr %301) #9
  br label %322

320:                                              ; No predecessors!
  br label %321

321:                                              ; preds = %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %454

322:                                              ; preds = %316, %315, %303
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %457

323:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %324 = load ptr, ptr %32, align 8, !tbaa !5
  %325 = invoke noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR9ValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %324)
          to label %326 unwind label %334

326:                                              ; preds = %323
  store ptr %325, ptr %37, align 8, !tbaa !5
  %327 = load ptr, ptr %37, align 8, !tbaa !5
  %328 = load ptr, ptr %23, align 8, !tbaa !5
  %329 = getelementptr inbounds %"class.HIR::GenericPath", ptr %328, i32 0, i32 1
  %330 = load ptr, ptr %12, align 8, !tbaa !5
  %331 = getelementptr inbounds %struct.MonomorphState, ptr %330, i32 0, i32 3
  store ptr %329, ptr %331, align 8, !tbaa !53
  %332 = load ptr, ptr %37, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %332)
          to label %333 unwind label %334

333:                                              ; preds = %326
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %456

334:                                              ; preds = %326, %323
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %18, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  br label %457

338:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %339 = load ptr, ptr %32, align 8, !tbaa !5
  %340 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR9ValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %339)
          to label %341 unwind label %349

341:                                              ; preds = %338
  store ptr %340, ptr %38, align 8, !tbaa !5
  %342 = load ptr, ptr %38, align 8, !tbaa !5
  %343 = load ptr, ptr %23, align 8, !tbaa !5
  %344 = getelementptr inbounds %"class.HIR::GenericPath", ptr %343, i32 0, i32 1
  %345 = load ptr, ptr %12, align 8, !tbaa !5
  %346 = getelementptr inbounds %struct.MonomorphState, ptr %345, i32 0, i32 3
  store ptr %344, ptr %346, align 8, !tbaa !53
  %347 = load ptr, ptr %38, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR6StaticE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %347)
          to label %348 unwind label %349

348:                                              ; preds = %341
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %456

349:                                              ; preds = %341, %338
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %18, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %457

353:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %354 = load ptr, ptr %32, align 8, !tbaa !5
  %355 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR9ValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %354)
          to label %356 unwind label %364

356:                                              ; preds = %353
  store ptr %355, ptr %39, align 8, !tbaa !5
  %357 = load ptr, ptr %39, align 8, !tbaa !5
  %358 = load ptr, ptr %23, align 8, !tbaa !5
  %359 = getelementptr inbounds %"class.HIR::GenericPath", ptr %358, i32 0, i32 1
  %360 = load ptr, ptr %12, align 8, !tbaa !5
  %361 = getelementptr inbounds %struct.MonomorphState, ptr %360, i32 0, i32 3
  store ptr %359, ptr %361, align 8, !tbaa !53
  %362 = load ptr, ptr %39, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %362)
          to label %363 unwind label %364

363:                                              ; preds = %356
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %456

364:                                              ; preds = %356, %353
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %18, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %457

368:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %369 = load ptr, ptr %32, align 8, !tbaa !5
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ValueItem17as_StructConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %369)
          to label %371 unwind label %386

371:                                              ; preds = %368
  store ptr %370, ptr %40, align 8, !tbaa !5
  %372 = load ptr, ptr %40, align 8, !tbaa !5
  %373 = load ptr, ptr %23, align 8, !tbaa !5
  %374 = getelementptr inbounds %"class.HIR::GenericPath", ptr %373, i32 0, i32 1
  %375 = load ptr, ptr %12, align 8, !tbaa !5
  %376 = getelementptr inbounds %struct.MonomorphState, ptr %375, i32 0, i32 2
  store ptr %374, ptr %376, align 8, !tbaa !32
  br label %377

377:                                              ; preds = %371
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  store ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %378 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %378)
          to label %379 unwind label %390

379:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #9
  %380 = getelementptr inbounds %class.anon.662, ptr %44, i32 0, i32 0
  store ptr %41, ptr %380, align 8, !tbaa !5
  %381 = getelementptr inbounds %class.anon.662, ptr %44, i32 0, i32 1
  %382 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %382, ptr %381, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(16) %44) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef %43)
          to label %383 unwind label %394

383:                                              ; preds = %379
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  %384 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %384, ptr noundef @.str.3)
          to label %385 unwind label %399

385:                                              ; preds = %383
  invoke void @__cxa_throw(ptr %384, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1208 unwind label %403

386:                                              ; preds = %368
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %18, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %19, align 4
  br label %410

390:                                              ; preds = %377
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %18, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %19, align 4
  br label %398

394:                                              ; preds = %379
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %18, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %398

398:                                              ; preds = %394, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %407

399:                                              ; preds = %383
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %18, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %19, align 4
  call void @__cxa_free_exception(ptr %384) #9
  br label %407

403:                                              ; preds = %385
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %18, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %19, align 4
  br label %407

407:                                              ; preds = %403, %399, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  br label %410

408:                                              ; No predecessors!
  br label %409

409:                                              ; preds = %408
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  br label %454

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

411:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %412 = load ptr, ptr %32, align 8, !tbaa !5
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ValueItem20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(368) %412)
          to label %414 unwind label %434

414:                                              ; preds = %411
  store ptr %413, ptr %45, align 8, !tbaa !5
  %415 = load ptr, ptr %45, align 8, !tbaa !5
  %416 = load ptr, ptr %23, align 8, !tbaa !5
  %417 = getelementptr inbounds %"class.HIR::GenericPath", ptr %416, i32 0, i32 1
  %418 = load ptr, ptr %12, align 8, !tbaa !5
  %419 = getelementptr inbounds %struct.MonomorphState, ptr %418, i32 0, i32 2
  store ptr %417, ptr %419, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %420 = getelementptr inbounds i8, ptr %95, i64 8
  %421 = getelementptr inbounds %struct.TraitResolveCommon, ptr %420, i32 0, i32 0
  %422 = load ptr, ptr %421, align 8, !tbaa !13
  %423 = load ptr, ptr %10, align 8, !tbaa !5
  %424 = load ptr, ptr %45, align 8, !tbaa !5
  %425 = getelementptr inbounds %"struct.HIR::ValueItem::Data_StructConstructor", ptr %424, i32 0, i32 0
  %426 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %422, ptr noundef nonnull align 8 dereferenceable(8) %423, ptr noundef nonnull align 8 dereferenceable(8) %425)
          to label %427 unwind label %438

427:                                              ; preds = %414
  store ptr %426, ptr %46, align 8, !tbaa !5
  %428 = load ptr, ptr %14, align 8, !tbaa !5
  %429 = icmp ne ptr %428, null
  br i1 %429, label %430, label %442

430:                                              ; preds = %427
  %431 = load ptr, ptr %46, align 8, !tbaa !5
  %432 = getelementptr inbounds %"class.HIR::Struct", ptr %431, i32 0, i32 0
  %433 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %432, ptr %433, align 8, !tbaa !5
  br label %442

434:                                              ; preds = %411
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %18, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %19, align 4
  br label %453

438:                                              ; preds = %442, %414
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %18, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  br label %453

442:                                              ; preds = %430, %427
  %443 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_StructConstructor", ptr %47, i32 0, i32 0
  %444 = load ptr, ptr %45, align 8, !tbaa !5
  %445 = getelementptr inbounds %"struct.HIR::ValueItem::Data_StructConstructor", ptr %444, i32 0, i32 0
  store ptr %445, ptr %443, align 8, !tbaa !54
  %446 = getelementptr inbounds %"struct.StaticTraitResolve::ValuePtr::Data_StructConstructor", ptr %47, i32 0, i32 1
  %447 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %447, ptr %446, align 8, !tbaa !56
  %448 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 0
  %449 = load ptr, ptr %448, align 8
  %450 = getelementptr inbounds { ptr, ptr }, ptr %47, i32 0, i32 1
  %451 = load ptr, ptr %450, align 8
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_22Data_StructConstructorE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr %449, ptr %451)
          to label %452 unwind label %438

452:                                              ; preds = %442
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %456

453:                                              ; preds = %438, %434
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %457

454:                                              ; preds = %409, %321, %286
  %455 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.74, ptr %455, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %455, ptr @_ZTIPKc, ptr null) #11
          to label %1208 unwind label %287

456:                                              ; preds = %452, %363, %348, %333
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %459

457:                                              ; preds = %453, %410, %364, %349, %334, %322, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %461

458:                                              ; No predecessors!
  store i8 0, ptr %21, align 1, !tbaa !9
  br label %139, !llvm.loop !57

459:                                              ; preds = %456, %270, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  %460 = load i32, ptr %22, align 4
  switch i32 %460, label %464 [
    i32 6, label %462
  ]

461:                                              ; preds = %457, %274, %181, %144
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  br label %1201

462:                                              ; preds = %459
  br label %463

463:                                              ; preds = %462
  store i8 0, ptr %21, align 1, !tbaa !9
  br label %130, !llvm.loop !59

464:                                              ; preds = %459, %133
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #9
  %465 = load i32, ptr %22, align 4
  switch i32 %465, label %1200 [
    i32 3, label %466
  ]

466:                                              ; preds = %464
  br label %1198

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

468:                                              ; preds = %1062, %467
  %469 = load i8, ptr %48, align 1, !tbaa !9, !range !11, !noundef !12
  %470 = trunc i8 %469 to i1
  br i1 %470, label %472, label %471

471:                                              ; preds = %468
  store i32 14, ptr %22, align 4
  br label %1063

472:                                              ; preds = %468
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %473 = load ptr, ptr %11, align 8, !tbaa !5
  %474 = getelementptr inbounds %"class.HIR::Path", ptr %473, i32 0, i32 0
  %475 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %474)
          to label %476 unwind label %482

476:                                              ; preds = %472
  store ptr %475, ptr %49, align 8, !tbaa !5
  br label %477

477:                                              ; preds = %1057, %476
  %478 = load ptr, ptr %49, align 8, !tbaa !5
  %479 = load i8, ptr %48, align 1, !tbaa !9, !range !11, !noundef !12
  %480 = trunc i8 %479 to i1
  br i1 %480, label %486, label %481

481:                                              ; preds = %477
  store i32 17, ptr %22, align 4
  br label %1058

482:                                              ; preds = %525, %511, %509, %507, %504, %501, %472
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %18, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %19, align 4
  br label %1060

486:                                              ; preds = %477
  %487 = load ptr, ptr %49, align 8, !tbaa !5
  %488 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %487, i32 0, i32 1
  %489 = getelementptr inbounds %"class.HIR::GenericPath", ptr %488, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %490 unwind label %514

490:                                              ; preds = %486
  %491 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef nonnull align 8 dereferenceable(8) %50)
          to label %492 unwind label %518

492:                                              ; preds = %490
  br i1 %491, label %493, label %498

493:                                              ; preds = %492
  %494 = load ptr, ptr %49, align 8, !tbaa !5
  %495 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %494, i32 0, i32 2
  %496 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef @.str.90)
          to label %497 unwind label %518

497:                                              ; preds = %493
  br label %498

498:                                              ; preds = %497, %492
  %499 = phi i1 [ false, %492 ], [ %496, %497 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br i1 %499, label %500, label %527

500:                                              ; preds = %498
  br label %501

501:                                              ; preds = %500
  %502 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %503 unwind label %482

503:                                              ; preds = %501
  br i1 %502, label %504, label %523

504:                                              ; preds = %503
  %505 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %505, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %507 unwind label %482

507:                                              ; preds = %504
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef @.str.91)
          to label %509 unwind label %482

509:                                              ; preds = %507
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef @_ZSt3decRSt8ios_base)
          to label %511 unwind label %482

511:                                              ; preds = %509
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %510, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %513 unwind label %482

513:                                              ; preds = %511
  br label %523

514:                                              ; preds = %486
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %18, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %19, align 4
  br label %522

518:                                              ; preds = %493, %490
  %519 = landingpad { ptr, i32 }
          cleanup
  %520 = extractvalue { ptr, i32 } %519, 0
  store ptr %520, ptr %18, align 8
  %521 = extractvalue { ptr, i32 } %519, 1
  store i32 %521, ptr %19, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br label %522

522:                                              ; preds = %518, %514
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %1060

523:                                              ; preds = %513, %503
  br label %524

524:                                              ; preds = %523
  br label %525

525:                                              ; preds = %524
  invoke void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0)
          to label %526 unwind label %482

526:                                              ; preds = %525
  store i32 1, ptr %22, align 4
  br label %1058

527:                                              ; preds = %498
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %528 = load ptr, ptr %49, align 8, !tbaa !5
  %529 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %528, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %52, ptr noundef nonnull align 8 dereferenceable(8) %529)
          to label %530 unwind label %585

530:                                              ; preds = %527
  %531 = load ptr, ptr %12, align 8, !tbaa !5
  %532 = getelementptr inbounds %struct.MonomorphState, ptr %531, i32 0, i32 1
  %533 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %534 unwind label %589

534:                                              ; preds = %530
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  %535 = load ptr, ptr %49, align 8, !tbaa !5
  %536 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %535, i32 0, i32 1
  %537 = getelementptr inbounds %"class.HIR::GenericPath", ptr %536, i32 0, i32 1
  %538 = load ptr, ptr %12, align 8, !tbaa !5
  %539 = getelementptr inbounds %struct.MonomorphState, ptr %538, i32 0, i32 2
  store ptr %537, ptr %539, align 8, !tbaa !32
  %540 = load ptr, ptr %49, align 8, !tbaa !5
  %541 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %540, i32 0, i32 3
  %542 = load ptr, ptr %12, align 8, !tbaa !5
  %543 = getelementptr inbounds %struct.MonomorphState, ptr %542, i32 0, i32 3
  store ptr %541, ptr %543, align 8, !tbaa !53
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #9
  %544 = getelementptr inbounds i8, ptr %95, i64 8
  %545 = getelementptr inbounds %struct.TraitResolveCommon, ptr %544, i32 0, i32 0
  %546 = load ptr, ptr %545, align 8, !tbaa !13
  %547 = load ptr, ptr %10, align 8, !tbaa !5
  %548 = load ptr, ptr %49, align 8, !tbaa !5
  %549 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %548, i32 0, i32 1
  %550 = getelementptr inbounds %"class.HIR::GenericPath", ptr %549, i32 0, i32 0
  %551 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %546, ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef nonnull align 8 dereferenceable(8) %550)
          to label %552 unwind label %594

552:                                              ; preds = %534
  store ptr %551, ptr %53, align 8, !tbaa !5
  %553 = load ptr, ptr %53, align 8, !tbaa !5
  %554 = getelementptr inbounds %"class.HIR::Trait", ptr %553, i32 0, i32 5
  %555 = load ptr, ptr %49, align 8, !tbaa !5
  %556 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %555, i32 0, i32 2
  %557 = invoke noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(56) %554, ptr noundef nonnull align 8 dereferenceable(8) %556)
          to label %558 unwind label %594

558:                                              ; preds = %552
  %559 = icmp ne i64 %557, 0
  br i1 %559, label %602, label %560

560:                                              ; preds = %558
  br label %561

561:                                              ; preds = %560
  %562 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %563 unwind label %594

563:                                              ; preds = %561
  br i1 %562, label %564, label %598

564:                                              ; preds = %563
  %565 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %566 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %565, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %567 unwind label %594

567:                                              ; preds = %564
  %568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %566, ptr noundef @.str.92)
          to label %569 unwind label %594

569:                                              ; preds = %567
  %570 = load ptr, ptr %49, align 8, !tbaa !5
  %571 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %570, i32 0, i32 2
  %572 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %568, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %573 unwind label %594

573:                                              ; preds = %569
  %574 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %572, ptr noundef @.str.93)
          to label %575 unwind label %594

575:                                              ; preds = %573
  %576 = load ptr, ptr %49, align 8, !tbaa !5
  %577 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %576, i32 0, i32 1
  %578 = getelementptr inbounds %"class.HIR::GenericPath", ptr %577, i32 0, i32 0
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %574, ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %580 unwind label %594

580:                                              ; preds = %575
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef @_ZSt3decRSt8ios_base)
          to label %582 unwind label %594

582:                                              ; preds = %580
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %584 unwind label %594

584:                                              ; preds = %582
  br label %598

585:                                              ; preds = %527
  %586 = landingpad { ptr, i32 }
          cleanup
  %587 = extractvalue { ptr, i32 } %586, 0
  store ptr %587, ptr %18, align 8
  %588 = extractvalue { ptr, i32 } %586, 1
  store i32 %588, ptr %19, align 4
  br label %593

589:                                              ; preds = %530
  %590 = landingpad { ptr, i32 }
          cleanup
  %591 = extractvalue { ptr, i32 } %590, 0
  store ptr %591, ptr %18, align 8
  %592 = extractvalue { ptr, i32 } %590, 1
  store i32 %592, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %593

593:                                              ; preds = %589, %585
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  br label %1060

594:                                              ; preds = %600, %582, %580, %575, %573, %569, %567, %564, %561, %552, %534
  %595 = landingpad { ptr, i32 }
          cleanup
  %596 = extractvalue { ptr, i32 } %595, 0
  store ptr %596, ptr %18, align 8
  %597 = extractvalue { ptr, i32 } %595, 1
  store i32 %597, ptr %19, align 4
  br label %1056

598:                                              ; preds = %584, %563
  br label %599

599:                                              ; preds = %598
  br label %600

600:                                              ; preds = %599
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %601 unwind label %594

601:                                              ; preds = %600
  store i32 1, ptr %22, align 4
  br label %1055

602:                                              ; preds = %558
  %603 = load ptr, ptr %14, align 8, !tbaa !5
  %604 = icmp ne ptr %603, null
  br i1 %604, label %605, label %609

605:                                              ; preds = %602
  %606 = load ptr, ptr %53, align 8, !tbaa !5
  %607 = getelementptr inbounds %"class.HIR::Trait", ptr %606, i32 0, i32 0
  %608 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %607, ptr %608, align 8, !tbaa !5
  br label %609

609:                                              ; preds = %605, %602
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %610 = load ptr, ptr %53, align 8, !tbaa !5
  %611 = getelementptr inbounds %"class.HIR::Trait", ptr %610, i32 0, i32 5
  %612 = load ptr, ptr %49, align 8, !tbaa !5
  %613 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %612, i32 0, i32 2
  %614 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %611, ptr noundef nonnull align 8 dereferenceable(8) %613)
          to label %615 unwind label %622

615:                                              ; preds = %609
  store ptr %614, ptr %54, align 8, !tbaa !5
  %616 = load i8, ptr %13, align 1, !tbaa !9, !range !11, !noundef !12
  %617 = trunc i8 %616 to i1
  br i1 %617, label %618, label %661

618:                                              ; preds = %615
  %619 = load ptr, ptr %54, align 8, !tbaa !5
  %620 = invoke noundef i32 @_ZNK3HIR14TraitValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %619)
          to label %621 unwind label %622

621:                                              ; preds = %618
  switch i32 %620, label %660 [
    i32 0, label %626
    i32 1, label %627
    i32 2, label %638
    i32 3, label %649
  ]

622:                                              ; preds = %1051, %618, %609
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %18, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %19, align 4
  br label %1054

626:                                              ; preds = %621
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 3236, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #10
  unreachable

627:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %628 = load ptr, ptr %54, align 8, !tbaa !5
  %629 = invoke noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR14TraitValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %628)
          to label %630 unwind label %634

630:                                              ; preds = %627
  store ptr %629, ptr %55, align 8, !tbaa !5
  %631 = load ptr, ptr %55, align 8, !tbaa !5
  %632 = load ptr, ptr %55, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %632)
          to label %633 unwind label %634

633:                                              ; preds = %630
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %1053

634:                                              ; preds = %630, %627
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %18, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %1054

638:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %639 = load ptr, ptr %54, align 8, !tbaa !5
  %640 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR14TraitValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %639)
          to label %641 unwind label %645

641:                                              ; preds = %638
  store ptr %640, ptr %56, align 8, !tbaa !5
  %642 = load ptr, ptr %56, align 8, !tbaa !5
  %643 = load ptr, ptr %56, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR6StaticE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %643)
          to label %644 unwind label %645

644:                                              ; preds = %641
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %1053

645:                                              ; preds = %641, %638
  %646 = landingpad { ptr, i32 }
          cleanup
  %647 = extractvalue { ptr, i32 } %646, 0
  store ptr %647, ptr %18, align 8
  %648 = extractvalue { ptr, i32 } %646, 1
  store i32 %648, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %1054

649:                                              ; preds = %621
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #9
  %650 = load ptr, ptr %54, align 8, !tbaa !5
  %651 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %650)
          to label %652 unwind label %656

652:                                              ; preds = %649
  store ptr %651, ptr %57, align 8, !tbaa !5
  %653 = load ptr, ptr %57, align 8, !tbaa !5
  %654 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %654)
          to label %655 unwind label %656

655:                                              ; preds = %652
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %1053

656:                                              ; preds = %652, %649
  %657 = landingpad { ptr, i32 }
          cleanup
  %658 = extractvalue { ptr, i32 } %657, 0
  store ptr %658, ptr %18, align 8
  %659 = extractvalue { ptr, i32 } %657, 1
  store i32 %659, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #9
  br label %1054

660:                                              ; preds = %621
  br label %1051

661:                                              ; preds = %615
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #9
  store i8 0, ptr %58, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 184, ptr %59) #9
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59)
          to label %662 unwind label %699

662:                                              ; preds = %661
  call void @llvm.lifetime.start.p0(i64 24, ptr %60) #9
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60)
          to label %663 unwind label %703

663:                                              ; preds = %662
  %664 = load ptr, ptr %10, align 8, !tbaa !5
  %665 = load ptr, ptr %49, align 8, !tbaa !5
  %666 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %665, i32 0, i32 1
  %667 = getelementptr inbounds %"class.HIR::GenericPath", ptr %666, i32 0, i32 0
  %668 = load ptr, ptr %49, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %668, i32 0, i32 1
  %670 = getelementptr inbounds %"class.HIR::GenericPath", ptr %669, i32 0, i32 1
  %671 = load ptr, ptr %49, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %671, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 32, ptr %62) #9
  %673 = getelementptr inbounds %class.anon.663, ptr %62, i32 0, i32 0
  %674 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %674, ptr %673, align 8, !tbaa !5
  %675 = getelementptr inbounds %class.anon.663, ptr %62, i32 0, i32 1
  store ptr %59, ptr %675, align 8, !tbaa !5
  %676 = getelementptr inbounds %class.anon.663, ptr %62, i32 0, i32 2
  store ptr %58, ptr %676, align 8, !tbaa !5
  %677 = getelementptr inbounds %class.anon.663, ptr %62, i32 0, i32 3
  store ptr %60, ptr %677, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(32) %62)
          to label %678 unwind label %707

678:                                              ; preds = %663
  %679 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %95, ptr noundef nonnull align 8 dereferenceable(8) %664, ptr noundef nonnull align 8 dereferenceable(8) %667, ptr noundef %670, ptr noundef nonnull align 8 dereferenceable(8) %672, ptr noundef %61, i1 noundef zeroext false)
          to label %680 unwind label %711

680:                                              ; preds = %678
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  %681 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %59)
          to label %682 unwind label %716

682:                                              ; preds = %680
  br i1 %681, label %917, label %683

683:                                              ; preds = %682
  %684 = load ptr, ptr %49, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %684, i32 0, i32 0
  %686 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %685, i1 noundef zeroext true)
          to label %687 unwind label %716

687:                                              ; preds = %683
  br i1 %686, label %898, label %688

688:                                              ; preds = %687
  %689 = load ptr, ptr %49, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %689, i32 0, i32 1
  %691 = getelementptr inbounds %"class.HIR::GenericPath", ptr %690, i32 0, i32 1
  %692 = invoke noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24) %691, i1 noundef zeroext true)
          to label %693 unwind label %716

693:                                              ; preds = %688
  br i1 %692, label %898, label %694

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

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

698:                                              ; preds = %695
  store i32 25, ptr %22, align 4
  br label %895

699:                                              ; preds = %661
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %18, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %19, align 4
  br label %1050

703:                                              ; preds = %662
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %18, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %19, align 4
  br label %1049

707:                                              ; preds = %663
  %708 = landingpad { ptr, i32 }
          cleanup
  %709 = extractvalue { ptr, i32 } %708, 0
  store ptr %709, ptr %18, align 8
  %710 = extractvalue { ptr, i32 } %708, 1
  store i32 %710, ptr %19, align 4
  br label %715

711:                                              ; preds = %678
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %18, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %715

715:                                              ; preds = %711, %707
  call void @llvm.lifetime.end.p0(i64 32, ptr %62) #9
  br label %1048

716:                                              ; preds = %950, %947, %942, %940, %938, %935, %932, %925, %920, %915, %909, %907, %905, %902, %899, %688, %683, %680
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %18, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %19, align 4
  br label %1048

720:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %721 = load ptr, ptr %54, align 8, !tbaa !5
  store ptr %721, ptr %64, align 8, !tbaa !5
  br label %722

722:                                              ; preds = %889, %720
  %723 = load i8, ptr %63, align 1, !tbaa !9, !range !11, !noundef !12
  %724 = trunc i8 %723 to i1
  br i1 %724, label %726, label %725

725:                                              ; preds = %722
  store i32 28, ptr %22, align 4
  br label %890

726:                                              ; preds = %722
  %727 = load ptr, ptr %64, align 8, !tbaa !5
  %728 = invoke noundef i32 @_ZNK3HIR14TraitValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %727)
          to label %729 unwind label %730

729:                                              ; preds = %726
  switch i32 %728, label %888 [
    i32 0, label %734
    i32 1, label %735
    i32 2, label %808
    i32 3, label %831
  ]

730:                                              ; preds = %726
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %18, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %19, align 4
  br label %892

734:                                              ; preds = %729
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 3307, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #10
  unreachable

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

736:                                              ; preds = %804, %735
  %737 = load i8, ptr %65, align 1, !tbaa !9, !range !11, !noundef !12
  %738 = trunc i8 %737 to i1
  br i1 %738, label %740, label %739

739:                                              ; preds = %736
  store i32 32, ptr %22, align 4
  br label %805

740:                                              ; preds = %736
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %741 = load ptr, ptr %64, align 8, !tbaa !5
  %742 = invoke noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR14TraitValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %741)
          to label %743 unwind label %749

743:                                              ; preds = %740
  store ptr %742, ptr %66, align 8, !tbaa !5
  br label %744

744:                                              ; preds = %800, %743
  %745 = load ptr, ptr %66, align 8, !tbaa !5
  %746 = load i8, ptr %65, align 1, !tbaa !9, !range !11, !noundef !12
  %747 = trunc i8 %746 to i1
  br i1 %747, label %753, label %748

748:                                              ; preds = %744
  store i32 35, ptr %22, align 4
  br label %801

749:                                              ; preds = %793, %791, %789, %786, %783, %779, %774, %772, %770, %767, %764, %753, %740
  %750 = landingpad { ptr, i32 }
          cleanup
  %751 = extractvalue { ptr, i32 } %750, 0
  store ptr %751, ptr %18, align 8
  %752 = extractvalue { ptr, i32 } %750, 1
  store i32 %752, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #9
  br label %892

753:                                              ; preds = %744
  %754 = load ptr, ptr %66, align 8, !tbaa !5
  %755 = getelementptr inbounds %"class.HIR::Constant", ptr %754, i32 0, i32 2
  %756 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %755)
          to label %757 unwind label %749

757:                                              ; preds = %753
  br i1 %756, label %763, label %758

758:                                              ; preds = %757
  %759 = load ptr, ptr %66, align 8, !tbaa !5
  %760 = getelementptr inbounds %"class.HIR::Constant", ptr %759, i32 0, i32 4
  %761 = load i32, ptr %760, align 8, !tbaa !62
  %762 = icmp ne i32 %761, 0
  br i1 %762, label %763, label %782

763:                                              ; preds = %758, %757
  br label %764

764:                                              ; preds = %763
  %765 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %766 unwind label %749

766:                                              ; preds = %764
  br i1 %765, label %767, label %777

767:                                              ; preds = %766
  %768 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %769 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %768, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %770 unwind label %749

770:                                              ; preds = %767
  %771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %769, ptr noundef @.str.94)
          to label %772 unwind label %749

772:                                              ; preds = %770
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %771, ptr noundef @_ZSt3decRSt8ios_base)
          to label %774 unwind label %749

774:                                              ; preds = %772
  %775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %776 unwind label %749

776:                                              ; preds = %774
  br label %777

777:                                              ; preds = %776, %766
  br label %778

778:                                              ; preds = %777
  br label %779

779:                                              ; preds = %778
  %780 = load ptr, ptr %66, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %780)
          to label %781 unwind label %749

781:                                              ; preds = %779
  store i32 1, ptr %22, align 4
  br label %801

782:                                              ; preds = %758
  br label %783

783:                                              ; preds = %782
  %784 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %785 unwind label %749

785:                                              ; preds = %783
  br i1 %784, label %786, label %796

786:                                              ; preds = %785
  %787 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %787, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %789 unwind label %749

789:                                              ; preds = %786
  %790 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %788, ptr noundef @.str.95)
          to label %791 unwind label %749

791:                                              ; preds = %789
  %792 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %790, ptr noundef @_ZSt3decRSt8ios_base)
          to label %793 unwind label %749

793:                                              ; preds = %791
  %794 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %792, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %795 unwind label %749

795:                                              ; preds = %793
  br label %796

796:                                              ; preds = %795, %785
  br label %797

797:                                              ; preds = %796
  br label %798

798:                                              ; preds = %797
  br label %799

799:                                              ; preds = %798
  br label %800

800:                                              ; preds = %799
  store i8 0, ptr %65, align 1, !tbaa !9
  br label %744, !llvm.loop !104

801:                                              ; preds = %781, %748
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  %802 = load i32, ptr %22, align 4
  switch i32 %802, label %805 [
    i32 35, label %803
  ]

803:                                              ; preds = %801
  br label %804

804:                                              ; preds = %803
  store i8 0, ptr %65, align 1, !tbaa !9
  br label %736, !llvm.loop !105

805:                                              ; preds = %801, %739
  call void @llvm.lifetime.end.p0(i64 1, ptr %65) #9
  %806 = load i32, ptr %22, align 4
  switch i32 %806, label %890 [
    i32 32, label %807
  ]

807:                                              ; preds = %805
  br label %888

808:                                              ; preds = %729
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #9
  store i8 1, ptr %67, align 1, !tbaa !9
  br label %809

809:                                              ; preds = %829, %808
  %810 = load i8, ptr %67, align 1, !tbaa !9, !range !11, !noundef !12
  %811 = trunc i8 %810 to i1
  br i1 %811, label %813, label %812

812:                                              ; preds = %809
  store i32 42, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  br label %830

813:                                              ; preds = %809
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %814 = load ptr, ptr %64, align 8, !tbaa !5
  %815 = invoke noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR14TraitValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %814)
          to label %816 unwind label %822

816:                                              ; preds = %813
  store ptr %815, ptr %68, align 8, !tbaa !5
  br label %817

817:                                              ; preds = %827, %816
  %818 = load ptr, ptr %68, align 8, !tbaa !5
  %819 = load i8, ptr %67, align 1, !tbaa !9, !range !11, !noundef !12
  %820 = trunc i8 %819 to i1
  br i1 %820, label %826, label %821

821:                                              ; preds = %817
  store i32 45, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %828

822:                                              ; preds = %813
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %18, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #9
  br label %892

826:                                              ; preds = %817
  br label %827

827:                                              ; preds = %826
  store i8 0, ptr %67, align 1, !tbaa !9
  br label %817, !llvm.loop !106

828:                                              ; preds = %821
  br label %829

829:                                              ; preds = %828
  store i8 0, ptr %67, align 1, !tbaa !9
  br label %809, !llvm.loop !107

830:                                              ; preds = %812
  br label %888

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

832:                                              ; preds = %884, %831
  %833 = load i8, ptr %69, align 1, !tbaa !9, !range !11, !noundef !12
  %834 = trunc i8 %833 to i1
  br i1 %834, label %836, label %835

835:                                              ; preds = %832
  store i32 48, ptr %22, align 4
  br label %885

836:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %837 = load ptr, ptr %64, align 8, !tbaa !5
  %838 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %837)
          to label %839 unwind label %845

839:                                              ; preds = %836
  store ptr %838, ptr %70, align 8, !tbaa !5
  br label %840

840:                                              ; preds = %880, %839
  %841 = load ptr, ptr %70, align 8, !tbaa !5
  %842 = load i8, ptr %69, align 1, !tbaa !9, !range !11, !noundef !12
  %843 = trunc i8 %842 to i1
  br i1 %843, label %849, label %844

844:                                              ; preds = %840
  store i32 51, ptr %22, align 4
  br label %881

845:                                              ; preds = %876, %871, %869, %867, %864, %861, %854, %849, %836
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %18, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  br label %892

849:                                              ; preds = %840
  %850 = load ptr, ptr %70, align 8, !tbaa !5
  %851 = getelementptr inbounds %"class.HIR::Function", ptr %850, i32 0, i32 11
  %852 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %851)
          to label %853 unwind label %845

853:                                              ; preds = %849
  br i1 %852, label %860, label %854

854:                                              ; preds = %853
  %855 = load ptr, ptr %70, align 8, !tbaa !5
  %856 = getelementptr inbounds %"class.HIR::Function", ptr %855, i32 0, i32 11
  %857 = getelementptr inbounds %"class.HIR::ExprPtr", ptr %856, i32 0, i32 3
  %858 = invoke noundef zeroext i1 @_ZNK3MIR15FunctionPointercvbEv(ptr noundef nonnull align 8 dereferenceable(8) %857)
          to label %859 unwind label %845

859:                                              ; preds = %854
  br i1 %858, label %860, label %879

860:                                              ; preds = %859, %853
  br label %861

861:                                              ; preds = %860
  %862 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %863 unwind label %845

863:                                              ; preds = %861
  br i1 %862, label %864, label %874

864:                                              ; preds = %863
  %865 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %865, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %867 unwind label %845

867:                                              ; preds = %864
  %868 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %866, ptr noundef @.str.96)
          to label %869 unwind label %845

869:                                              ; preds = %867
  %870 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %868, ptr noundef @_ZSt3decRSt8ios_base)
          to label %871 unwind label %845

871:                                              ; preds = %869
  %872 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %870, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %873 unwind label %845

873:                                              ; preds = %871
  br label %874

874:                                              ; preds = %873, %863
  br label %875

875:                                              ; preds = %874
  br label %876

876:                                              ; preds = %875
  %877 = load ptr, ptr %70, align 8, !tbaa !5
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef %877)
          to label %878 unwind label %845

878:                                              ; preds = %876
  store i32 1, ptr %22, align 4
  br label %881

879:                                              ; preds = %859
  br label %880

880:                                              ; preds = %879
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %840, !llvm.loop !108

881:                                              ; preds = %878, %844
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  %882 = load i32, ptr %22, align 4
  switch i32 %882, label %885 [
    i32 51, label %883
  ]

883:                                              ; preds = %881
  br label %884

884:                                              ; preds = %883
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %832, !llvm.loop !109

885:                                              ; preds = %881, %835
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #9
  %886 = load i32, ptr %22, align 4
  switch i32 %886, label %890 [
    i32 48, label %887
  ]

887:                                              ; preds = %885
  br label %888

888:                                              ; preds = %887, %830, %807, %729
  br label %889

889:                                              ; preds = %888
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %722, !llvm.loop !110

890:                                              ; preds = %885, %805, %725
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  %891 = load i32, ptr %22, align 4
  switch i32 %891, label %895 [
    i32 28, label %893
  ]

892:                                              ; preds = %845, %822, %749, %730
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #9
  br label %1048

893:                                              ; preds = %890
  br label %894

894:                                              ; preds = %893
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %695, !llvm.loop !111

895:                                              ; preds = %890, %698
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #9
  %896 = load i32, ptr %22, align 4
  switch i32 %896, label %1047 [
    i32 25, label %897
  ]

897:                                              ; preds = %895
  br label %915

898:                                              ; preds = %693, %687
  br label %899

899:                                              ; preds = %898
  %900 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %901 unwind label %716

901:                                              ; preds = %899
  br i1 %900, label %902, label %912

902:                                              ; preds = %901
  %903 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %904 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %903, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %905 unwind label %716

905:                                              ; preds = %902
  %906 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %904, ptr noundef @.str.97)
          to label %907 unwind label %716

907:                                              ; preds = %905
  %908 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %906, ptr noundef @_ZSt3decRSt8ios_base)
          to label %909 unwind label %716

909:                                              ; preds = %907
  %910 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %908, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %911 unwind label %716

911:                                              ; preds = %909
  br label %912

912:                                              ; preds = %911, %901
  br label %913

913:                                              ; preds = %912
  br label %914

914:                                              ; preds = %913
  br label %915

915:                                              ; preds = %914, %897
  invoke void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0)
          to label %916 unwind label %716

916:                                              ; preds = %915
  store i32 1, ptr %22, align 4
  br label %1047

917:                                              ; preds = %682
  %918 = load i8, ptr %58, align 1, !tbaa !9, !range !11, !noundef !12
  %919 = trunc i8 %918 to i1
  br i1 %919, label %920, label %950

920:                                              ; preds = %917
  %921 = load ptr, ptr %49, align 8, !tbaa !5
  %922 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %921, i32 0, i32 0
  %923 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %922, i1 noundef zeroext true)
          to label %924 unwind label %716

924:                                              ; preds = %920
  br i1 %923, label %931, label %925

925:                                              ; preds = %924
  %926 = load ptr, ptr %49, align 8, !tbaa !5
  %927 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %926, i32 0, i32 1
  %928 = getelementptr inbounds %"class.HIR::GenericPath", ptr %927, i32 0, i32 1
  %929 = invoke noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24) %928, i1 noundef zeroext true)
          to label %930 unwind label %716

930:                                              ; preds = %925
  br i1 %929, label %931, label %949

931:                                              ; preds = %930, %924
  br label %932

932:                                              ; preds = %931
  %933 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %934 unwind label %716

934:                                              ; preds = %932
  br i1 %933, label %935, label %945

935:                                              ; preds = %934
  %936 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !60
  %937 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %936, ptr noundef @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %938 unwind label %716

938:                                              ; preds = %935
  %939 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %937, ptr noundef @.str.98)
          to label %940 unwind label %716

940:                                              ; preds = %938
  %941 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %939, ptr noundef @_ZSt3decRSt8ios_base)
          to label %942 unwind label %716

942:                                              ; preds = %940
  %943 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %941, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %944 unwind label %716

944:                                              ; preds = %942
  br label %945

945:                                              ; preds = %944, %934
  br label %946

946:                                              ; preds = %945
  br label %947

947:                                              ; preds = %946
  invoke void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0)
          to label %948 unwind label %716

948:                                              ; preds = %947
  store i32 1, ptr %22, align 4
  br label %1047

949:                                              ; preds = %930
  br label %950

950:                                              ; preds = %949, %917
  %951 = getelementptr inbounds %struct.ImplRef, ptr %59, i32 0, i32 0
  %952 = invoke noundef zeroext i1 @_ZNK7ImplRef4Data12is_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184) %951)
          to label %953 unwind label %716

953:                                              ; preds = %950
  br i1 %952, label %984, label %954

954:                                              ; preds = %953
  br label %955

955:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #9
  store ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %956 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef nonnull align 8 dereferenceable(8) %956)
          to label %957 unwind label %964

957:                                              ; preds = %955
  call void @llvm.lifetime.start.p0(i64 16, ptr %76) #9
  %958 = getelementptr inbounds %class.anon.664, ptr %76, i32 0, i32 0
  store ptr %73, ptr %958, align 8, !tbaa !5
  %959 = getelementptr inbounds %class.anon.664, ptr %76, i32 0, i32 1
  %960 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %960, ptr %959, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(16) %76) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %74, ptr noundef %75)
          to label %961 unwind label %968

961:                                              ; preds = %957
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  %962 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %962, ptr noundef @.str.3)
          to label %963 unwind label %973

963:                                              ; preds = %961
  invoke void @__cxa_throw(ptr %962, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1208 unwind label %977

964:                                              ; preds = %955
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %18, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %19, align 4
  br label %972

968:                                              ; preds = %957
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %18, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %76) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  br label %972

972:                                              ; preds = %968, %964
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %981

973:                                              ; preds = %961
  %974 = landingpad { ptr, i32 }
          cleanup
  %975 = extractvalue { ptr, i32 } %974, 0
  store ptr %975, ptr %18, align 8
  %976 = extractvalue { ptr, i32 } %974, 1
  store i32 %976, ptr %19, align 4
  call void @__cxa_free_exception(ptr %962) #9
  br label %981

977:                                              ; preds = %963
  %978 = landingpad { ptr, i32 }
          cleanup
  %979 = extractvalue { ptr, i32 } %978, 0
  store ptr %979, ptr %18, align 8
  %980 = extractvalue { ptr, i32 } %978, 1
  store i32 %980, ptr %19, align 4
  br label %981

981:                                              ; preds = %977, %973, %972
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #9
  br label %1048

982:                                              ; No predecessors!
  br label %983

983:                                              ; preds = %982
  br label %984

984:                                              ; preds = %983, %953
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  %985 = getelementptr inbounds %struct.ImplRef, ptr %59, i32 0, i32 0
  %986 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZN7ImplRef4Data12as_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184) %985)
          to label %987 unwind label %996

987:                                              ; preds = %984
  store ptr %986, ptr %77, align 8, !tbaa !5
  %988 = load ptr, ptr %14, align 8, !tbaa !5
  %989 = icmp ne ptr %988, null
  br i1 %989, label %990, label %1000

990:                                              ; preds = %987
  %991 = load ptr, ptr %77, align 8, !tbaa !5
  %992 = getelementptr inbounds %"struct.ImplRef::Data::Data_TraitImpl", ptr %991, i32 0, i32 3
  %993 = load ptr, ptr %992, align 8, !tbaa !112
  %994 = getelementptr inbounds %"class.HIR::TraitImpl", ptr %993, i32 0, i32 0
  %995 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %994, ptr %995, align 8, !tbaa !5
  br label %1000

996:                                              ; preds = %1020, %1012, %984
  %997 = landingpad { ptr, i32 }
          cleanup
  %998 = extractvalue { ptr, i32 } %997, 0
  store ptr %998, ptr %18, align 8
  %999 = extractvalue { ptr, i32 } %997, 1
  store i32 %999, ptr %19, align 4
  br label %1046

1000:                                             ; preds = %990, %987
  %1001 = load ptr, ptr %12, align 8, !tbaa !5
  %1002 = getelementptr inbounds %struct.MonomorphState, ptr %1001, i32 0, i32 4
  %1003 = load ptr, ptr %12, align 8, !tbaa !5
  %1004 = getelementptr inbounds %struct.MonomorphState, ptr %1003, i32 0, i32 2
  store ptr %1002, ptr %1004, align 8, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 24, ptr %78) #9
  %1005 = load ptr, ptr %77, align 8, !tbaa !5
  %1006 = getelementptr inbounds %"struct.ImplRef::Data::Data_TraitImpl", ptr %1005, i32 0, i32 0
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %78, ptr noundef nonnull align 8 dereferenceable(24) %1006)
          to label %1007 unwind label %1021

1007:                                             ; preds = %1000
  %1008 = load ptr, ptr %12, align 8, !tbaa !5
  %1009 = getelementptr inbounds %struct.MonomorphState, ptr %1008, i32 0, i32 4
  %1010 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1009, ptr noundef nonnull align 8 dereferenceable(24) %78)
          to label %1011 unwind label %1025

1011:                                             ; preds = %1007
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #9
  br label %1012

1012:                                             ; preds = %1011
  %1013 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_NotFoundEv(ptr noundef nonnull align 8 dereferenceable(24) %60)
          to label %1014 unwind label %996

1014:                                             ; preds = %1012
  br i1 %1013, label %1015, label %1043

1015:                                             ; preds = %1014
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %1016 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %1016)
          to label %1017 unwind label %1030

1017:                                             ; preds = %1015
  call void @llvm.lifetime.start.p0(i64 1, ptr %81) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 1 dereferenceable(1) %81) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef %80)
          to label %1018 unwind label %1034

1018:                                             ; preds = %1017
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  %1019 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1019, ptr noundef @.str)
          to label %1020 unwind label %1039

1020:                                             ; preds = %1018
  invoke void @__cxa_throw(ptr %1019, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1208 unwind label %996

1021:                                             ; preds = %1000
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %18, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %19, align 4
  br label %1029

1025:                                             ; preds = %1007
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %18, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %19, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  br label %1029

1029:                                             ; preds = %1025, %1021
  call void @llvm.lifetime.end.p0(i64 24, ptr %78) #9
  br label %1046

1030:                                             ; preds = %1015
  %1031 = landingpad { ptr, i32 }
          cleanup
  %1032 = extractvalue { ptr, i32 } %1031, 0
  store ptr %1032, ptr %18, align 8
  %1033 = extractvalue { ptr, i32 } %1031, 1
  store i32 %1033, ptr %19, align 4
  br label %1038

1034:                                             ; preds = %1017
  %1035 = landingpad { ptr, i32 }
          cleanup
  %1036 = extractvalue { ptr, i32 } %1035, 0
  store ptr %1036, ptr %18, align 8
  %1037 = extractvalue { ptr, i32 } %1035, 1
  store i32 %1037, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %81) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  br label %1038

1038:                                             ; preds = %1034, %1030
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  br label %1046

1039:                                             ; preds = %1018
  %1040 = landingpad { ptr, i32 }
          cleanup
  %1041 = extractvalue { ptr, i32 } %1040, 0
  store ptr %1041, ptr %18, align 8
  %1042 = extractvalue { ptr, i32 } %1040, 1
  store i32 %1042, ptr %19, align 4
  call void @__cxa_free_exception(ptr %1019) #9
  br label %1046

1043:                                             ; preds = %1014
  br label %1044

1044:                                             ; preds = %1043
  br label %1045

1045:                                             ; preds = %1044
  call void @_ZN18StaticTraitResolve8ValuePtrC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  store i32 1, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  br label %1047

1046:                                             ; preds = %1039, %1038, %1029, %996
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  br label %1048

1047:                                             ; preds = %1045, %948, %916, %895
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #9
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #9
  call void @llvm.lifetime.end.p0(i64 184, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  br label %1053

1048:                                             ; preds = %1046, %981, %892, %716, %715
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  br label %1049

1049:                                             ; preds = %1048, %703
  call void @llvm.lifetime.end.p0(i64 24, ptr %60) #9
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #9
  br label %1050

1050:                                             ; preds = %1049, %699
  call void @llvm.lifetime.end.p0(i64 184, ptr %59) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  br label %1054

1051:                                             ; preds = %660
  %1052 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.74, ptr %1052, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1052, ptr @_ZTIPKc, ptr null) #11
          to label %1208 unwind label %622

1053:                                             ; preds = %1047, %655, %644, %633
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %1055

1054:                                             ; preds = %1050, %656, %645, %634, %622
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %1056

1055:                                             ; preds = %1053, %601
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %1058

1056:                                             ; preds = %1054, %594
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #9
  br label %1060

1057:                                             ; No predecessors!
  store i8 0, ptr %48, align 1, !tbaa !9
  br label %477, !llvm.loop !114

1058:                                             ; preds = %1055, %526, %481
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  %1059 = load i32, ptr %22, align 4
  switch i32 %1059, label %1063 [
    i32 17, label %1061
  ]

1060:                                             ; preds = %1056, %593, %522, %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  br label %1201

1061:                                             ; preds = %1058
  br label %1062

1062:                                             ; preds = %1061
  store i8 0, ptr %48, align 1, !tbaa !9
  br label %468, !llvm.loop !115

1063:                                             ; preds = %1058, %471
  call void @llvm.lifetime.end.p0(i64 1, ptr %48) #9
  %1064 = load i32, ptr %22, align 4
  switch i32 %1064, label %1200 [
    i32 14, label %1065
  ]

1065:                                             ; preds = %1063
  br label %1198

1066:                                             ; preds = %110
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #9
  store i8 1, ptr %82, align 1, !tbaa !9
  br label %1067

1067:                                             ; preds = %1146, %1066
  %1068 = load i8, ptr %82, align 1, !tbaa !9, !range !11, !noundef !12
  %1069 = trunc i8 %1068 to i1
  br i1 %1069, label %1071, label %1070

1070:                                             ; preds = %1067
  store i32 64, ptr %22, align 4
  br label %1147

1071:                                             ; preds = %1067
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %1072 = load ptr, ptr %11, align 8, !tbaa !5
  %1073 = getelementptr inbounds %"class.HIR::Path", ptr %1072, i32 0, i32 0
  %1074 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %1073)
          to label %1075 unwind label %1081

1075:                                             ; preds = %1071
  store ptr %1074, ptr %83, align 8, !tbaa !5
  br label %1076

1076:                                             ; preds = %1141, %1075
  %1077 = load ptr, ptr %83, align 8, !tbaa !5
  %1078 = load i8, ptr %82, align 1, !tbaa !9, !range !11, !noundef !12
  %1079 = trunc i8 %1078 to i1
  br i1 %1079, label %1085, label %1080

1080:                                             ; preds = %1076
  store i32 67, ptr %22, align 4
  br label %1142

1081:                                             ; preds = %1092, %1071
  %1082 = landingpad { ptr, i32 }
          cleanup
  %1083 = extractvalue { ptr, i32 } %1082, 0
  store ptr %1083, ptr %18, align 8
  %1084 = extractvalue { ptr, i32 } %1082, 1
  store i32 %1084, ptr %19, align 4
  br label %1144

1085:                                             ; preds = %1076
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %1086 = load ptr, ptr %83, align 8, !tbaa !5
  %1087 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %1086, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %84, ptr noundef nonnull align 8 dereferenceable(8) %1087)
          to label %1088 unwind label %1121

1088:                                             ; preds = %1085
  %1089 = load ptr, ptr %12, align 8, !tbaa !5
  %1090 = getelementptr inbounds %struct.MonomorphState, ptr %1089, i32 0, i32 1
  %1091 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1090, ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %1092 unwind label %1125

1092:                                             ; preds = %1088
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  %1093 = load ptr, ptr %83, align 8, !tbaa !5
  %1094 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %1093, i32 0, i32 3
  %1095 = load ptr, ptr %12, align 8, !tbaa !5
  %1096 = getelementptr inbounds %struct.MonomorphState, ptr %1095, i32 0, i32 2
  store ptr %1094, ptr %1096, align 8, !tbaa !32
  %1097 = load ptr, ptr %83, align 8, !tbaa !5
  %1098 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %1097, i32 0, i32 2
  %1099 = load ptr, ptr %12, align 8, !tbaa !5
  %1100 = getelementptr inbounds %struct.MonomorphState, ptr %1099, i32 0, i32 3
  store ptr %1098, ptr %1100, align 8, !tbaa !53
  store i1 false, ptr %85, align 1
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %1101 unwind label %1081

1101:                                             ; preds = %1092
  %1102 = getelementptr inbounds i8, ptr %95, i64 8
  %1103 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1102, i32 0, i32 0
  %1104 = load ptr, ptr %1103, align 8, !tbaa !13
  %1105 = load ptr, ptr %83, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %1105, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #9
  call void @llvm.memset.p0.i64(ptr align 8 %86, i8 0, i64 8, i1 false)
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %88) #9
  %1107 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 0
  %1108 = load ptr, ptr %83, align 8, !tbaa !5
  store ptr %1108, ptr %1107, align 8, !tbaa !5
  %1109 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 1
  %1110 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1110, ptr %1109, align 8, !tbaa !5
  %1111 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 2
  %1112 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1112, ptr %1111, align 8, !tbaa !5
  %1113 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 3
  store ptr %14, ptr %1113, align 8, !tbaa !5
  %1114 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 4
  %1115 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1115, ptr %1114, align 8, !tbaa !5
  %1116 = getelementptr inbounds %class.anon.670, ptr %88, i32 0, i32 5
  store ptr %0, ptr %1116, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR8TypeImplEEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKNS0_4PathER14MonomorphStatebPPKNS0_13GenericParamsEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(48) %88)
          to label %1117 unwind label %1130

1117:                                             ; preds = %1101
  %1118 = invoke noundef zeroext i1 @_ZNK3HIR5Crate15find_type_implsERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_8TypeImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %1104, ptr noundef nonnull align 8 dereferenceable(8) %1106, ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef %87)
          to label %1119 unwind label %1134

1119:                                             ; preds = %1117
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  store i1 true, ptr %85, align 1
  store i32 1, ptr %22, align 4
  %1120 = load i1, ptr %85, align 1
  br i1 %1120, label %1140, label %1139

1121:                                             ; preds = %1085
  %1122 = landingpad { ptr, i32 }
          cleanup
  %1123 = extractvalue { ptr, i32 } %1122, 0
  store ptr %1123, ptr %18, align 8
  %1124 = extractvalue { ptr, i32 } %1122, 1
  store i32 %1124, ptr %19, align 4
  br label %1129

1125:                                             ; preds = %1088
  %1126 = landingpad { ptr, i32 }
          cleanup
  %1127 = extractvalue { ptr, i32 } %1126, 0
  store ptr %1127, ptr %18, align 8
  %1128 = extractvalue { ptr, i32 } %1126, 1
  store i32 %1128, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  br label %1129

1129:                                             ; preds = %1125, %1121
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %1144

1130:                                             ; preds = %1101
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %18, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %19, align 4
  br label %1138

1134:                                             ; preds = %1117
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %18, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %1138

1138:                                             ; preds = %1134, %1130
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #9
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #9
  br label %1144

1139:                                             ; preds = %1119
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #9
  br label %1140

1140:                                             ; preds = %1139, %1119
  br label %1142

1141:                                             ; No predecessors!
  store i8 0, ptr %82, align 1, !tbaa !9
  br label %1076, !llvm.loop !116

1142:                                             ; preds = %1140, %1080
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  %1143 = load i32, ptr %22, align 4
  switch i32 %1143, label %1147 [
    i32 67, label %1145
  ]

1144:                                             ; preds = %1138, %1129, %1081
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #9
  br label %1201

1145:                                             ; preds = %1142
  br label %1146

1146:                                             ; preds = %1145
  store i8 0, ptr %82, align 1, !tbaa !9
  br label %1067, !llvm.loop !117

1147:                                             ; preds = %1142, %1070
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #9
  %1148 = load i32, ptr %22, align 4
  switch i32 %1148, label %1200 [
    i32 64, label %1149
  ]

1149:                                             ; preds = %1147
  br label %1198

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

1151:                                             ; preds = %1196, %1150
  %1152 = load i8, ptr %89, align 1, !tbaa !9, !range !11, !noundef !12
  %1153 = trunc i8 %1152 to i1
  br i1 %1153, label %1155, label %1154

1154:                                             ; preds = %1151
  store i32 70, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %1197

1155:                                             ; preds = %1151
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %1156 = load ptr, ptr %11, align 8, !tbaa !5
  %1157 = getelementptr inbounds %"class.HIR::Path", ptr %1156, i32 0, i32 0
  %1158 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %1157)
          to label %1159 unwind label %1165

1159:                                             ; preds = %1155
  store ptr %1158, ptr %90, align 8, !tbaa !5
  br label %1160

1160:                                             ; preds = %1193, %1159
  %1161 = load ptr, ptr %90, align 8, !tbaa !5
  %1162 = load i8, ptr %89, align 1, !tbaa !9, !range !11, !noundef !12
  %1163 = trunc i8 %1162 to i1
  br i1 %1163, label %1169, label %1164

1164:                                             ; preds = %1160
  store i32 73, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %1195

1165:                                             ; preds = %1177, %1155
  %1166 = landingpad { ptr, i32 }
          cleanup
  %1167 = extractvalue { ptr, i32 } %1166, 0
  store ptr %1167, ptr %18, align 8
  %1168 = extractvalue { ptr, i32 } %1166, 1
  store i32 %1168, ptr %19, align 4
  br label %1194

1169:                                             ; preds = %1160
  br label %1170

1170:                                             ; preds = %1169
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %1171 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %1171)
          to label %1172 unwind label %1178

1172:                                             ; preds = %1170
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %1173 = getelementptr inbounds %class.anon.671, ptr %93, i32 0, i32 0
  %1174 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1174, ptr %1173, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %92)
          to label %1175 unwind label %1182

1175:                                             ; preds = %1172
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  %1176 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1176, ptr noundef @.str)
          to label %1177 unwind label %1187

1177:                                             ; preds = %1175
  invoke void @__cxa_throw(ptr %1176, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1208 unwind label %1165

1178:                                             ; preds = %1170
  %1179 = landingpad { ptr, i32 }
          cleanup
  %1180 = extractvalue { ptr, i32 } %1179, 0
  store ptr %1180, ptr %18, align 8
  %1181 = extractvalue { ptr, i32 } %1179, 1
  store i32 %1181, ptr %19, align 4
  br label %1186

1182:                                             ; preds = %1172
  %1183 = landingpad { ptr, i32 }
          cleanup
  %1184 = extractvalue { ptr, i32 } %1183, 0
  store ptr %1184, ptr %18, align 8
  %1185 = extractvalue { ptr, i32 } %1183, 1
  store i32 %1185, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  br label %1186

1186:                                             ; preds = %1182, %1178
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1194

1187:                                             ; preds = %1175
  %1188 = landingpad { ptr, i32 }
          cleanup
  %1189 = extractvalue { ptr, i32 } %1188, 0
  store ptr %1189, ptr %18, align 8
  %1190 = extractvalue { ptr, i32 } %1188, 1
  store i32 %1190, ptr %19, align 4
  call void @__cxa_free_exception(ptr %1176) #9
  br label %1194

1191:                                             ; No predecessors!
  br label %1192

1192:                                             ; preds = %1191
  br label %1193

1193:                                             ; preds = %1192
  store i8 0, ptr %89, align 1, !tbaa !9
  br label %1160, !llvm.loop !118

1194:                                             ; preds = %1187, %1186, %1165
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %1201

1195:                                             ; preds = %1164
  br label %1196

1196:                                             ; preds = %1195
  store i8 0, ptr %89, align 1, !tbaa !9
  br label %1151, !llvm.loop !119

1197:                                             ; preds = %1154
  br label %1198

1198:                                             ; preds = %1197, %1149, %1065, %466, %110
  %1199 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str.74, ptr %1199, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1199, ptr @_ZTIPKc, ptr null) #11
          to label %1208 unwind label %124

1200:                                             ; preds = %1147, %1063, %464
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  ret void

1201:                                             ; preds = %1194, %1144, %1060, %461, %124, %123
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #9
  br label %1202

1202:                                             ; preds = %1201, %111
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #9
  br label %1203

1203:                                             ; preds = %1202
  %1204 = load ptr, ptr %18, align 8
  %1205 = load i32, ptr %19, align 4
  %1206 = insertvalue { ptr, i32 } poison, ptr %1204, 0
  %1207 = insertvalue { ptr, i32 } %1206, i32 %1205, 1
  resume { ptr, i32 } %1207

1208:                                             ; preds = %1198, %1177, %1051, %1020, %963, %454, %385, %302
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

declare noundef nonnull align 8 dereferenceable(408) ptr @_ZNK3HIR5Crate20get_typeitem_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext, i1 noundef zeroext) #2

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

declare noundef i64 @_ZNK3HIR4Enum12find_variantERK8RcString(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40)) #7 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3HIR5Crate19get_valitem_by_pathERK4SpanRKNS_10SimplePathEb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind noalias writable sret(%"class.StaticTraitResolve::ValuePtr") align 8) #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #0 align 2

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

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

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

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

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

declare noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7ImplRef4Data12is_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184)) #7 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR5Crate15find_type_implsERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_8TypeImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

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

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

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

attributes #0 = { 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 #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #4 = { 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 #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { 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 #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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 = !{!14, !6, i64 0}
!14 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !15, i64 24, !24, i64 72, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208}
!15 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!30 = !{!"_ZTSN3HIR10SimplePathE", !31, i64 0}
!31 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!32 = !{!33, !6, i64 104}
!33 = !{!"_ZTS14MonomorphState", !34, i64 0, !41, i64 96, !6, i64 104, !6, i64 112, !42, i64 120}
!34 = !{!"_ZTS15MonomorphiserPP", !35, i64 0}
!35 = !{!"_ZTS13Monomorphiser", !6, i64 8, !36, i64 16, !37, i64 72}
!36 = !{!"_ZTSN3HIR8ItemPathE", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!37 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!42 = !{!"_ZTSN3HIR10PathParamsE", !43, i64 0, !44, i64 8, !45, i64 16}
!43 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!44 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!45 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!46 = !{!23, !23, i64 0}
!47 = !{!48, !6, i64 0}
!48 = !{!"_ZTSN18StaticTraitResolve8ValuePtr20Data_EnumConstructorE", !6, i64 0, !23, i64 8}
!49 = !{!48, !23, i64 8}
!50 = !{!51, !6, i64 0}
!51 = !{!"_ZTSN18StaticTraitResolve8ValuePtr14Data_EnumValueE", !6, i64 0, !23, i64 8}
!52 = !{!51, !23, i64 8}
!53 = !{!33, !6, i64 112}
!54 = !{!55, !6, i64 0}
!55 = !{!"_ZTSN18StaticTraitResolve8ValuePtr22Data_StructConstructorE", !6, i64 0, !6, i64 8}
!56 = !{!55, !6, i64 8}
!57 = distinct !{!57, !58}
!58 = !{!"llvm.loop.mustprogress"}
!59 = distinct !{!59, !58}
!60 = !{!61, !61, i64 0}
!61 = !{!"int", !7, i64 0}
!62 = !{!63, !98, i64 224}
!63 = !{!"_ZTSN3HIR8ConstantE", !64, i64 0, !41, i64 96, !81, i64 104, !89, i64 176, !98, i64 224, !99, i64 232}
!64 = !{!"_ZTSN3HIR13GenericParamsE", !65, i64 0, !69, i64 24, !73, i64 48, !77, i64 72}
!65 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSN3HIR7ExprPtrE", !82, i64 0, !83, i64 8, !83, i64 32, !87, i64 56, !88, i64 64}
!82 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!83 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!88 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!89 = !{!"_ZTS14EncodedLiteral", !90, i64 0, !94, i64 24}
!90 = !{!"_ZTSSt6vectorIhSaIhEE", !91, i64 0}
!91 = !{!"_ZTSSt12_Vector_baseIhSaIhEE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE12_Vector_implE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIhSaIhEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!94 = !{!"_ZTSSt6vectorI5RelocSaIS0_EE", !95, i64 0}
!95 = !{!"_ZTSSt12_Vector_baseI5RelocSaIS0_EE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE12_Vector_implE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseI5RelocSaIS0_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!98 = !{!"_ZTSN3HIR8Constant10ValueStateE", !7, i64 0}
!99 = !{!"_ZTSSt3mapIN3HIR4PathE14EncodedLiteralSt4lessIS1_ESaISt4pairIKS1_S2_EEE", !100, i64 0}
!100 = !{!"_ZTSSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE", !101, i64 0}
!101 = !{!"_ZTSNSt8_Rb_treeIN3HIR4PathESt4pairIKS1_14EncodedLiteralESt10_Select1stIS5_ESt4lessIS1_ESaIS5_EE13_Rb_tree_implIS9_Lb1EEE", !102, i64 0, !20, i64 8}
!102 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR4PathEEE", !103, i64 0}
!103 = !{!"_ZTSSt4lessIN3HIR4PathEE"}
!104 = distinct !{!104, !58}
!105 = distinct !{!105, !58}
!106 = distinct !{!106, !58}
!107 = distinct !{!107, !58}
!108 = distinct !{!108, !58}
!109 = distinct !{!109, !58}
!110 = distinct !{!110, !58}
!111 = distinct !{!111, !58}
!112 = !{!113, !6, i64 40}
!113 = !{!"_ZTSN7ImplRef4Data14Data_TraitImplE", !42, i64 0, !6, i64 24, !6, i64 32, !6, i64 40, !41, i64 48}
!114 = distinct !{!114, !58}
!115 = distinct !{!115, !58}
!116 = distinct !{!116, !58}
!117 = distinct !{!117, !58}
!118 = distinct !{!118, !58}
!119 = distinct !{!119, !58}


; 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 }
%"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.StaticTraitResolve::ValuePtr" = type { i32, %"union.StaticTraitResolve::ValuePtr::DataUnion" }
%"union.StaticTraitResolve::ValuePtr::DataUnion" = type { %"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" }
%"struct.StaticTraitResolve::ValuePtr::Data_EnumConstructor" = type { ptr, i64 }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"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.643 = type { ptr, ptr }
%struct.MonomorphState = type { %class.MonomorphiserPP, %"class.HIR::TypeRef", ptr, ptr, %"struct.HIR::PathParams" }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::span" = type { ptr, i64 }
%struct.Span = type { ptr }
%class.anon.660 = type { i8 }
%class.anon.662 = type { ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"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::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.663 = type { ptr, ptr, ptr, ptr }
%class.anon.664 = type { ptr, ptr }
%class.anon.665 = type { i8 }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"class.std::function.667" = type { %"class.std::_Function_base", ptr }
%class.anon.670 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.671 = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.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
@.str.74 = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE = external hidden unnamed_addr constant [10 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE = external hidden unnamed_addr constant [153 x i8], align 1
@.str.90 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [52 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

; 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8) local_unnamed_addr #5 align 2

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

declare noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE(ptr dead_on_unwind noalias writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0, ptr noundef nonnull align 8 dereferenceable(424) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(88) %3, ptr noundef nonnull align 8 dereferenceable(144) %4, i1 noundef zeroext %5, ptr noundef %6) local_unnamed_addr #0 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca i8, align 1
  %9 = alloca ptr, align 8
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function.0", align 8
  %12 = alloca %class.anon.643, align 8
  %13 = alloca %struct.MonomorphState, align 8
  %14 = alloca %"class.std::span", align 8
  %15 = alloca %"class.std::span", align 8
  %16 = alloca %"class.HIR::TypeRef", align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function.0", align 8
  %19 = alloca %class.anon.660, align 1
  %20 = alloca ptr, align 8
  %21 = alloca %struct.Span, align 8
  %22 = alloca %"class.std::function.0", align 8
  %23 = alloca %class.anon.662, align 8
  %24 = alloca %"struct.HIR::SimplePath", align 8
  %25 = alloca %"class.HIR::TypeRef", align 8
  %26 = alloca i8, align 1
  %27 = alloca %struct.ImplRef, align 8
  %28 = alloca %"class.StaticTraitResolve::ValuePtr", align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.663, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function.0", align 8
  %34 = alloca %class.anon.664, align 8
  %35 = alloca %"struct.HIR::PathParams", align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function.0", align 8
  %38 = alloca %class.anon.665, align 1
  %39 = alloca %"class.HIR::TypeRef", align 8
  %40 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %41 = alloca %"class.std::function.667", align 8
  %42 = alloca %class.anon.670, align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function.0", align 8
  %45 = alloca %class.anon.671, align 8
  %46 = zext i1 %5 to i8
  store i8 %46, ptr %8, align 1, !tbaa !5
  store ptr %6, ptr %9, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #8
  %47 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %48 = select i1 %47, ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %12) #8
  store ptr %3, ptr %12, align 8, !tbaa !9
  %49 = getelementptr inbounds i8, ptr %12, i64 8
  store ptr %8, ptr %49, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %48, ptr noundef nonnull %11)
          to label %50 unwind label %55

50:                                               ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %13) #8
  invoke void @_ZN14MonomorphStateC2Ev(ptr noundef nonnull align 8 dereferenceable(144) %13)
          to label %51 unwind label %57

51:                                               ; preds = %50
  %52 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZN14MonomorphStateaSEOS_(ptr noundef nonnull align 8 dereferenceable(144) %4, ptr noundef nonnull align 8 dereferenceable(144) %13)
          to label %53 unwind label %59

53:                                               ; preds = %51
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %13) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %13) #8
  %54 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  switch i32 %54, label %488 [
    i32 0, label %64
    i32 1, label %65
    i32 3, label %190
    i32 2, label %444
    i32 4, label %473
  ]

55:                                               ; preds = %7
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %12) #8
  br label %491

57:                                               ; preds = %50
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %61

59:                                               ; preds = %51
  %60 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN14MonomorphStateD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %13) #8
  br label %61

61:                                               ; preds = %59, %57
  %.pn = phi { ptr, i32 } [ %60, %59 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %13) #8
  br label %490

62:                                               ; preds = %488
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %490

64:                                               ; preds = %53
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 3158, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #9
  unreachable

65:                                               ; preds = %53
  %66 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  %67 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %68 unwind label %82

68:                                               ; preds = %65
  %69 = extractvalue { ptr, i64 } %67, 0
  store ptr %69, ptr %14, align 8
  %70 = getelementptr inbounds i8, ptr %14, i64 8
  %71 = extractvalue { ptr, i64 } %67, 1
  store i64 %71, ptr %70, align 8
  %72 = call noundef i64 @_ZNKSt4spanIK8RcStringE4sizeEv(ptr noundef nonnull align 8 dereferenceable(16) %14)
  %73 = icmp ugt i64 %72, 1
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br i1 %73, label %74, label %.critedge309

74:                                               ; preds = %68
  %75 = getelementptr inbounds i8, ptr %1, i64 8
  %76 = load ptr, ptr %75, align 8, !tbaa !11
  %77 = invoke noundef nonnull align 8 dereferenceable(408) ptr @_ZNK3HIR5Crate20get_typeitem_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944) %76, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %66, i1 noundef zeroext false, i1 noundef zeroext true)
          to label %78 unwind label %84

78:                                               ; preds = %74
  %79 = call noundef ptr @_ZNK3HIR8TypeItem8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(408) %77)
  %.not286 = icmp eq ptr %79, null
  br i1 %.not286, label %.critedge309, label %80

80:                                               ; preds = %78
  %.not287 = icmp eq ptr %6, null
  br i1 %.not287, label %86, label %81

81:                                               ; preds = %80
  store ptr %79, ptr %6, align 8, !tbaa !9
  br label %86

82:                                               ; preds = %65
  %83 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %490

84:                                               ; preds = %74
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %490

86:                                               ; preds = %81, %80
  %87 = getelementptr inbounds i8, ptr %66, i64 8
  %88 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %87, ptr %88, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #8
  %89 = invoke { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8) %66)
          to label %90 unwind label %107

90:                                               ; preds = %86
  %91 = extractvalue { ptr, i64 } %89, 0
  store ptr %91, ptr %15, align 8
  %92 = getelementptr inbounds i8, ptr %15, i64 8
  %93 = extractvalue { ptr, i64 } %89, 1
  store i64 %93, ptr %92, align 8
  %94 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt4spanIK8RcStringE4backEv(ptr noundef nonnull align 8 dereferenceable(16) %15)
  %95 = invoke noundef i64 @_ZNK3HIR4Enum12find_variantERK8RcString(ptr noundef nonnull align 8 dereferenceable(200) %79, ptr noundef nonnull align 8 dereferenceable(8) %94)
          to label %96 unwind label %107

96:                                               ; preds = %90
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  %97 = getelementptr inbounds i8, ptr %79, i64 104
  %98 = call noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %97)
  br i1 %98, label %99, label %116

99:                                               ; preds = %96
  %100 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %97)
  %101 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %100, i64 noundef %95) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %16)
          to label %102 unwind label %111

102:                                              ; preds = %99
  %103 = getelementptr inbounds i8, ptr %101, i64 16
  %104 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %105 unwind label %113

105:                                              ; preds = %102
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br i1 %104, label %106, label %116

106:                                              ; preds = %105
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_20Data_EnumConstructorE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr nonnull %79, i64 %95)
          to label %.critedge311 unwind label %109

107:                                              ; preds = %90, %86
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  br label %490

109:                                              ; preds = %116, %106
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %490

111:                                              ; preds = %99
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %115

113:                                              ; preds = %102
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %115

115:                                              ; preds = %113, %111
  %.pn288 = phi { ptr, i32 } [ %114, %113 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %490

116:                                              ; preds = %105, %96
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_14Data_EnumValueE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr nonnull %79, i64 %95)
          to label %.critedge311 unwind label %109

.critedge309:                                     ; preds = %78, %68
  %117 = getelementptr inbounds i8, ptr %1, i64 8
  %118 = load ptr, ptr %117, align 8, !tbaa !11
  %119 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3HIR5Crate19get_valitem_by_pathERK4SpanRKNS_10SimplePathEb(ptr noundef nonnull align 8 dereferenceable(944) %118, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %66, i1 noundef zeroext false)
          to label %120 unwind label %122

120:                                              ; preds = %.critedge309
  %121 = call noundef i32 @_ZNK3HIR9ValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  switch i32 %121, label %188 [
    i32 0, label %124
    i32 1, label %125
    i32 2, label %140
    i32 3, label %146
    i32 5, label %152
    i32 4, label %158
    i32 6, label %177
  ]

122:                                              ; preds = %188, %.critedge309
  %123 = landingpad { ptr, i32 }
          cleanup
  br label %490

124:                                              ; preds = %120
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 3207, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #9
  unreachable

125:                                              ; preds = %120
  %126 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR9ValueItem9as_ImportEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %127 unwind label %133

127:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %128 unwind label %135

128:                                              ; preds = %127
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  %129 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %129, ptr noundef nonnull @.str)
          to label %130 unwind label %138

130:                                              ; preds = %128
  invoke void @__cxa_throw(ptr nonnull %129, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %492 unwind label %131

131:                                              ; preds = %130
  %132 = landingpad { ptr, i32 }
          cleanup
  br label %490

133:                                              ; preds = %125
  %134 = landingpad { ptr, i32 }
          cleanup
  br label %137

135:                                              ; preds = %127
  %136 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %137

137:                                              ; preds = %135, %133
  %.pn298 = phi { ptr, i32 } [ %136, %135 ], [ %134, %133 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %490

138:                                              ; preds = %128
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %129) #8
  br label %490

140:                                              ; preds = %120
  %141 = call noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR9ValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  %142 = getelementptr inbounds i8, ptr %66, i64 8
  %143 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %142, ptr %143, align 8, !tbaa !44
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %141)
          to label %.critedge311 unwind label %144

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

146:                                              ; preds = %120
  %147 = call noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR9ValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  %148 = getelementptr inbounds i8, ptr %66, i64 8
  %149 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %148, ptr %149, align 8, !tbaa !44
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR6StaticE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %147)
          to label %.critedge311 unwind label %150

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

152:                                              ; preds = %120
  %153 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR9ValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  %154 = getelementptr inbounds i8, ptr %66, i64 8
  %155 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %154, ptr %155, align 8, !tbaa !44
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %153)
          to label %.critedge311 unwind label %156

156:                                              ; preds = %152
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %490

158:                                              ; preds = %120
  %159 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ValueItem17as_StructConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  %160 = getelementptr inbounds i8, ptr %66, i64 8
  %161 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %160, ptr %161, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr %20, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %162 unwind label %167

162:                                              ; preds = %158
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %23) #8
  store ptr %20, ptr %23, align 8, !tbaa !9
  %163 = getelementptr inbounds i8, ptr %23, i64 8
  store ptr %3, ptr %163, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(16) %23) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %22)
          to label %164 unwind label %169

164:                                              ; preds = %162
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  %165 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %165, ptr noundef nonnull @.str.3)
          to label %166 unwind label %172

166:                                              ; preds = %164
  invoke void @__cxa_throw(ptr nonnull %165, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %492 unwind label %174

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

169:                                              ; preds = %162
  %170 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %23) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %171

171:                                              ; preds = %169, %167
  %.pn294 = phi { ptr, i32 } [ %170, %169 ], [ %168, %167 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %176

172:                                              ; preds = %164
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %165) #8
  br label %176

174:                                              ; preds = %166
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %176

176:                                              ; preds = %174, %172, %171
  %.pn296 = phi { ptr, i32 } [ %175, %174 ], [ %173, %172 ], [ %.pn294, %171 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %490

177:                                              ; preds = %120
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ValueItem20as_StructConstructorEv(ptr noundef nonnull align 8 dereferenceable(368) %119)
  %179 = getelementptr inbounds i8, ptr %66, i64 8
  %180 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %179, ptr %180, align 8, !tbaa !30
  %181 = load ptr, ptr %117, align 8, !tbaa !11
  %182 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %181, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %178)
          to label %183 unwind label %185

183:                                              ; preds = %177
  %.not293 = icmp eq ptr %6, null
  br i1 %.not293, label %187, label %184

184:                                              ; preds = %183
  store ptr %182, ptr %6, align 8, !tbaa !9
  br label %187

185:                                              ; preds = %187, %177
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %490

187:                                              ; preds = %184, %183
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2ENS0_22Data_StructConstructorE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr nonnull %178, ptr nonnull %182)
          to label %.critedge311 unwind label %185

188:                                              ; preds = %120
  %189 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.74, ptr %189, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %189, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %492 unwind label %122

190:                                              ; preds = %53
  %191 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  %192 = getelementptr inbounds i8, ptr %191, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %195 unwind label %214

193:                                              ; preds = %219, %212, %210, %208, %205, %202
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %490

195:                                              ; preds = %190
  %196 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %197 unwind label %216

197:                                              ; preds = %195
  br i1 %196, label %198, label %.critedge

198:                                              ; preds = %197
  %199 = getelementptr inbounds i8, ptr %191, i64 40
  %200 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull @.str.90)
          to label %201 unwind label %216

201:                                              ; preds = %198
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br i1 %200, label %202, label %220

202:                                              ; preds = %201
  %203 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %204 unwind label %193

204:                                              ; preds = %202
  br i1 %203, label %205, label %219

205:                                              ; preds = %204
  %206 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %206, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %208 unwind label %193

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

210:                                              ; preds = %208
  %211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %212 unwind label %193

212:                                              ; preds = %210
  %213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %219 unwind label %193

214:                                              ; preds = %190
  %215 = landingpad { ptr, i32 }
          cleanup
  br label %218

216:                                              ; preds = %198, %195
  %217 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %218

218:                                              ; preds = %216, %214
  %.pn258 = phi { ptr, i32 } [ %217, %216 ], [ %215, %214 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %490

219:                                              ; preds = %212, %204
  invoke void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0)
          to label %.critedge311 unwind label %193

.critedge:                                        ; preds = %197
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %220

220:                                              ; preds = %.critedge, %201
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %25, ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %221 unwind label %254

221:                                              ; preds = %220
  %222 = getelementptr inbounds i8, ptr %4, i64 96
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %222, ptr noundef nonnull align 8 dereferenceable(8) %25)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  %224 = getelementptr inbounds i8, ptr %191, i64 16
  %225 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %224, ptr %225, align 8, !tbaa !30
  %226 = getelementptr inbounds i8, ptr %191, i64 48
  %227 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %226, ptr %227, align 8, !tbaa !44
  %228 = getelementptr inbounds i8, ptr %1, i64 8
  %229 = load ptr, ptr %228, align 8, !tbaa !11
  %230 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %229, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %192)
          to label %231 unwind label %256

231:                                              ; preds = %221
  %232 = getelementptr inbounds i8, ptr %230, i64 192
  %233 = getelementptr inbounds i8, ptr %191, i64 40
  %234 = invoke noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(56) %232, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %235 unwind label %256

235:                                              ; preds = %231
  %.not = icmp eq i64 %234, 0
  br i1 %.not, label %236, label %259

236:                                              ; preds = %235
  %237 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %238 unwind label %256

238:                                              ; preds = %236
  br i1 %237, label %239, label %258

239:                                              ; preds = %238
  %240 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %241 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %240, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %242 unwind label %256

242:                                              ; preds = %239
  %243 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %241, ptr noundef nonnull @.str.92)
          to label %244 unwind label %256

244:                                              ; preds = %242
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %246 unwind label %256

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull @.str.93)
          to label %248 unwind label %256

248:                                              ; preds = %246
  %249 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %247, ptr noundef nonnull align 8 dereferenceable(8) %192)
          to label %250 unwind label %256

250:                                              ; preds = %248
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %252 unwind label %256

252:                                              ; preds = %250
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %258 unwind label %256

254:                                              ; preds = %220
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  br label %490

256:                                              ; preds = %258, %252, %250, %248, %246, %244, %242, %239, %236, %231, %221
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %490

258:                                              ; preds = %252, %238
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %.critedge311 unwind label %256

259:                                              ; preds = %235
  %.not260 = icmp eq ptr %6, null
  br i1 %.not260, label %261, label %260

260:                                              ; preds = %259
  store ptr %230, ptr %6, align 8, !tbaa !9
  br label %261

261:                                              ; preds = %260, %259
  %262 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %232, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %263 unwind label %268

263:                                              ; preds = %261
  %264 = load i8, ptr %8, align 1, !tbaa !5, !range !47, !noundef !48
  %265 = trunc nuw i8 %264 to i1
  br i1 %265, label %266, label %283

266:                                              ; preds = %263
  %267 = call noundef i32 @_ZNK3HIR14TraitValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  switch i32 %267, label %442 [
    i32 0, label %270
    i32 1, label %271
    i32 2, label %275
    i32 3, label %279
  ]

268:                                              ; preds = %442, %261
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %490

270:                                              ; preds = %266
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 3236, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #9
  unreachable

271:                                              ; preds = %266
  %272 = call noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR14TraitValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %272)
          to label %.critedge311 unwind label %273

273:                                              ; preds = %271
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %490

275:                                              ; preds = %266
  %276 = call noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR14TraitValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR6StaticE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %276)
          to label %.critedge311 unwind label %277

277:                                              ; preds = %275
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %490

279:                                              ; preds = %266
  %280 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %280)
          to label %.critedge311 unwind label %281

281:                                              ; preds = %279
  %282 = landingpad { ptr, i32 }
          cleanup
  br label %490

283:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #8
  store i8 0, ptr %26, align 1, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %27) #8
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27)
          to label %284 unwind label %300

284:                                              ; preds = %283
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %28) #8
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28)
          to label %285 unwind label %302

285:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %30) #8
  store ptr %191, ptr %30, align 8, !tbaa !9
  %286 = getelementptr inbounds i8, ptr %30, i64 8
  store ptr %27, ptr %286, align 8, !tbaa !9
  %287 = getelementptr inbounds i8, ptr %30, i64 16
  store ptr %26, ptr %287, align 8, !tbaa !9
  %288 = getelementptr inbounds i8, ptr %30, i64 24
  store ptr %28, ptr %288, align 8, !tbaa !9
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %289 unwind label %304

289:                                              ; preds = %285
  %290 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef nonnull %224, ptr noundef nonnull align 8 dereferenceable(8) %191, ptr noundef nonnull %29, i1 noundef zeroext false)
          to label %291 unwind label %306

291:                                              ; preds = %289
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  %292 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %27)
          to label %293 unwind label %309

293:                                              ; preds = %291
  br i1 %292, label %369, label %294

294:                                              ; preds = %293
  %295 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %191, i1 noundef zeroext true)
          to label %296 unwind label %309

296:                                              ; preds = %294
  br i1 %295, label %363, label %297

297:                                              ; preds = %296
  %298 = invoke noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24) %224, i1 noundef zeroext true)
          to label %299 unwind label %309

299:                                              ; preds = %297
  br i1 %298, label %363, label %.lr.ph371

300:                                              ; preds = %283
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %441

302:                                              ; preds = %284
  %303 = landingpad { ptr, i32 }
          cleanup
  br label %440

304:                                              ; preds = %285
  %305 = landingpad { ptr, i32 }
          cleanup
  br label %308

306:                                              ; preds = %289
  %307 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  br label %308

308:                                              ; preds = %306, %304
  %.pn261 = phi { ptr, i32 } [ %307, %306 ], [ %305, %304 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %30) #8
  br label %439

309:                                              ; preds = %.invoke389, %.invoke388, %.invoke387, %.invoke, %381, %378, %375, %372, %366, %363, %297, %294, %291
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %439

.lr.ph371:                                        ; preds = %299
  %311 = call noundef i32 @_ZNK3HIR14TraitValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  switch i32 %311, label %.invoke [
    i32 0, label %320
    i32 1, label %.preheader.split.split
    i32 2, label %.preheader337.split
    i32 3, label %.preheader339.split
  ]

.preheader339.split:                              ; preds = %.lr.ph371
  %312 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  %313 = getelementptr inbounds i8, ptr %312, i64 248
  %314 = getelementptr inbounds i8, ptr %312, i64 304
  %315 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %313)
          to label %348 unwind label %.loopexit332.split

.preheader337.split:                              ; preds = %.lr.ph371
  %316 = call noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR14TraitValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  br label %.invoke

.preheader.split.split:                           ; preds = %.lr.ph371
  %317 = call noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR14TraitValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368) %262)
  %318 = getelementptr inbounds i8, ptr %317, i64 104
  %319 = invoke noundef zeroext i1 @_ZNK3HIR7ExprPtrcvbEv(ptr noundef nonnull align 8 dereferenceable(72) %318)
          to label %321 unwind label %.loopexit329.split.split

320:                                              ; preds = %.lr.ph371
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 3307, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE) #9
  unreachable

.loopexit329.split.split:                         ; preds = %.preheader.split.split, %336, %339, %342, %344, %346
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %439

.loopexit.split-lp:                               ; preds = %.split352, %326, %329, %331, %333, %335
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %439

321:                                              ; preds = %.preheader.split.split
  %322 = getelementptr inbounds i8, ptr %317, i64 224
  %323 = load i32, ptr %322, align 8
  %.not263 = icmp ne i32 %323, 0
  %or.cond.not = select i1 %319, i1 true, i1 %.not263
  br i1 %or.cond.not, label %.split352, label %336

.split352:                                        ; preds = %321
  %324 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %325 unwind label %.loopexit.split-lp

325:                                              ; preds = %.split352
  br i1 %324, label %326, label %335

326:                                              ; preds = %325
  %327 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %327, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %329 unwind label %.loopexit.split-lp

329:                                              ; preds = %326
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %328, ptr noundef nonnull @.str.94)
          to label %331 unwind label %.loopexit.split-lp

331:                                              ; preds = %329
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %333 unwind label %.loopexit.split-lp

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %332, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %335 unwind label %.loopexit.split-lp

335:                                              ; preds = %333, %325
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8ConstantE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %317)
          to label %438 unwind label %.loopexit.split-lp

336:                                              ; preds = %321
  %337 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %338 unwind label %.loopexit329.split.split

338:                                              ; preds = %336
  br i1 %337, label %339, label %.invoke

339:                                              ; preds = %338
  %340 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %340, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %342 unwind label %.loopexit329.split.split

342:                                              ; preds = %339
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull @.str.95)
          to label %344 unwind label %.loopexit329.split.split

344:                                              ; preds = %342
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %343, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %346 unwind label %.loopexit329.split.split

346:                                              ; preds = %344
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke unwind label %.loopexit329.split.split

.loopexit332.split:                               ; preds = %.preheader339.split
  %lpad.loopexit385 = landingpad { ptr, i32 }
          cleanup
  br label %439

.loopexit.split-lp333:                            ; preds = %.split, %353, %356, %358, %360, %362
  %lpad.loopexit.split-lp335 = landingpad { ptr, i32 }
          cleanup
  br label %439

348:                                              ; preds = %.preheader339.split
  br i1 %315, label %.split, label %349

349:                                              ; preds = %348
  %350 = call noundef zeroext i1 @_ZNK3MIR15FunctionPointercvbEv(ptr noundef nonnull align 8 dereferenceable(8) %314)
  br i1 %350, label %.split, label %.invoke, !llvm.loop !49

.split:                                           ; preds = %349, %348
  %351 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %352 unwind label %.loopexit.split-lp333

352:                                              ; preds = %.split
  br i1 %351, label %353, label %362

353:                                              ; preds = %352
  %354 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %355 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %354, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %356 unwind label %.loopexit.split-lp333

356:                                              ; preds = %353
  %357 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull @.str.96)
          to label %358 unwind label %.loopexit.split-lp333

358:                                              ; preds = %356
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %360 unwind label %.loopexit.split-lp333

360:                                              ; preds = %358
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %362 unwind label %.loopexit.split-lp333

362:                                              ; preds = %360, %352
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2EPKN3HIR8FunctionE(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull %312)
          to label %438 unwind label %.loopexit.split-lp333

363:                                              ; preds = %296, %299
  %364 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %365 unwind label %309

365:                                              ; preds = %363
  br i1 %364, label %366, label %.invoke

366:                                              ; preds = %365
  %367 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %367, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %.invoke389 unwind label %309

369:                                              ; preds = %293
  %370 = load i8, ptr %26, align 1, !tbaa !5, !range !47, !noundef !48
  %371 = trunc nuw i8 %370 to i1
  br i1 %371, label %372, label %389

372:                                              ; preds = %369
  %373 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %191, i1 noundef zeroext true)
          to label %374 unwind label %309

374:                                              ; preds = %372
  br i1 %373, label %378, label %375

375:                                              ; preds = %374
  %376 = invoke noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24) %224, i1 noundef zeroext true)
          to label %377 unwind label %309

377:                                              ; preds = %375
  br i1 %376, label %378, label %389

378:                                              ; preds = %374, %377
  %379 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %380 unwind label %309

380:                                              ; preds = %378
  br i1 %379, label %381, label %.invoke

381:                                              ; preds = %380
  %382 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !45
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %382, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE)
          to label %.invoke389 unwind label %309

.invoke389:                                       ; preds = %381, %366
  %384 = phi ptr [ %368, %366 ], [ %383, %381 ]
  %385 = phi ptr [ @.str.97, %366 ], [ @.str.98, %381 ]
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull %385)
          to label %.invoke388 unwind label %309

.invoke388:                                       ; preds = %.invoke389
  %387 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %386, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke387 unwind label %309

.invoke387:                                       ; preds = %.invoke388
  %388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %387, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke unwind label %309

.invoke:                                          ; preds = %.invoke387, %380, %365, %349, %.preheader337.split, %.lr.ph371, %346, %338
  invoke void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind writable sret(%"class.StaticTraitResolve::ValuePtr") align 8 %0)
          to label %438 unwind label %309

389:                                              ; preds = %377, %369
  %390 = call noundef zeroext i1 @_ZNK7ImplRef4Data12is_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184) %27)
  br i1 %390, label %407, label %391

391:                                              ; preds = %389
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  store ptr @__func__._ZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS3_13GenericParamsE, ptr %31, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %392 unwind label %397

392:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %34) #8
  store ptr %31, ptr %34, align 8, !tbaa !9
  %393 = getelementptr inbounds i8, ptr %34, i64 8
  store ptr %3, ptr %393, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(16) %34) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull %33)
          to label %394 unwind label %399

394:                                              ; preds = %392
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  %395 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %395, ptr noundef nonnull @.str.3)
          to label %396 unwind label %402

396:                                              ; preds = %394
  invoke void @__cxa_throw(ptr nonnull %395, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %492 unwind label %404

397:                                              ; preds = %391
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %401

399:                                              ; preds = %392
  %400 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %34) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br label %401

401:                                              ; preds = %399, %397
  %.pn266 = phi { ptr, i32 } [ %400, %399 ], [ %398, %397 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #8
  br label %406

402:                                              ; preds = %394
  %403 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %395) #8
  br label %406

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

406:                                              ; preds = %404, %402, %401
  %.pn268 = phi { ptr, i32 } [ %405, %404 ], [ %403, %402 ], [ %.pn266, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  br label %439

407:                                              ; preds = %389
  %408 = call noundef nonnull align 8 dereferenceable(56) ptr @_ZN7ImplRef4Data12as_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184) %27)
  br i1 %.not260, label %414, label %409

409:                                              ; preds = %407
  %410 = getelementptr inbounds i8, ptr %408, i64 40
  %411 = load ptr, ptr %410, align 8, !tbaa !51
  store ptr %411, ptr %6, align 8, !tbaa !9
  br label %414

412:                                              ; preds = %424
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %439

414:                                              ; preds = %409, %407
  %415 = getelementptr inbounds i8, ptr %4, i64 120
  store ptr %415, ptr %225, align 8, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %35) #8
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %35, ptr noundef nonnull align 8 dereferenceable(24) %408)
          to label %416 unwind label %425

416:                                              ; preds = %414
  %417 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %415, ptr noundef nonnull align 8 dereferenceable(24) %35)
          to label %418 unwind label %427

418:                                              ; preds = %416
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #8
  %419 = call noundef zeroext i1 @_ZNK18StaticTraitResolve8ValuePtr11is_NotFoundEv(ptr noundef nonnull align 8 dereferenceable(24) %28)
  br i1 %419, label %420, label %437

420:                                              ; preds = %418
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %421 unwind label %430

421:                                              ; preds = %420
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %422 unwind label %432

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

424:                                              ; preds = %422
  invoke void @__cxa_throw(ptr nonnull %423, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %492 unwind label %412

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

427:                                              ; preds = %416
  %428 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %35) #8
  br label %429

429:                                              ; preds = %427, %425
  %.pn271 = phi { ptr, i32 } [ %428, %427 ], [ %426, %425 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %35) #8
  br label %439

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

432:                                              ; preds = %421
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %434

434:                                              ; preds = %432, %430
  %.pn273 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %439

435:                                              ; preds = %422
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %423) #8
  br label %439

437:                                              ; preds = %418
  call void @_ZN18StaticTraitResolve8ValuePtrC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %0, ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  br label %438

438:                                              ; preds = %.invoke, %362, %335, %437
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #8
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #8
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  br label %.critedge311

439:                                              ; preds = %.loopexit332.split, %.loopexit.split-lp333, %.loopexit329.split.split, %.loopexit.split-lp, %412, %429, %434, %435, %406, %309, %308
  %.pn277 = phi { ptr, i32 } [ %310, %309 ], [ %.pn268, %406 ], [ %.pn261, %308 ], [ %413, %412 ], [ %436, %435 ], [ %.pn273, %434 ], [ %.pn271, %429 ], [ %lpad.loopexit, %.loopexit329.split.split ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ], [ %lpad.loopexit385, %.loopexit332.split ], [ %lpad.loopexit.split-lp335, %.loopexit.split-lp333 ]
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %28) #8
  br label %440

440:                                              ; preds = %439, %302
  %.pn277.pn = phi { ptr, i32 } [ %.pn277, %439 ], [ %303, %302 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %28) #8
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #8
  br label %441

441:                                              ; preds = %440, %300
  %.pn277.pn.pn = phi { ptr, i32 } [ %.pn277.pn, %440 ], [ %301, %300 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  br label %490

442:                                              ; preds = %266
  %443 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.74, ptr %443, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %443, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %492 unwind label %268

444:                                              ; preds = %53
  %445 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %39, ptr noundef nonnull align 8 dereferenceable(8) %445)
          to label %448 unwind label %466

446:                                              ; preds = %448
  %447 = landingpad { ptr, i32 }
          cleanup
  br label %490

448:                                              ; preds = %444
  %449 = getelementptr inbounds i8, ptr %4, i64 96
  %450 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull align 8 dereferenceable(8) %39)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  %451 = getelementptr inbounds i8, ptr %445, i64 40
  %452 = getelementptr inbounds i8, ptr %4, i64 104
  store ptr %451, ptr %452, align 8, !tbaa !30
  %453 = getelementptr inbounds i8, ptr %445, i64 16
  %454 = getelementptr inbounds i8, ptr %4, i64 112
  store ptr %453, ptr %454, align 8, !tbaa !44
  invoke void @_ZN18StaticTraitResolve8ValuePtrC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0)
          to label %455 unwind label %446

455:                                              ; preds = %448
  %456 = getelementptr inbounds i8, ptr %1, i64 8
  %457 = load ptr, ptr %456, align 8, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  store i64 0, ptr %40, align 8
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42) #8
  store ptr %445, ptr %42, align 8, !tbaa !9
  %458 = getelementptr inbounds i8, ptr %42, i64 8
  store ptr %2, ptr %458, align 8, !tbaa !9
  %459 = getelementptr inbounds i8, ptr %42, i64 16
  store ptr %4, ptr %459, align 8, !tbaa !9
  %460 = getelementptr inbounds i8, ptr %42, i64 24
  store ptr %9, ptr %460, align 8, !tbaa !9
  %461 = getelementptr inbounds i8, ptr %42, i64 32
  store ptr %3, ptr %461, align 8, !tbaa !9
  %462 = getelementptr inbounds i8, ptr %42, i64 40
  store ptr %0, ptr %462, align 8, !tbaa !9
  invoke void @"_ZNSt8functionIFbRKN3HIR8TypeImplEEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKNS0_4PathER14MonomorphStatebPPKNS0_13GenericParamsEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(48) %42)
          to label %463 unwind label %468

463:                                              ; preds = %455
  %464 = invoke noundef zeroext i1 @_ZNK3HIR5Crate15find_type_implsERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_8TypeImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %457, ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull %41)
          to label %465 unwind label %470

465:                                              ; preds = %463
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %.critedge311

466:                                              ; preds = %444
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %490

468:                                              ; preds = %455
  %469 = landingpad { ptr, i32 }
          cleanup
  br label %472

470:                                              ; preds = %463
  %471 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %472

472:                                              ; preds = %470, %468
  %.pn255 = phi { ptr, i32 } [ %471, %470 ], [ %469, %468 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @_ZN18StaticTraitResolve8ValuePtrD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %0) #8
  br label %490

473:                                              ; preds = %53
  %474 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %3)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %477 unwind label %481

475:                                              ; preds = %480
  %476 = landingpad { ptr, i32 }
          cleanup
  br label %490

477:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store ptr %3, ptr %45, align 8, !tbaa !9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9get_valueERK4SpanRKN3HIR4PathER14MonomorphStatebPPKNS8_13GenericParamsEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %478 unwind label %483

478:                                              ; preds = %477
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  %479 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %479, ptr noundef nonnull @.str)
          to label %480 unwind label %486

480:                                              ; preds = %478
  invoke void @__cxa_throw(ptr nonnull %479, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %492 unwind label %475

481:                                              ; preds = %473
  %482 = landingpad { ptr, i32 }
          cleanup
  br label %485

483:                                              ; preds = %477
  %484 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %485

485:                                              ; preds = %483, %481
  %.pn251 = phi { ptr, i32 } [ %484, %483 ], [ %482, %481 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %490

486:                                              ; preds = %478
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %479) #8
  br label %490

488:                                              ; preds = %53
  %489 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str.74, ptr %489, align 16, !tbaa !9
  invoke void @__cxa_throw(ptr nonnull %489, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %492 unwind label %62

.critedge311:                                     ; preds = %258, %279, %275, %271, %438, %219, %116, %106, %140, %146, %152, %187, %465
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  ret void

490:                                              ; preds = %475, %485, %486, %446, %466, %472, %193, %218, %254, %268, %273, %277, %281, %441, %256, %82, %107, %109, %115, %84, %131, %137, %138, %185, %176, %156, %150, %144, %122, %62, %61
  %.pn305 = phi { ptr, i32 } [ %63, %62 ], [ %.pn, %61 ], [ %83, %82 ], [ %85, %84 ], [ %110, %109 ], [ %.pn288, %115 ], [ %108, %107 ], [ %123, %122 ], [ %186, %185 ], [ %.pn296, %176 ], [ %157, %156 ], [ %151, %150 ], [ %145, %144 ], [ %132, %131 ], [ %139, %138 ], [ %.pn298, %137 ], [ %194, %193 ], [ %255, %254 ], [ %.pn258, %218 ], [ %257, %256 ], [ %269, %268 ], [ %282, %281 ], [ %278, %277 ], [ %274, %273 ], [ %.pn277.pn.pn, %441 ], [ %.pn255, %472 ], [ %447, %446 ], [ %467, %466 ], [ %476, %475 ], [ %487, %486 ], [ %.pn251, %485 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  br label %491

491:                                              ; preds = %490, %55
  %.pn305.pn = phi { ptr, i32 } [ %.pn305, %490 ], [ %56, %55 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #8
  resume { ptr, i32 } %.pn305.pn

492:                                              ; preds = %488, %480, %442, %424, %396, %188, %166, %130
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, i64 } @_ZNK3HIR10SimplePath10componentsEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

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

declare noundef nonnull align 8 dereferenceable(408) ptr @_ZNK3HIR5Crate20get_typeitem_by_pathERK4SpanRKNS_10SimplePathEbb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #2

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

declare noundef i64 @_ZNK3HIR4Enum12find_variantERK8RcString(ptr noundef nonnull align 8 dereferenceable(200), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4Enum5Class7is_DataEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #6 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(368) ptr @_ZNK3HIR5Crate19get_valitem_by_pathERK4SpanRKNS_10SimplePathEb(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR9ValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR9ValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR9ValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR9ValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN18StaticTraitResolve8ValuePtr16make_NotYetKnownENS0_16Data_NotYetKnownE(ptr dead_on_unwind noalias writable sret(%"class.StaticTraitResolve::ValuePtr") align 8) local_unnamed_addr #0 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #0 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR14TraitValueItem3tagEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(280) ptr @_ZNK3HIR14TraitValueItem11as_ConstantEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(360) ptr @_ZNK3HIR14TraitValueItem9as_StaticEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #6 align 2

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

declare noundef zeroext i1 @_Z30monomorphise_pathparams_neededRKN3HIR10PathParamsEb(ptr noundef nonnull align 8 dereferenceable(24), i1 noundef zeroext) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK7ImplRef4Data12is_TraitImplEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR5Crate15find_type_implsERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_8TypeImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

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

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

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

attributes #0 = { 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 #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "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 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { 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 #7 = { 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 #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 = !{!"bool", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"any pointer", !7, i64 0}
!11 = !{!12, !10, i64 0}
!12 = !{!"_ZTS18TraitResolveCommon", !10, i64 0, !10, i64 8, !10, i64 16, !13, i64 24, !22, i64 72, !28, i64 104, !28, i64 112, !28, i64 120, !28, i64 128, !28, i64 136, !28, i64 144, !28, i64 152, !28, i64 160, !28, i64 168, !28, i64 176, !28, i64 184, !28, i64 192, !28, i64 200, !28, i64 208}
!13 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !14, i64 0}
!14 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !15, i64 0}
!15 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !16, i64 0, !18, i64 8}
!16 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !17, i64 0}
!17 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!18 = !{!"_ZTSSt15_Rb_tree_header", !19, i64 0, !21, i64 32}
!19 = !{!"_ZTSSt18_Rb_tree_node_base", !20, i64 0, !10, i64 8, !10, i64 16, !10, i64 24}
!20 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!21 = !{!"long", !7, i64 0}
!22 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !23, i64 0, !27, i64 24}
!23 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!27 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!28 = !{!"_ZTSN3HIR10SimplePathE", !29, i64 0}
!29 = !{!"_ZTS10ThinVectorI8RcStringE", !10, i64 0}
!30 = !{!31, !10, i64 104}
!31 = !{!"_ZTS14MonomorphState", !32, i64 0, !39, i64 96, !10, i64 104, !10, i64 112, !40, i64 120}
!32 = !{!"_ZTS15MonomorphiserPP", !33, i64 0}
!33 = !{!"_ZTS13Monomorphiser", !10, i64 8, !34, i64 16, !35, i64 72}
!34 = !{!"_ZTSN3HIR8ItemPathE", !10, i64 0, !10, i64 8, !10, i64 16, !10, i64 24, !10, i64 32, !10, i64 40, !10, i64 48}
!35 = !{!"_ZTSSt6vectorIPKN3HIR13GenericParamsESaIS3_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIPKN3HIR13GenericParamsESaIS3_EE17_Vector_impl_dataE", !10, i64 0, !10, i64 8, !10, i64 16}
!39 = !{!"_ZTSN3HIR7TypeRefE", !10, i64 0}
!40 = !{!"_ZTSN3HIR10PathParamsE", !41, i64 0, !42, i64 8, !43, i64 16}
!41 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !10, i64 0}
!42 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !10, i64 0}
!43 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !10, i64 0}
!44 = !{!31, !10, i64 112}
!45 = !{!46, !46, i64 0}
!46 = !{!"int", !7, i64 0}
!47 = !{i8 0, i8 2}
!48 = !{}
!49 = distinct !{!49, !50}
!50 = !{!"llvm.loop.mustprogress"}
!51 = !{!52, !10, i64 40}
!52 = !{!"_ZTSN7ImplRef4Data14Data_TraitImplE", !40, i64 0, !10, i64 24, !10, i64 32, !10, i64 40, !39, i64 48}


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