; 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::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 }
%"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.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.RcString = type { ptr }
%"class.std::vector.417" = type { %"struct.std::_Vector_base.418" }
%"struct.std::_Vector_base.418" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%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 = type { ptr, ptr, ptr }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = 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::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%class.anon.80 = type { i8 }
%"struct.std::pair.97" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.std::pair" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = 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.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 }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.262 = type { ptr, ptr, ptr }
%class.anon.263 = type { ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.264" = type { ptr, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.75" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::function.336" = type { %"class.std::_Function_base", ptr }
%class.anon.394 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%class.anon.396 = type { ptr, ptr, ptr, ptr }
%class.anon.397 = type { ptr }
%class.anon.398 = type { ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%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.anon.406 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"class.std::vector.408" = type { %"struct.std::_Vector_base.409" }
%"struct.std::_Vector_base.409" = type { %"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.413" = type { %"class.std::_Function_base", ptr }
%class.anon.416 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.422" = type { ptr }
%"class.std::tuple.423" = type { %"struct.std::_Tuple_impl.424" }
%"struct.std::_Tuple_impl.424" = type { %"struct.std::_Tuple_impl.425", %"struct.std::_Head_base.429" }
%"struct.std::_Tuple_impl.425" = type { %"struct.std::_Tuple_impl.426", %"struct.std::_Head_base.428" }
%"struct.std::_Tuple_impl.426" = type { %"struct.std::_Head_base.427" }
%"struct.std::_Head_base.427" = type { ptr }
%"struct.std::_Head_base.428" = type { ptr }
%"struct.std::_Head_base.429" = type { ptr }
%struct.Guard = type { i8 }
%"class.std::function.430" = type { %"class.std::_Function_base", ptr }
%class.anon.433 = type { ptr, ptr, ptr, ptr, ptr, 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 }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_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" }
%"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 }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.HIR::TypeData::Data_Closure" = type { ptr }
%"struct.HIR::ExprNode_Closure" = type { %"class.HIR::ExprNode.base", %"class.std::vector.266", %"class.HIR::TypeRef", %"class.std::unique_ptr.271", i8, i32, i8, %"struct.HIR::ExprNode_Closure::AvuCache", %"struct.HIR::LifetimeRef", ptr, %"class.HIR::GenericPath", %"class.HIR::GenericPath", %"class.std::vector.289" }
%"class.HIR::ExprNode.base" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32 }>
%"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 }
%"class.std::unique_ptr.271" = type { %"struct.std::__uniq_ptr_data.272" }
%"struct.std::__uniq_ptr_data.272" = type { %"class.std::__uniq_ptr_impl.273" }
%"class.std::__uniq_ptr_impl.273" = type { %"class.std::tuple.274" }
%"class.std::tuple.274" = type { %"struct.std::_Tuple_impl.275" }
%"struct.std::_Tuple_impl.275" = type { %"struct.std::_Head_base.278" }
%"struct.std::_Head_base.278" = type { ptr }
%"struct.HIR::ExprNode_Closure::AvuCache" = type { %"class.std::vector.279", %"class.std::vector.284" }
%"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 }
%"class.std::vector.284" = type { %"struct.std::_Vector_base.285" }
%"struct.std::_Vector_base.285" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::vector.289" = type { %"struct.std::_Vector_base.290" }
%"struct.std::_Vector_base.290" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.294" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.296", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.296" = type { %"struct.std::_Vector_base.297" }
%"struct.std::_Vector_base.297" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::PatternBinding, std::allocator<HIR::PatternBinding>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Pattern::Data" = type { i32, %"union.HIR::Pattern::Data::DataUnion" }
%"union.HIR::Pattern::Data::DataUnion" = type { %"struct.HIR::Pattern::Data::Data_PathValue", [64 x i8] }
%"struct.HIR::Pattern::Data::Data_PathValue" = type { %"class.HIR::Path", %"class.HIR::Pattern::PathBinding" }
%"class.HIR::Pattern::PathBinding" = type { i32, %"union.HIR::Pattern::PathBinding::DataUnion" }
%"union.HIR::Pattern::PathBinding::DataUnion" = type { %"struct.HIR::Pattern::PathBinding::Data_Enum" }
%"struct.HIR::Pattern::PathBinding::Data_Enum" = type { ptr, i32 }
%"struct.HIR::TypeData::Data_Generator" = type { ptr }
%"struct.HIR::ExprNode_Generator" = type { %"class.HIR::ExprNode.base", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.std::unique_ptr.271", i8, i8, %struct.anon, ptr, %"class.HIR::GenericPath", %"class.std::vector.289", %"class.HIR::TypeRef" }
%struct.anon = type { %"class.std::vector.279", %"class.std::vector.331" }
%"class.std::vector.331" = type { %"struct.std::_Vector_base.332" }
%"struct.std::_Vector_base.332" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.52", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.57", %"class.std::vector.62", %"class.HIR::TypeData_ErasedType_Inner" }
%"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.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeData_ErasedType_Inner" = type { i32, %"union.HIR::TypeData_ErasedType_Inner::DataUnion" }
%"union.HIR::TypeData_ErasedType_Inner::DataUnion" = type { %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", [56 x i8] }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Alias" = type { %"struct.HIR::PathParams", %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.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" }
%"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 }
%"struct.std::pair.399" = type { %class.RcString, %"struct.HIR::AssociatedType" }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.57", %"class.HIR::TypeRef" }
%"struct.HIR::GenericBound::Data_TraitBound" = type { %"class.std::unique_ptr", %"class.HIR::TypeRef", %"class.HIR::TraitPath" }
%"struct.HIR::TraitPath::AtyBound" = type { %"class.HIR::GenericPath", %"class.std::vector.57" }

@__dso_handle = external hidden global i8
@__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb = external hidden unnamed_addr constant [10 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls = external hidden global %"class.HIR::GenericParams", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc = external hidden global i64, align 8
@gTargetVersion = external global i32, align 4
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata = external hidden global %class.RcString, align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.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
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb = external hidden unnamed_addr constant [155 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack = external hidden global %"class.std::vector.417", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack = external hidden global i64, align 8
@.str.19 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5, i1 noundef zeroext %6) #1 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca i1, align 1
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca %class.TraceLog, align 8
  %17 = alloca %"class.std::function.0", align 8
  %18 = alloca %class.anon, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %22 = alloca %struct.ImplRef, align 8
  %23 = alloca i32, align 4
  %24 = alloca %struct.ImplRef, align 8
  %25 = alloca %struct.ImplRef, align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %"class.std::function.0", align 8
  %28 = alloca %class.anon.80, align 1
  %29 = alloca ptr, align 8
  %30 = alloca %struct.ImplRef, align 8
  %31 = alloca %struct.ImplRef, align 8
  %32 = alloca ptr, align 8
  %33 = alloca ptr, align 8
  %34 = alloca %"class.HIR::TypeRef", align 8
  %35 = alloca %"class.std::map", align 8
  %36 = alloca %"struct.std::pair.97", align 8
  %37 = alloca %class.RcString, align 8
  %38 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %39 = alloca %"struct.HIR::SimplePath", align 8
  %40 = alloca %"struct.std::pair", align 8
  %41 = alloca %struct.ImplRef, align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %"struct.HIR::PathParams", align 8
  %44 = alloca %"class.std::map", align 8
  %45 = alloca %"struct.std::pair.97", align 8
  %46 = alloca %class.RcString, align 8
  %47 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %48 = alloca %"struct.HIR::SimplePath", align 8
  %49 = alloca %"struct.std::pair", align 8
  %50 = alloca %struct.ImplRef, align 8
  %51 = alloca %class.RcString, align 8
  %52 = alloca %"struct.std::pair.97", align 8
  %53 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %54 = alloca %"struct.HIR::SimplePath", align 8
  %55 = alloca %"struct.std::pair", align 8
  %56 = alloca %"struct.std::pair.97", align 8
  %57 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %58 = alloca %"struct.HIR::SimplePath", align 8
  %59 = alloca %"struct.std::pair", align 8
  %60 = alloca %struct.ImplRef, align 8
  %61 = alloca %struct.ImplRef, align 8
  %62 = alloca %"class.std::map", align 8
  %63 = alloca %"struct.std::pair.97", align 8
  %64 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %65 = alloca %"struct.HIR::SimplePath", align 8
  %66 = alloca %"class.HIR::Path", align 8
  %67 = alloca %"class.HIR::GenericPath", align 8
  %68 = alloca %"struct.HIR::SimplePath", align 8
  %69 = alloca %"struct.HIR::PathParams", align 8
  %70 = alloca %"class.HIR::TypeRef", align 8
  %71 = alloca %"class.HIR::TypePathBinding", align 8
  %72 = alloca i1, align 1
  %73 = alloca %"struct.std::pair", align 8
  %74 = alloca %struct.ImplRef, align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"struct.HIR::PathParams", align 8
  %77 = alloca %"class.std::map", align 8
  %78 = alloca %struct.ImplRef, align 8
  %79 = alloca ptr, align 8
  %80 = alloca %struct.ImplRef, align 8
  %81 = alloca ptr, align 8
  %82 = alloca %"class.std::function", align 8
  %83 = alloca %class.anon.262, align 8
  %84 = alloca %struct.ImplRef, align 8
  %85 = alloca ptr, align 8
  %86 = alloca %struct.Span, align 8
  %87 = alloca %"class.std::function.0", align 8
  %88 = alloca %class.anon.263, align 8
  %89 = alloca %struct.ImplRef, align 8
  %90 = alloca ptr, align 8
  %91 = alloca %struct.ImplRef, align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca i1, align 1
  %95 = alloca i1, align 1
  %96 = alloca %struct.ImplRef, align 8
  %97 = alloca i8, align 1
  %98 = alloca ptr, align 8
  %99 = alloca i8, align 1
  %100 = alloca ptr, align 8
  %101 = alloca %struct.ImplRef, align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca %"struct.HIR::PathParams", align 8
  %104 = alloca %"class.std::map", align 8
  %105 = alloca i8, align 1
  %106 = alloca ptr, align 8
  %107 = alloca ptr, align 8
  %108 = alloca i32, align 4
  %109 = alloca %"class.std::vector.75", align 8
  %110 = alloca i32, align 4
  %111 = alloca %"class.HIR::TypeRef", align 8
  %112 = alloca %"struct.HIR::PathParams", align 8
  %113 = alloca %"class.HIR::TypeRef", align 8
  %114 = alloca %"class.std::vector.75", align 8
  %115 = alloca %"class.std::map", align 8
  %116 = alloca %"struct.std::pair.264", align 8
  %117 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %118 = alloca %"struct.HIR::SimplePath", align 8
  %119 = alloca %"struct.HIR::PathParams", align 8
  %120 = alloca %"struct.std::pair", align 8
  %121 = alloca %struct.ImplRef, align 8
  %122 = alloca %"class.HIR::GenericParams", align 8
  %123 = alloca %"class.HIR::TypeRef", align 8
  %124 = alloca %"struct.HIR::PathParams", align 8
  %125 = alloca %"class.std::map", align 8
  %126 = alloca %struct.ImplRef, align 8
  %127 = alloca %"class.HIR::TypeRef", align 8
  %128 = alloca %"struct.HIR::PathParams", align 8
  %129 = alloca %"class.std::map", align 8
  %130 = alloca i8, align 1
  %131 = alloca ptr, align 8
  %132 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %133 = alloca ptr, align 8
  %134 = alloca i32, align 4
  %135 = alloca %"class.std::vector.75", align 8
  %136 = alloca i32, align 4
  %137 = alloca %"class.HIR::TypeRef", align 8
  %138 = alloca %"struct.HIR::PathParams", align 8
  %139 = alloca %"class.HIR::TypeRef", align 8
  %140 = alloca %"class.std::vector.75", align 8
  %141 = alloca %"class.std::map", align 8
  %142 = alloca %"struct.std::pair.264", align 8
  %143 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %144 = alloca %"struct.HIR::SimplePath", align 8
  %145 = alloca %"struct.HIR::PathParams", align 8
  %146 = alloca %"struct.std::pair", align 8
  %147 = alloca %struct.ImplRef, align 8
  %148 = alloca %"class.HIR::GenericParams", align 8
  %149 = alloca %"class.HIR::TypeRef", align 8
  %150 = alloca %"struct.HIR::PathParams", align 8
  %151 = alloca %"class.std::map", align 8
  %152 = alloca i8, align 1
  %153 = alloca ptr, align 8
  %154 = alloca ptr, align 8
  %155 = alloca i32, align 4
  %156 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %157 = alloca %"class.std::map", align 8
  %158 = alloca %"struct.std::pair.264", align 8
  %159 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %160 = alloca %"struct.HIR::SimplePath", align 8
  %161 = alloca %"struct.HIR::PathParams", align 8
  %162 = alloca %"struct.std::pair", align 8
  %163 = alloca %struct.ImplRef, align 8
  %164 = alloca %"class.HIR::TypeRef", align 8
  %165 = alloca %"struct.HIR::PathParams", align 8
  %166 = alloca %"class.std::map", align 8
  %167 = alloca i8, align 1
  %168 = alloca ptr, align 8
  %169 = alloca %"class.std::map", align 8
  %170 = alloca %"struct.std::pair.264", align 8
  %171 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %172 = alloca %"struct.HIR::SimplePath", align 8
  %173 = alloca %"struct.std::pair", align 8
  %174 = alloca %"struct.std::pair.264", align 8
  %175 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %176 = alloca %"struct.HIR::SimplePath", align 8
  %177 = alloca %"struct.std::pair", align 8
  %178 = alloca %"struct.HIR::PathParams", align 8
  %179 = alloca %"class.HIR::TypeRef", align 8
  %180 = alloca %struct.ImplRef, align 8
  %181 = alloca %"class.HIR::TypeRef", align 8
  %182 = alloca %"struct.HIR::PathParams", align 8
  %183 = alloca %"class.std::map", align 8
  %184 = alloca i8, align 1
  %185 = alloca ptr, align 8
  %186 = alloca %struct.ImplRef, align 8
  %187 = alloca ptr, align 8
  %188 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %189 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %190 = alloca ptr, align 8
  %191 = alloca %struct.ImplRef, align 8
  %192 = alloca i8, align 1
  %193 = alloca i8, align 1
  %194 = alloca %"class.std::function.336", align 8
  %195 = alloca %class.anon.394, align 8
  %196 = alloca i1, align 1
  %197 = alloca i8, align 1
  %198 = alloca ptr, align 8
  %199 = alloca ptr, align 8
  %200 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %201 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %202 = alloca ptr, align 8
  %203 = alloca %struct.ImplRef, align 8
  %204 = alloca i8, align 1
  %205 = alloca i8, align 1
  %206 = alloca %"class.std::function.336", align 8
  %207 = alloca %class.anon.396, align 8
  %208 = alloca i1, align 1
  %209 = alloca i8, align 1
  %210 = alloca ptr, align 8
  %211 = alloca %struct.Span, align 8
  %212 = alloca %"class.std::function.0", align 8
  %213 = alloca %class.anon.397, align 8
  %214 = alloca ptr, align 8
  %215 = alloca ptr, align 8
  %216 = alloca %struct.Span, align 8
  %217 = alloca %"class.std::function.0", align 8
  %218 = alloca %class.anon.398, align 8
  %219 = alloca ptr, align 8
  %220 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %221 = alloca %struct.MonomorphStatePtr, align 8
  %222 = alloca %class.anon.406, align 8
  %223 = alloca ptr, align 8
  %224 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %225 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %226 = alloca ptr, align 8
  %227 = alloca ptr, align 8
  %228 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %229 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %230 = alloca ptr, align 8
  %231 = alloca ptr, align 8
  %232 = alloca ptr, align 8
  %233 = alloca %"class.HIR::TypeRef", align 8
  %234 = alloca %"class.std::vector.408", align 8
  %235 = alloca ptr, align 8
  %236 = alloca ptr, align 8
  %237 = alloca ptr, align 8
  %238 = alloca ptr, align 8
  %239 = alloca ptr, align 8
  %240 = alloca ptr, align 8
  %241 = alloca ptr, align 8
  %242 = alloca ptr, align 8
  %243 = alloca ptr, align 8
  %244 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %245 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %246 = alloca ptr, align 8
  %247 = alloca ptr, align 8
  %248 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %249 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %250 = alloca ptr, align 8
  %251 = alloca i8, align 1
  %252 = alloca i8, align 1
  %253 = alloca %"class.std::function.413", align 8
  %254 = alloca %class.anon.416, align 8
  %255 = alloca ptr, align 8
  %256 = alloca %"class.__gnu_cxx::__normal_iterator.422", align 8
  %257 = alloca %"class.__gnu_cxx::__normal_iterator.422", align 8
  %258 = alloca ptr, align 8
  %259 = alloca %struct.ImplRef, align 8
  %260 = alloca %"class.std::tuple.423", align 8
  %261 = alloca ptr, align 8
  %262 = alloca ptr, align 8
  %263 = alloca %struct.Guard, align 1
  %264 = alloca i32, align 4
  %265 = alloca %struct.ImplRef, align 8
  %266 = alloca %"class.std::function.430", align 8
  %267 = alloca %class.anon.433, align 8
  %268 = alloca %"class.std::function", align 8
  store ptr %0, ptr %9, align 8, !tbaa !5
  store ptr %1, ptr %10, align 8, !tbaa !5
  store ptr %2, ptr %11, align 8, !tbaa !5
  store ptr %3, ptr %12, align 8, !tbaa !5
  store ptr %4, ptr %13, align 8, !tbaa !5
  store ptr %5, ptr %14, align 8, !tbaa !5
  %269 = zext i1 %6 to i8
  store i8 %269, ptr %15, align 1, !tbaa !9
  %270 = load ptr, ptr %9, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %16) #0
  %271 = call noundef zeroext i1 @_Z13debug_enabledv()
  %272 = zext i1 %271 to i64
  %273 = select i1 %271, ptr @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %18) #0
  %274 = getelementptr inbounds %class.anon, ptr %18, i32 0, i32 0
  %275 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %275, ptr %274, align 8, !tbaa !5
  %276 = getelementptr inbounds %class.anon, ptr %18, i32 0, i32 1
  store ptr %12, ptr %276, align 8, !tbaa !5
  %277 = getelementptr inbounds %class.anon, ptr %18, i32 0, i32 2
  %278 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %278, ptr %277, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(24) %18)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %16, ptr noundef %273, ptr noundef %17)
          to label %279 unwind label %323

279:                                              ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #0
  call void @llvm.memset.p0.i64(ptr align 8 %21, i8 0, i64 8, i1 false)
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #0
  %280 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls acquire, align 8
  %281 = icmp eq i8 %280, 0
  br i1 %281, label %282, label %287, !prof !11

282:                                              ; preds = %279
  %283 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #0
  %284 = icmp ne i32 %283, 0
  br i1 %284, label %285, label %287

285:                                              ; preds = %282
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #0
  %286 = call i32 @__cxa_atexit(ptr @_ZN3HIR13GenericParamsD2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #0
  br label %287

287:                                              ; preds = %285, %282, %279
  %288 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params acquire, align 8
  %289 = icmp eq i8 %288, 0
  br i1 %289, label %290, label %296, !prof !11

290:                                              ; preds = %287
  %291 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #0
  %292 = icmp ne i32 %291, 0
  br i1 %292, label %293, label %296

293:                                              ; preds = %290
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params)
          to label %294 unwind label %327

294:                                              ; preds = %293
  %295 = call i32 @__cxa_atexit(ptr @_ZN3HIR10PathParamsD2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #0
  br label %296

296:                                              ; preds = %294, %290, %287
  %297 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc acquire, align 8
  %298 = icmp eq i8 %297, 0
  br i1 %298, label %299, label %304, !prof !11

299:                                              ; preds = %296
  %300 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #0
  %301 = icmp ne i32 %300, 0
  br i1 %301, label %302, label %304

302:                                              ; preds = %299
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #0
  %303 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #0
  br label %304

304:                                              ; preds = %302, %299, %296
  %305 = load i8, ptr %15, align 1, !tbaa !9, !range !12, !noundef !13
  %306 = trunc i8 %305 to i1
  br i1 %306, label %1178, label %307

307:                                              ; preds = %304
  %308 = load ptr, ptr %11, align 8, !tbaa !5
  %309 = getelementptr inbounds i8, ptr %270, i64 8
  %310 = getelementptr inbounds %struct.TraitResolveCommon, ptr %309, i32 0, i32 5
  %311 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull align 8 dereferenceable(8) %310)
          to label %312 unwind label %331

312:                                              ; preds = %307
  br i1 %311, label %313, label %340

313:                                              ; preds = %312
  %314 = load ptr, ptr %10, align 8, !tbaa !5
  %315 = load ptr, ptr %13, align 8, !tbaa !5
  %316 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(8) %315)
          to label %317 unwind label %331

317:                                              ; preds = %313
  br i1 %316, label %318, label %339

318:                                              ; preds = %317
  %319 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %22, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %319, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %320 unwind label %331

320:                                              ; preds = %318
  %321 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %22, i1 noundef zeroext false)
          to label %322 unwind label %335

322:                                              ; preds = %320
  store i1 %321, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #0
  store i32 1, ptr %23, align 4
  br label %3396

323:                                              ; preds = %7
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %19, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %18) #0
  br label %3399

327:                                              ; preds = %293
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %19, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %20, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #0
  br label %3398

331:                                              ; preds = %1230, %1162, %1038, %1036, %1033, %1030, %1027, %1017, %1012, %1009, %1006, %1003, %1000, %997, %880, %877, %867, %857, %852, %848, %846, %843, %840, %837, %834, %831, %707, %694, %533, %530, %520, %516, %514, %511, %508, %505, %502, %499, %493, %445, %430, %420, %415, %409, %398, %393, %390, %388, %385, %382, %379, %376, %373, %370, %367, %364, %361, %358, %355, %352, %349, %343, %318, %313, %307
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %19, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %20, align 4
  br label %3398

335:                                              ; preds = %320
  %336 = landingpad { ptr, i32 }
          cleanup
  %337 = extractvalue { ptr, i32 } %336, 0
  store ptr %337, ptr %19, align 8
  %338 = extractvalue { ptr, i32 } %336, 1
  store i32 %338, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #0
  br label %3398

339:                                              ; preds = %317
  br label %1177

340:                                              ; preds = %312
  %341 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %342 = icmp sge i32 %341, 1
  br i1 %342, label %343, label %409

343:                                              ; preds = %340
  %344 = load ptr, ptr %11, align 8, !tbaa !5
  %345 = getelementptr inbounds i8, ptr %270, i64 8
  %346 = getelementptr inbounds %struct.TraitResolveCommon, ptr %345, i32 0, i32 6
  %347 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %344, ptr noundef nonnull align 8 dereferenceable(8) %346)
          to label %348 unwind label %331

348:                                              ; preds = %343
  br i1 %347, label %349, label %409

349:                                              ; preds = %348
  %350 = load ptr, ptr %13, align 8, !tbaa !5
  %351 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %352 unwind label %331

352:                                              ; preds = %349
  %353 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
          to label %354 unwind label %331

354:                                              ; preds = %352
  br i1 %353, label %393, label %355

355:                                              ; preds = %354
  %356 = load ptr, ptr %13, align 8, !tbaa !5
  %357 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %356)
          to label %358 unwind label %331

358:                                              ; preds = %355
  %359 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %357)
          to label %360 unwind label %331

360:                                              ; preds = %358
  br i1 %359, label %393, label %361

361:                                              ; preds = %360
  %362 = load ptr, ptr %13, align 8, !tbaa !5
  %363 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %364 unwind label %331

364:                                              ; preds = %361
  %365 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %363)
          to label %366 unwind label %331

366:                                              ; preds = %364
  br i1 %365, label %393, label %367

367:                                              ; preds = %366
  %368 = load ptr, ptr %13, align 8, !tbaa !5
  %369 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %370 unwind label %331

370:                                              ; preds = %367
  %371 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %369)
          to label %372 unwind label %331

372:                                              ; preds = %370
  br i1 %371, label %393, label %373

373:                                              ; preds = %372
  %374 = load ptr, ptr %13, align 8, !tbaa !5
  %375 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %376 unwind label %331

376:                                              ; preds = %373
  %377 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %375)
          to label %378 unwind label %331

378:                                              ; preds = %376
  br i1 %377, label %393, label %379

379:                                              ; preds = %378
  %380 = load ptr, ptr %13, align 8, !tbaa !5
  %381 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %380)
          to label %382 unwind label %331

382:                                              ; preds = %379
  %383 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %381)
          to label %384 unwind label %331

384:                                              ; preds = %382
  br i1 %383, label %385, label %408

385:                                              ; preds = %384
  %386 = load ptr, ptr %13, align 8, !tbaa !5
  %387 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %386)
          to label %388 unwind label %331

388:                                              ; preds = %385
  %389 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %387)
          to label %390 unwind label %331

390:                                              ; preds = %388
  %391 = invoke noundef zeroext i1 @_ZNK3HIR13TypeData_Path10is_closureEv(ptr noundef nonnull align 8 dereferenceable(112) %389)
          to label %392 unwind label %331

392:                                              ; preds = %390
  br i1 %391, label %393, label %408

393:                                              ; preds = %392, %378, %372, %366, %360, %354
  %394 = load ptr, ptr %10, align 8, !tbaa !5
  %395 = load ptr, ptr %13, align 8, !tbaa !5
  %396 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_cloneERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %395)
          to label %397 unwind label %331

397:                                              ; preds = %393
  br i1 %396, label %398, label %407

398:                                              ; preds = %397
  %399 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %24, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %399, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %400 unwind label %331

400:                                              ; preds = %398
  %401 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %24, i1 noundef zeroext false)
          to label %402 unwind label %403

402:                                              ; preds = %400
  store i1 %401, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %24) #0
  store i32 1, ptr %23, align 4
  br label %3396

403:                                              ; preds = %400
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %19, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %24) #0
  br label %3398

407:                                              ; preds = %397
  br label %408

408:                                              ; preds = %407, %392, %384
  br label %1176

409:                                              ; preds = %348, %340
  %410 = load ptr, ptr %11, align 8, !tbaa !5
  %411 = getelementptr inbounds i8, ptr %270, i64 8
  %412 = getelementptr inbounds %struct.TraitResolveCommon, ptr %411, i32 0, i32 8
  %413 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull align 8 dereferenceable(8) %412)
          to label %414 unwind label %331

414:                                              ; preds = %409
  br i1 %413, label %415, label %430

415:                                              ; preds = %414
  %416 = load ptr, ptr %10, align 8, !tbaa !5
  %417 = load ptr, ptr %13, align 8, !tbaa !5
  %418 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %416, ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %419 unwind label %331

419:                                              ; preds = %415
  br i1 %418, label %420, label %429

420:                                              ; preds = %419
  %421 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %25, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %421, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %422 unwind label %331

422:                                              ; preds = %420
  %423 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %25, i1 noundef zeroext false)
          to label %424 unwind label %425

424:                                              ; preds = %422
  store i1 %423, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %25) #0
  store i32 1, ptr %23, align 4
  br label %3396

425:                                              ; preds = %422
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %19, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %25) #0
  br label %3398

429:                                              ; preds = %419
  br label %1175

430:                                              ; preds = %414
  %431 = load ptr, ptr %11, align 8, !tbaa !5
  %432 = getelementptr inbounds i8, ptr %270, i64 8
  %433 = getelementptr inbounds %struct.TraitResolveCommon, ptr %432, i32 0, i32 9
  %434 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %435 unwind label %331

435:                                              ; preds = %430
  br i1 %434, label %436, label %490

436:                                              ; preds = %435
  br label %437

437:                                              ; preds = %436
  %438 = load ptr, ptr %12, align 8, !tbaa !5
  %439 = icmp ne ptr %438, null
  br i1 %439, label %459, label %440

440:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #0
  %441 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %441)
          to label %442 unwind label %446

442:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 1 dereferenceable(1) %28) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef %27)
          to label %443 unwind label %450

443:                                              ; preds = %442
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  %444 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %444, ptr noundef @.str)
          to label %445 unwind label %455

445:                                              ; preds = %443
  invoke void @__cxa_throw(ptr %444, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %3405 unwind label %331

446:                                              ; preds = %440
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %19, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %20, align 4
  br label %454

450:                                              ; preds = %442
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %19, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #0
  br label %454

454:                                              ; preds = %450, %446
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #0
  br label %3398

455:                                              ; preds = %443
  %456 = landingpad { ptr, i32 }
          cleanup
  %457 = extractvalue { ptr, i32 } %456, 0
  store ptr %457, ptr %19, align 8
  %458 = extractvalue { ptr, i32 } %456, 1
  store i32 %458, ptr %20, align 4
  call void @__cxa_free_exception(ptr %444) #0
  br label %3398

459:                                              ; preds = %437
  br label %460

460:                                              ; preds = %459
  br label %461

461:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %462 = load ptr, ptr %12, align 8, !tbaa !5
  %463 = getelementptr inbounds %"struct.HIR::PathParams", ptr %462, i32 0, i32 1
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %463, i64 noundef 0)
          to label %465 unwind label %477

465:                                              ; preds = %461
  store ptr %464, ptr %29, align 8, !tbaa !5
  %466 = load ptr, ptr %10, align 8, !tbaa !5
  %467 = load ptr, ptr %29, align 8, !tbaa !5
  %468 = load ptr, ptr %13, align 8, !tbaa !5
  %469 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %466, ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %470 unwind label %477

470:                                              ; preds = %465
  br i1 %469, label %471, label %485

471:                                              ; preds = %470
  %472 = load ptr, ptr %13, align 8, !tbaa !5
  %473 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %30, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %472, ptr noundef %473, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %474 unwind label %477

474:                                              ; preds = %471
  %475 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %30, i1 noundef zeroext false)
          to label %476 unwind label %481

476:                                              ; preds = %474
  store i1 %475, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %30) #0
  store i32 1, ptr %23, align 4
  br label %486

477:                                              ; preds = %471, %465, %461
  %478 = landingpad { ptr, i32 }
          cleanup
  %479 = extractvalue { ptr, i32 } %478, 0
  store ptr %479, ptr %19, align 8
  %480 = extractvalue { ptr, i32 } %478, 1
  store i32 %480, ptr %20, align 4
  br label %489

481:                                              ; preds = %474
  %482 = landingpad { ptr, i32 }
          cleanup
  %483 = extractvalue { ptr, i32 } %482, 0
  store ptr %483, ptr %19, align 8
  %484 = extractvalue { ptr, i32 } %482, 1
  store i32 %484, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %30) #0
  br label %489

485:                                              ; preds = %470
  store i32 0, ptr %23, align 4
  br label %486

486:                                              ; preds = %485, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  %487 = load i32, ptr %23, align 4
  switch i32 %487, label %3396 [
    i32 0, label %488
  ]

488:                                              ; preds = %486
  br label %1174

489:                                              ; preds = %481, %477
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %3398

490:                                              ; preds = %435
  %491 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %492 = icmp sge i32 %491, 3
  br i1 %492, label %493, label %704

493:                                              ; preds = %490
  %494 = load ptr, ptr %11, align 8, !tbaa !5
  %495 = getelementptr inbounds i8, ptr %270, i64 8
  %496 = getelementptr inbounds %struct.TraitResolveCommon, ptr %495, i32 0, i32 16
  %497 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %494, ptr noundef nonnull align 8 dereferenceable(8) %496)
          to label %498 unwind label %331

498:                                              ; preds = %493
  br i1 %497, label %499, label %704

499:                                              ; preds = %498
  %500 = load ptr, ptr %13, align 8, !tbaa !5
  %501 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %500)
          to label %502 unwind label %331

502:                                              ; preds = %499
  %503 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %501)
          to label %504 unwind label %331

504:                                              ; preds = %502
  br i1 %503, label %520, label %505

505:                                              ; preds = %504
  %506 = load ptr, ptr %13, align 8, !tbaa !5
  %507 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %506)
          to label %508 unwind label %331

508:                                              ; preds = %505
  %509 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %507)
          to label %510 unwind label %331

510:                                              ; preds = %508
  br i1 %509, label %511, label %530

511:                                              ; preds = %510
  %512 = load ptr, ptr %13, align 8, !tbaa !5
  %513 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %514 unwind label %331

514:                                              ; preds = %511
  %515 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %513)
          to label %516 unwind label %331

516:                                              ; preds = %514
  %517 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %515, i32 0, i32 1
  %518 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %517)
          to label %519 unwind label %331

519:                                              ; preds = %516
  br i1 %518, label %520, label %530

520:                                              ; preds = %519, %504
  %521 = load ptr, ptr %13, align 8, !tbaa !5
  %522 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %31, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %521, ptr noundef %522, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %523 unwind label %331

523:                                              ; preds = %520
  %524 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %31, i1 noundef zeroext false)
          to label %525 unwind label %526

525:                                              ; preds = %523
  store i1 %524, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #0
  store i32 1, ptr %23, align 4
  br label %3396

526:                                              ; preds = %523
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %19, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #0
  br label %3398

530:                                              ; preds = %519, %510
  %531 = load ptr, ptr %13, align 8, !tbaa !5
  %532 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %531)
          to label %533 unwind label %331

533:                                              ; preds = %530
  %534 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %532)
          to label %535 unwind label %331

535:                                              ; preds = %533
  br i1 %534, label %536, label %638

536:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %537 = load ptr, ptr %13, align 8, !tbaa !5
  %538 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %537)
          to label %539 unwind label %576

539:                                              ; preds = %536
  %540 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %538)
          to label %541 unwind label %576

541:                                              ; preds = %539
  %542 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %540, i32 0, i32 1
  %543 = invoke noundef ptr @_ZNK3HIR15TypePathBinding8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %542)
          to label %544 unwind label %576

544:                                              ; preds = %541
  store ptr %543, ptr %32, align 8, !tbaa !5
  %545 = load ptr, ptr %32, align 8, !tbaa !5
  %546 = icmp ne ptr %545, null
  br i1 %546, label %547, label %632

547:                                              ; preds = %544
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #0
  %548 = load ptr, ptr %32, align 8, !tbaa !5
  %549 = load ptr, ptr %548, align 8, !tbaa !5
  store ptr %549, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %550 = load ptr, ptr %33, align 8, !tbaa !5
  %551 = load ptr, ptr %33, align 8, !tbaa !5
  %552 = getelementptr inbounds %"class.HIR::Enum", ptr %551, i32 0, i32 2
  %553 = load i32, ptr %552, align 4, !tbaa !16
  invoke void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %34, i32 noundef %553)
          to label %554 unwind label %580

554:                                              ; preds = %547
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %36) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %37, ptr noundef @.str.1)
          to label %555 unwind label %584

555:                                              ; preds = %554
  call void @llvm.lifetime.start.p0(i64 40, ptr %38) #0
  %556 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %38, i32 0, i32 0
  %557 = getelementptr inbounds i8, ptr %270, i64 8
  %558 = getelementptr inbounds %struct.TraitResolveCommon, ptr %557, i32 0, i32 16
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %558)
          to label %559 unwind label %588

559:                                              ; preds = %555
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %556, ptr noundef %39)
          to label %560 unwind label %592

560:                                              ; preds = %559
  %561 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %38, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef nonnull align 8 dereferenceable(8) %34)
          to label %562 unwind label %596

562:                                              ; preds = %560
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair.97") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(40) %38)
          to label %563 unwind label %600

563:                                              ; preds = %562
  %564 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %35, ptr noundef nonnull align 8 dereferenceable(48) %36)
          to label %565 unwind label %604

565:                                              ; preds = %563
  %566 = getelementptr inbounds { ptr, i8 }, ptr %40, i32 0, i32 0
  %567 = extractvalue { ptr, i8 } %564, 0
  store ptr %567, ptr %566, align 8
  %568 = getelementptr inbounds { ptr, i8 }, ptr %40, i32 0, i32 1
  %569 = extractvalue { ptr, i8 } %564, 1
  store i8 %569, ptr %568, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %36) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #0
  %570 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(8) %570)
          to label %571 unwind label %612

571:                                              ; preds = %565
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %43)
          to label %572 unwind label %616

572:                                              ; preds = %571
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %44, ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %41, ptr noundef %42, ptr noundef %43, ptr noundef %44)
          to label %573 unwind label %620

573:                                              ; preds = %572
  %574 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %41, i1 noundef zeroext false)
          to label %575 unwind label %624

575:                                              ; preds = %573
  store i1 %574, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %41) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #0
  br label %634

576:                                              ; preds = %541, %539, %536
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %19, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %20, align 4
  br label %637

580:                                              ; preds = %547
  %581 = landingpad { ptr, i32 }
          cleanup
  %582 = extractvalue { ptr, i32 } %581, 0
  store ptr %582, ptr %19, align 8
  %583 = extractvalue { ptr, i32 } %581, 1
  store i32 %583, ptr %20, align 4
  br label %631

584:                                              ; preds = %554
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %19, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %20, align 4
  br label %611

588:                                              ; preds = %555
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %19, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %20, align 4
  br label %610

592:                                              ; preds = %559
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %19, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %20, align 4
  br label %609

596:                                              ; preds = %560
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %19, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %556) #0
  br label %609

600:                                              ; preds = %562
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %19, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %20, align 4
  br label %608

604:                                              ; preds = %563
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %19, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %20, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %36) #0
  br label %608

608:                                              ; preds = %604, %600
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #0
  br label %609

609:                                              ; preds = %608, %596, %592
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br label %610

610:                                              ; preds = %609, %588
  call void @llvm.lifetime.end.p0(i64 40, ptr %38) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  br label %611

611:                                              ; preds = %610, %584
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %36) #0
  br label %630

612:                                              ; preds = %565
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %19, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %20, align 4
  br label %630

616:                                              ; preds = %571
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %19, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %20, align 4
  br label %629

620:                                              ; preds = %572
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %19, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %20, align 4
  br label %628

624:                                              ; preds = %573
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %19, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %41) #0
  br label %628

628:                                              ; preds = %624, %620
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #0
  br label %629

629:                                              ; preds = %628, %616
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  br label %630

630:                                              ; preds = %629, %612, %611
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #0
  br label %631

631:                                              ; preds = %630, %580
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #0
  br label %637

632:                                              ; preds = %544
  br label %633

633:                                              ; preds = %632
  store i32 0, ptr %23, align 4
  br label %634

634:                                              ; preds = %633, %575
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  %635 = load i32, ptr %23, align 4
  switch i32 %635, label %3396 [
    i32 0, label %636
  ]

636:                                              ; preds = %634
  br label %639

637:                                              ; preds = %631, %576
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %3398

638:                                              ; preds = %535
  br label %639

639:                                              ; preds = %638, %636
  br label %640

640:                                              ; preds = %639
  %641 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit acquire, align 8
  %642 = icmp eq i8 %641, 0
  br i1 %642, label %643, label %648, !prof !11

643:                                              ; preds = %640
  %644 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #0
  %645 = icmp ne i32 %644, 0
  br i1 %645, label %646, label %648

646:                                              ; preds = %643
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #0
  %647 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #0
  br label %648

648:                                              ; preds = %646, %643, %640
  %649 = call noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #0
  br i1 %649, label %650, label %694

650:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %46, ptr noundef @.str.1)
          to label %651 unwind label %666

651:                                              ; preds = %650
  call void @llvm.lifetime.start.p0(i64 40, ptr %47) #0
  %652 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %47, i32 0, i32 0
  %653 = getelementptr inbounds i8, ptr %270, i64 8
  %654 = getelementptr inbounds %struct.TraitResolveCommon, ptr %653, i32 0, i32 16
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %654)
          to label %655 unwind label %670

655:                                              ; preds = %651
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %652, ptr noundef %48)
          to label %656 unwind label %674

656:                                              ; preds = %655
  %657 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %47, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %657)
          to label %658 unwind label %678

658:                                              ; preds = %656
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair.97") align 8 %45, ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(40) %47)
          to label %659 unwind label %682

659:                                              ; preds = %658
  %660 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit, ptr noundef nonnull align 8 dereferenceable(48) %45)
          to label %661 unwind label %686

661:                                              ; preds = %659
  %662 = getelementptr inbounds { ptr, i8 }, ptr %49, i32 0, i32 0
  %663 = extractvalue { ptr, i8 } %660, 0
  store ptr %663, ptr %662, align 8
  %664 = getelementptr inbounds { ptr, i8 }, ptr %49, i32 0, i32 1
  %665 = extractvalue { ptr, i8 } %660, 1
  store i8 %665, ptr %664, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %47) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #0
  br label %694

666:                                              ; preds = %650
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %19, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %20, align 4
  br label %693

670:                                              ; preds = %651
  %671 = landingpad { ptr, i32 }
          cleanup
  %672 = extractvalue { ptr, i32 } %671, 0
  store ptr %672, ptr %19, align 8
  %673 = extractvalue { ptr, i32 } %671, 1
  store i32 %673, ptr %20, align 4
  br label %692

674:                                              ; preds = %655
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %19, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %20, align 4
  br label %691

678:                                              ; preds = %656
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %19, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %652) #0
  br label %691

682:                                              ; preds = %658
  %683 = landingpad { ptr, i32 }
          cleanup
  %684 = extractvalue { ptr, i32 } %683, 0
  store ptr %684, ptr %19, align 8
  %685 = extractvalue { ptr, i32 } %683, 1
  store i32 %685, ptr %20, align 4
  br label %690

686:                                              ; preds = %659
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %19, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %20, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  br label %690

690:                                              ; preds = %686, %682
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #0
  br label %691

691:                                              ; preds = %690, %678, %674
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #0
  br label %692

692:                                              ; preds = %691, %670
  call void @llvm.lifetime.end.p0(i64 40, ptr %47) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #0
  br label %693

693:                                              ; preds = %692, %666
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #0
  br label %3398

694:                                              ; preds = %661, %648
  %695 = load ptr, ptr %13, align 8, !tbaa !5
  %696 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %50, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %695, ptr noundef %696, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit)
          to label %697 unwind label %331

697:                                              ; preds = %694
  %698 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %50, i1 noundef zeroext false)
          to label %699 unwind label %700

699:                                              ; preds = %697
  store i1 %698, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %50) #0
  store i32 1, ptr %23, align 4
  br label %3396

700:                                              ; preds = %697
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %19, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %50) #0
  br label %3398

704:                                              ; preds = %498, %490
  %705 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %706 = icmp sge i32 %705, 3
  br i1 %706, label %707, label %1172

707:                                              ; preds = %704
  %708 = load ptr, ptr %11, align 8, !tbaa !5
  %709 = getelementptr inbounds i8, ptr %270, i64 8
  %710 = getelementptr inbounds %struct.TraitResolveCommon, ptr %709, i32 0, i32 17
  %711 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %708, ptr noundef nonnull align 8 dereferenceable(8) %710)
          to label %712 unwind label %331

712:                                              ; preds = %707
  br i1 %711, label %713, label %1172

713:                                              ; preds = %712
  %714 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 acquire, align 8
  %715 = icmp eq i8 %714, 0
  br i1 %715, label %716, label %721, !prof !11

716:                                              ; preds = %713
  %717 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #0
  %718 = icmp ne i32 %717, 0
  br i1 %718, label %719, label %721

719:                                              ; preds = %716
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #0
  %720 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #0
  br label %721

721:                                              ; preds = %719, %716, %713
  %722 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice acquire, align 8
  %723 = icmp eq i8 %722, 0
  br i1 %723, label %724, label %729, !prof !11

724:                                              ; preds = %721
  %725 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #0
  %726 = icmp ne i32 %725, 0
  br i1 %726, label %727, label %729

727:                                              ; preds = %724
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #0
  %728 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #0
  br label %729

729:                                              ; preds = %727, %724, %721
  %730 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata acquire, align 8
  %731 = icmp eq i8 %730, 0
  br i1 %731, label %732, label %738, !prof !11

732:                                              ; preds = %729
  %733 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata) #0
  %734 = icmp ne i32 %733, 0
  br i1 %734, label %735, label %738

735:                                              ; preds = %732
  invoke void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata)
          to label %736 unwind label %772

736:                                              ; preds = %735
  %737 = call i32 @__cxa_atexit(ptr @_ZN8RcStringD1Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata) #0
  br label %738

738:                                              ; preds = %736, %732, %729
  %739 = call noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #0
  br i1 %739, label %740, label %831

740:                                              ; preds = %738
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %51, ptr noundef @.str.2)
          to label %741 unwind label %776

741:                                              ; preds = %740
  %742 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(8) %51)
          to label %743 unwind label %780

743:                                              ; preds = %741
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %52) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %53) #0
  %744 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %53, i32 0, i32 0
  %745 = getelementptr inbounds i8, ptr %270, i64 8
  %746 = getelementptr inbounds %struct.TraitResolveCommon, ptr %745, i32 0, i32 17
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %746)
          to label %747 unwind label %785

747:                                              ; preds = %743
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %744, ptr noundef %54)
          to label %748 unwind label %789

748:                                              ; preds = %747
  %749 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %53, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %749)
          to label %750 unwind label %793

750:                                              ; preds = %748
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.97") align 8 %52, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %53)
          to label %751 unwind label %797

751:                                              ; preds = %750
  %752 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0, ptr noundef nonnull align 8 dereferenceable(48) %52)
          to label %753 unwind label %801

753:                                              ; preds = %751
  %754 = getelementptr inbounds { ptr, i8 }, ptr %55, i32 0, i32 0
  %755 = extractvalue { ptr, i8 } %752, 0
  store ptr %755, ptr %754, align 8
  %756 = getelementptr inbounds { ptr, i8 }, ptr %55, i32 0, i32 1
  %757 = extractvalue { ptr, i8 } %752, 1
  store i8 %757, ptr %756, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %56) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %57) #0
  %758 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %57, i32 0, i32 0
  %759 = getelementptr inbounds i8, ptr %270, i64 8
  %760 = getelementptr inbounds %struct.TraitResolveCommon, ptr %759, i32 0, i32 17
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %760)
          to label %761 unwind label %808

761:                                              ; preds = %753
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %758, ptr noundef %58)
          to label %762 unwind label %812

762:                                              ; preds = %761
  %763 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %57, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %763, i32 noundef 0)
          to label %764 unwind label %816

764:                                              ; preds = %762
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.97") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %57)
          to label %765 unwind label %820

765:                                              ; preds = %764
  %766 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %767 unwind label %824

767:                                              ; preds = %765
  %768 = getelementptr inbounds { ptr, i8 }, ptr %59, i32 0, i32 0
  %769 = extractvalue { ptr, i8 } %766, 0
  store ptr %769, ptr %768, align 8
  %770 = getelementptr inbounds { ptr, i8 }, ptr %59, i32 0, i32 1
  %771 = extractvalue { ptr, i8 } %766, 1
  store i8 %771, ptr %770, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %57) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %56) #0
  br label %831

772:                                              ; preds = %735
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %19, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %20, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata) #0
  br label %3398

776:                                              ; preds = %740
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %19, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %20, align 4
  br label %784

780:                                              ; preds = %741
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %19, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %20, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #0
  br label %784

784:                                              ; preds = %780, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %3398

785:                                              ; preds = %743
  %786 = landingpad { ptr, i32 }
          cleanup
  %787 = extractvalue { ptr, i32 } %786, 0
  store ptr %787, ptr %19, align 8
  %788 = extractvalue { ptr, i32 } %786, 1
  store i32 %788, ptr %20, align 4
  br label %807

789:                                              ; preds = %747
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %19, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %20, align 4
  br label %806

793:                                              ; preds = %748
  %794 = landingpad { ptr, i32 }
          cleanup
  %795 = extractvalue { ptr, i32 } %794, 0
  store ptr %795, ptr %19, align 8
  %796 = extractvalue { ptr, i32 } %794, 1
  store i32 %796, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %744) #0
  br label %806

797:                                              ; preds = %750
  %798 = landingpad { ptr, i32 }
          cleanup
  %799 = extractvalue { ptr, i32 } %798, 0
  store ptr %799, ptr %19, align 8
  %800 = extractvalue { ptr, i32 } %798, 1
  store i32 %800, ptr %20, align 4
  br label %805

801:                                              ; preds = %751
  %802 = landingpad { ptr, i32 }
          cleanup
  %803 = extractvalue { ptr, i32 } %802, 0
  store ptr %803, ptr %19, align 8
  %804 = extractvalue { ptr, i32 } %802, 1
  store i32 %804, ptr %20, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #0
  br label %805

805:                                              ; preds = %801, %797
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %53) #0
  br label %806

806:                                              ; preds = %805, %793, %789
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  br label %807

807:                                              ; preds = %806, %785
  call void @llvm.lifetime.end.p0(i64 40, ptr %53) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %52) #0
  br label %3398

808:                                              ; preds = %753
  %809 = landingpad { ptr, i32 }
          cleanup
  %810 = extractvalue { ptr, i32 } %809, 0
  store ptr %810, ptr %19, align 8
  %811 = extractvalue { ptr, i32 } %809, 1
  store i32 %811, ptr %20, align 4
  br label %830

812:                                              ; preds = %761
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %19, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %20, align 4
  br label %829

816:                                              ; preds = %762
  %817 = landingpad { ptr, i32 }
          cleanup
  %818 = extractvalue { ptr, i32 } %817, 0
  store ptr %818, ptr %19, align 8
  %819 = extractvalue { ptr, i32 } %817, 1
  store i32 %819, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %758) #0
  br label %829

820:                                              ; preds = %764
  %821 = landingpad { ptr, i32 }
          cleanup
  %822 = extractvalue { ptr, i32 } %821, 0
  store ptr %822, ptr %19, align 8
  %823 = extractvalue { ptr, i32 } %821, 1
  store i32 %823, ptr %20, align 4
  br label %828

824:                                              ; preds = %765
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %19, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %20, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #0
  br label %828

828:                                              ; preds = %824, %820
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #0
  br label %829

829:                                              ; preds = %828, %816, %812
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #0
  br label %830

830:                                              ; preds = %829, %808
  call void @llvm.lifetime.end.p0(i64 40, ptr %57) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %56) #0
  br label %3398

831:                                              ; preds = %767, %738
  %832 = load ptr, ptr %13, align 8, !tbaa !5
  %833 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %832)
          to label %834 unwind label %331

834:                                              ; preds = %831
  %835 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %833)
          to label %836 unwind label %331

836:                                              ; preds = %834
  br i1 %835, label %852, label %837

837:                                              ; preds = %836
  %838 = load ptr, ptr %13, align 8, !tbaa !5
  %839 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %838)
          to label %840 unwind label %331

840:                                              ; preds = %837
  %841 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %839)
          to label %842 unwind label %331

842:                                              ; preds = %840
  br i1 %841, label %843, label %877

843:                                              ; preds = %842
  %844 = load ptr, ptr %13, align 8, !tbaa !5
  %845 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %844)
          to label %846 unwind label %331

846:                                              ; preds = %843
  %847 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %845)
          to label %848 unwind label %331

848:                                              ; preds = %846
  %849 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %847, i32 0, i32 1
  %850 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %849)
          to label %851 unwind label %331

851:                                              ; preds = %848
  br i1 %850, label %852, label %877

852:                                              ; preds = %851, %836
  %853 = load ptr, ptr %10, align 8, !tbaa !5
  %854 = load ptr, ptr %13, align 8, !tbaa !5
  %855 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %853, ptr noundef nonnull align 8 dereferenceable(8) %854)
          to label %856 unwind label %331

856:                                              ; preds = %852
  br i1 %855, label %857, label %867

857:                                              ; preds = %856
  %858 = load ptr, ptr %13, align 8, !tbaa !5
  %859 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %60, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %858, ptr noundef %859, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %860 unwind label %331

860:                                              ; preds = %857
  %861 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %60, i1 noundef zeroext false)
          to label %862 unwind label %863

862:                                              ; preds = %860
  store i1 %861, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #0
  store i32 1, ptr %23, align 4
  br label %3396

863:                                              ; preds = %860
  %864 = landingpad { ptr, i32 }
          cleanup
  %865 = extractvalue { ptr, i32 } %864, 0
  store ptr %865, ptr %19, align 8
  %866 = extractvalue { ptr, i32 } %864, 1
  store i32 %866, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #0
  br label %3398

867:                                              ; preds = %856
  %868 = load ptr, ptr %13, align 8, !tbaa !5
  %869 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %61, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %868, ptr noundef %869, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %870 unwind label %331

870:                                              ; preds = %867
  %871 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %61, i1 noundef zeroext false)
          to label %872 unwind label %873

872:                                              ; preds = %870
  store i1 %871, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %61) #0
  store i32 1, ptr %23, align 4
  br label %3396

873:                                              ; preds = %870
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %19, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %61) #0
  br label %3398

877:                                              ; preds = %851, %842
  %878 = load ptr, ptr %13, align 8, !tbaa !5
  %879 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %878)
          to label %880 unwind label %331

880:                                              ; preds = %877
  %881 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %879)
          to label %882 unwind label %331

882:                                              ; preds = %880
  br i1 %881, label %883, label %997

883:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 48, ptr %62) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %63) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %64) #0
  %884 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %64, i32 0, i32 0
  %885 = getelementptr inbounds i8, ptr %270, i64 8
  %886 = getelementptr inbounds %struct.TraitResolveCommon, ptr %885, i32 0, i32 17
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %886)
          to label %887 unwind label %921

887:                                              ; preds = %883
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %884, ptr noundef %65)
          to label %888 unwind label %925

888:                                              ; preds = %887
  store i1 true, ptr %72, align 1
  %889 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %64, i32 0, i32 1
  %890 = getelementptr inbounds i8, ptr %270, i64 8
  %891 = getelementptr inbounds %struct.TraitResolveCommon, ptr %890, i32 0, i32 18
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %891)
          to label %892 unwind label %929

892:                                              ; preds = %888
  %893 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %70, ptr noundef nonnull align 8 dereferenceable(8) %893)
          to label %894 unwind label %933

894:                                              ; preds = %892
  invoke void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24) %69, ptr noundef %70)
          to label %895 unwind label %937

895:                                              ; preds = %894
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef %68, ptr noundef %69)
          to label %896 unwind label %941

896:                                              ; preds = %895
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %66, ptr noundef %67)
          to label %897 unwind label %945

897:                                              ; preds = %896
  %898 = getelementptr inbounds i8, ptr %270, i64 8
  %899 = getelementptr inbounds %struct.TraitResolveCommon, ptr %898, i32 0, i32 0
  %900 = load ptr, ptr %899, align 8, !tbaa !48
  %901 = load ptr, ptr %10, align 8, !tbaa !5
  %902 = getelementptr inbounds i8, ptr %270, i64 8
  %903 = getelementptr inbounds %struct.TraitResolveCommon, ptr %902, i32 0, i32 18
  %904 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %900, ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef nonnull align 8 dereferenceable(8) %903)
          to label %905 unwind label %949

905:                                              ; preds = %897
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %71, ptr noundef %904)
          to label %906 unwind label %949

906:                                              ; preds = %905
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %889, ptr noundef %66, ptr noundef %71)
          to label %907 unwind label %953

907:                                              ; preds = %906
  store i1 false, ptr %72, align 1
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.97") align 8 %63, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %64)
          to label %908 unwind label %957

908:                                              ; preds = %907
  %909 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %62, ptr noundef nonnull align 8 dereferenceable(48) %63)
          to label %910 unwind label %961

910:                                              ; preds = %908
  %911 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 0
  %912 = extractvalue { ptr, i8 } %909, 0
  store ptr %912, ptr %911, align 8
  %913 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 1
  %914 = extractvalue { ptr, i8 } %909, 1
  store i8 %914, ptr %913, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #0
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %66) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #0
  %915 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(8) %915)
          to label %916 unwind label %978

916:                                              ; preds = %910
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %917 unwind label %982

917:                                              ; preds = %916
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %77, ptr noundef nonnull align 8 dereferenceable(48) %62) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %74, ptr noundef %75, ptr noundef %76, ptr noundef %77)
          to label %918 unwind label %986

918:                                              ; preds = %917
  %919 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %74, i1 noundef zeroext false)
          to label %920 unwind label %990

920:                                              ; preds = %918
  store i1 %919, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %74) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #0
  br label %3396

921:                                              ; preds = %883
  %922 = landingpad { ptr, i32 }
          cleanup
  %923 = extractvalue { ptr, i32 } %922, 0
  store ptr %923, ptr %19, align 8
  %924 = extractvalue { ptr, i32 } %922, 1
  store i32 %924, ptr %20, align 4
  br label %977

925:                                              ; preds = %887
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %19, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %20, align 4
  br label %976

929:                                              ; preds = %888
  %930 = landingpad { ptr, i32 }
          cleanup
  %931 = extractvalue { ptr, i32 } %930, 0
  store ptr %931, ptr %19, align 8
  %932 = extractvalue { ptr, i32 } %930, 1
  store i32 %932, ptr %20, align 4
  br label %972

933:                                              ; preds = %892
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %19, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %20, align 4
  br label %971

937:                                              ; preds = %894
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %19, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %20, align 4
  br label %970

941:                                              ; preds = %895
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %19, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %20, align 4
  br label %969

945:                                              ; preds = %896
  %946 = landingpad { ptr, i32 }
          cleanup
  %947 = extractvalue { ptr, i32 } %946, 0
  store ptr %947, ptr %19, align 8
  %948 = extractvalue { ptr, i32 } %946, 1
  store i32 %948, ptr %20, align 4
  br label %968

949:                                              ; preds = %905, %897
  %950 = landingpad { ptr, i32 }
          cleanup
  %951 = extractvalue { ptr, i32 } %950, 0
  store ptr %951, ptr %19, align 8
  %952 = extractvalue { ptr, i32 } %950, 1
  store i32 %952, ptr %20, align 4
  br label %967

953:                                              ; preds = %906
  %954 = landingpad { ptr, i32 }
          cleanup
  %955 = extractvalue { ptr, i32 } %954, 0
  store ptr %955, ptr %19, align 8
  %956 = extractvalue { ptr, i32 } %954, 1
  store i32 %956, ptr %20, align 4
  br label %966

957:                                              ; preds = %907
  %958 = landingpad { ptr, i32 }
          cleanup
  %959 = extractvalue { ptr, i32 } %958, 0
  store ptr %959, ptr %19, align 8
  %960 = extractvalue { ptr, i32 } %958, 1
  store i32 %960, ptr %20, align 4
  br label %965

961:                                              ; preds = %908
  %962 = landingpad { ptr, i32 }
          cleanup
  %963 = extractvalue { ptr, i32 } %962, 0
  store ptr %963, ptr %19, align 8
  %964 = extractvalue { ptr, i32 } %962, 1
  store i32 %964, ptr %20, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #0
  br label %965

965:                                              ; preds = %961, %957
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #0
  br label %966

966:                                              ; preds = %965, %953
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %71) #0
  br label %967

967:                                              ; preds = %966, %949
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %66) #0
  br label %968

968:                                              ; preds = %967, %945
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #0
  br label %969

969:                                              ; preds = %968, %941
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %69) #0
  br label %970

970:                                              ; preds = %969, %937
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #0
  br label %971

971:                                              ; preds = %970, %933
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  br label %972

972:                                              ; preds = %971, %929
  %973 = load i1, ptr %72, align 1
  br i1 %973, label %974, label %975

974:                                              ; preds = %972
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %884) #0
  br label %975

975:                                              ; preds = %974, %972
  br label %976

976:                                              ; preds = %975, %925
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #0
  br label %977

977:                                              ; preds = %976, %921
  call void @llvm.lifetime.end.p0(i64 40, ptr %64) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #0
  br label %996

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

982:                                              ; preds = %916
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %19, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %20, align 4
  br label %995

986:                                              ; preds = %917
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %19, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %20, align 4
  br label %994

990:                                              ; preds = %918
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %19, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %74) #0
  br label %994

994:                                              ; preds = %990, %986
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #0
  br label %995

995:                                              ; preds = %994, %982
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  br label %996

996:                                              ; preds = %995, %978, %977
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #0
  br label %3398

997:                                              ; preds = %882
  %998 = load ptr, ptr %13, align 8, !tbaa !5
  %999 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %998)
          to label %1000 unwind label %331

1000:                                             ; preds = %997
  %1001 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %999)
          to label %1002 unwind label %331

1002:                                             ; preds = %1000
  br i1 %1001, label %1017, label %1003

1003:                                             ; preds = %1002
  %1004 = load ptr, ptr %13, align 8, !tbaa !5
  %1005 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1004)
          to label %1006 unwind label %331

1006:                                             ; preds = %1003
  %1007 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1005)
          to label %1008 unwind label %331

1008:                                             ; preds = %1006
  br i1 %1007, label %1009, label %1027

1009:                                             ; preds = %1008
  %1010 = load ptr, ptr %13, align 8, !tbaa !5
  %1011 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1010)
          to label %1012 unwind label %331

1012:                                             ; preds = %1009
  %1013 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1011)
          to label %1014 unwind label %331

1014:                                             ; preds = %1012
  %1015 = load i32, ptr %1013, align 4, !tbaa !63
  %1016 = icmp eq i32 %1015, 16
  br i1 %1016, label %1017, label %1027

1017:                                             ; preds = %1014, %1002
  %1018 = load ptr, ptr %13, align 8, !tbaa !5
  %1019 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %78, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1018, ptr noundef %1019, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice)
          to label %1020 unwind label %331

1020:                                             ; preds = %1017
  %1021 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %78, i1 noundef zeroext false)
          to label %1022 unwind label %1023

1022:                                             ; preds = %1020
  store i1 %1021, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %78) #0
  store i32 1, ptr %23, align 4
  br label %3396

1023:                                             ; preds = %1020
  %1024 = landingpad { ptr, i32 }
          cleanup
  %1025 = extractvalue { ptr, i32 } %1024, 0
  store ptr %1025, ptr %19, align 8
  %1026 = extractvalue { ptr, i32 } %1024, 1
  store i32 %1026, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %78) #0
  br label %3398

1027:                                             ; preds = %1014, %1008
  %1028 = load ptr, ptr %13, align 8, !tbaa !5
  %1029 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1028)
          to label %1030 unwind label %331

1030:                                             ; preds = %1027
  %1031 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1029)
          to label %1032 unwind label %331

1032:                                             ; preds = %1030
  br i1 %1031, label %1033, label %1159

1033:                                             ; preds = %1032
  %1034 = load ptr, ptr %13, align 8, !tbaa !5
  %1035 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1034)
          to label %1036 unwind label %331

1036:                                             ; preds = %1033
  %1037 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1035)
          to label %1038 unwind label %331

1038:                                             ; preds = %1036
  %1039 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1037, i32 0, i32 1
  %1040 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1039)
          to label %1041 unwind label %331

1041:                                             ; preds = %1038
  br i1 %1040, label %1042, label %1159

1042:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #0
  %1043 = load ptr, ptr %13, align 8, !tbaa !5
  %1044 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1043)
          to label %1045 unwind label %1056

1045:                                             ; preds = %1042
  %1046 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1044)
          to label %1047 unwind label %1056

1047:                                             ; preds = %1045
  %1048 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1046, i32 0, i32 1
  %1049 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1048)
          to label %1050 unwind label %1056

1050:                                             ; preds = %1047
  %1051 = load ptr, ptr %1049, align 8, !tbaa !5
  store ptr %1051, ptr %79, align 8, !tbaa !5
  %1052 = load ptr, ptr %79, align 8, !tbaa !5
  %1053 = getelementptr inbounds %"class.HIR::Struct", ptr %1052, i32 0, i32 7
  %1054 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1053, i32 0, i32 2
  %1055 = load i32, ptr %1054, align 8, !tbaa !65
  switch i32 %1055, label %1154 [
    i32 0, label %1060
    i32 1, label %1070
    i32 2, label %1114
    i32 3, label %1124
  ]

1056:                                             ; preds = %1114, %1060, %1047, %1045, %1042
  %1057 = landingpad { ptr, i32 }
          cleanup
  %1058 = extractvalue { ptr, i32 } %1057, 0
  store ptr %1058, ptr %19, align 8
  %1059 = extractvalue { ptr, i32 } %1057, 1
  store i32 %1059, ptr %20, align 4
  br label %1158

1060:                                             ; preds = %1050
  %1061 = load ptr, ptr %13, align 8, !tbaa !5
  %1062 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %80, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1061, ptr noundef %1062, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %1063 unwind label %1056

1063:                                             ; preds = %1060
  %1064 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %80, i1 noundef zeroext false)
          to label %1065 unwind label %1066

1065:                                             ; preds = %1063
  store i1 %1064, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %80) #0
  store i32 1, ptr %23, align 4
  br label %1155

1066:                                             ; preds = %1063
  %1067 = landingpad { ptr, i32 }
          cleanup
  %1068 = extractvalue { ptr, i32 } %1067, 0
  store ptr %1068, ptr %19, align 8
  %1069 = extractvalue { ptr, i32 } %1067, 1
  store i32 %1069, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %80) #0
  br label %1158

1070:                                             ; preds = %1050
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #0
  %1071 = load ptr, ptr %13, align 8, !tbaa !5
  %1072 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1071)
          to label %1073 unwind label %1100

1073:                                             ; preds = %1070
  %1074 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1072)
          to label %1075 unwind label %1100

1075:                                             ; preds = %1073
  %1076 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1074, i32 0, i32 0
  %1077 = getelementptr inbounds %"class.HIR::Path", ptr %1076, i32 0, i32 0
  %1078 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %1077)
          to label %1079 unwind label %1100

1079:                                             ; preds = %1075
  %1080 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1078, i32 0, i32 1
  %1081 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1080, i32 0, i32 1
  %1082 = load ptr, ptr %79, align 8, !tbaa !5
  %1083 = getelementptr inbounds %"class.HIR::Struct", ptr %1082, i32 0, i32 7
  %1084 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1083, i32 0, i32 1
  %1085 = load i32, ptr %1084, align 4, !tbaa !76
  %1086 = zext i32 %1085 to i64
  %1087 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1081, i64 noundef %1086)
          to label %1088 unwind label %1100

1088:                                             ; preds = %1079
  store ptr %1087, ptr %81, align 8, !tbaa !5
  %1089 = load ptr, ptr %10, align 8, !tbaa !5
  %1090 = load ptr, ptr %11, align 8, !tbaa !5
  %1091 = load ptr, ptr %12, align 8, !tbaa !5
  %1092 = load ptr, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %83) #0
  %1093 = getelementptr inbounds %class.anon.262, ptr %83, i32 0, i32 0
  store ptr %5, ptr %1093, align 8, !tbaa !5
  %1094 = getelementptr inbounds %class.anon.262, ptr %83, i32 0, i32 1
  %1095 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1095, ptr %1094, align 8, !tbaa !5
  %1096 = getelementptr inbounds %class.anon.262, ptr %83, i32 0, i32 2
  store ptr %12, ptr %1096, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES2_bE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %1097 unwind label %1104

1097:                                             ; preds = %1088
  %1098 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %1089, ptr noundef nonnull align 8 dereferenceable(8) %1090, ptr noundef %1091, ptr noundef nonnull align 8 dereferenceable(8) %1092, ptr noundef %82, i1 noundef zeroext false)
          to label %1099 unwind label %1108

1099:                                             ; preds = %1097
  store i1 %1098, ptr %8, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #0
  store i32 1, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  br label %1155

1100:                                             ; preds = %1079, %1075, %1073, %1070
  %1101 = landingpad { ptr, i32 }
          cleanup
  %1102 = extractvalue { ptr, i32 } %1101, 0
  store ptr %1102, ptr %19, align 8
  %1103 = extractvalue { ptr, i32 } %1101, 1
  store i32 %1103, ptr %20, align 4
  br label %1113

1104:                                             ; preds = %1088
  %1105 = landingpad { ptr, i32 }
          cleanup
  %1106 = extractvalue { ptr, i32 } %1105, 0
  store ptr %1106, ptr %19, align 8
  %1107 = extractvalue { ptr, i32 } %1105, 1
  store i32 %1107, ptr %20, align 4
  br label %1112

1108:                                             ; preds = %1097
  %1109 = landingpad { ptr, i32 }
          cleanup
  %1110 = extractvalue { ptr, i32 } %1109, 0
  store ptr %1110, ptr %19, align 8
  %1111 = extractvalue { ptr, i32 } %1109, 1
  store i32 %1111, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #0
  br label %1112

1112:                                             ; preds = %1108, %1104
  call void @llvm.lifetime.end.p0(i64 24, ptr %83) #0
  br label %1113

1113:                                             ; preds = %1112, %1100
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  br label %1158

1114:                                             ; preds = %1050
  %1115 = load ptr, ptr %13, align 8, !tbaa !5
  %1116 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %84, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1115, ptr noundef %1116, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice)
          to label %1117 unwind label %1056

1117:                                             ; preds = %1114
  %1118 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %84, i1 noundef zeroext false)
          to label %1119 unwind label %1120

1119:                                             ; preds = %1117
  store i1 %1118, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %84) #0
  store i32 1, ptr %23, align 4
  br label %1155

1120:                                             ; preds = %1117
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %19, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %84) #0
  br label %1158

1124:                                             ; preds = %1050
  br label %1125

1125:                                             ; preds = %1124
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  store ptr @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb, ptr %85, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #0
  %1126 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %1126)
          to label %1127 unwind label %1134

1127:                                             ; preds = %1125
  call void @llvm.lifetime.start.p0(i64 16, ptr %88) #0
  %1128 = getelementptr inbounds %class.anon.263, ptr %88, i32 0, i32 0
  store ptr %85, ptr %1128, align 8, !tbaa !5
  %1129 = getelementptr inbounds %class.anon.263, ptr %88, i32 0, i32 1
  %1130 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %1130, ptr %1129, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(16) %88) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef %87)
          to label %1131 unwind label %1138

1131:                                             ; preds = %1127
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  %1132 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1132, ptr noundef @.str.3)
          to label %1133 unwind label %1143

1133:                                             ; preds = %1131
  invoke void @__cxa_throw(ptr %1132, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %3405 unwind label %1147

1134:                                             ; preds = %1125
  %1135 = landingpad { ptr, i32 }
          cleanup
  %1136 = extractvalue { ptr, i32 } %1135, 0
  store ptr %1136, ptr %19, align 8
  %1137 = extractvalue { ptr, i32 } %1135, 1
  store i32 %1137, ptr %20, align 4
  br label %1142

1138:                                             ; preds = %1127
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %19, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %88) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #0
  br label %1142

1142:                                             ; preds = %1138, %1134
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  br label %1151

1143:                                             ; preds = %1131
  %1144 = landingpad { ptr, i32 }
          cleanup
  %1145 = extractvalue { ptr, i32 } %1144, 0
  store ptr %1145, ptr %19, align 8
  %1146 = extractvalue { ptr, i32 } %1144, 1
  store i32 %1146, ptr %20, align 4
  call void @__cxa_free_exception(ptr %1132) #0
  br label %1151

1147:                                             ; preds = %1133
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %19, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %20, align 4
  br label %1151

1151:                                             ; preds = %1147, %1143, %1142
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  br label %1158

1152:                                             ; No predecessors!
  br label %1153

1153:                                             ; preds = %1152
  br label %1154

1154:                                             ; preds = %1153, %1050
  store i32 0, ptr %23, align 4
  br label %1155

1155:                                             ; preds = %1154, %1119, %1099, %1065
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  %1156 = load i32, ptr %23, align 4
  switch i32 %1156, label %3396 [
    i32 0, label %1157
  ]

1157:                                             ; preds = %1155
  br label %1159

1158:                                             ; preds = %1151, %1120, %1113, %1066, %1056
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %3398

1159:                                             ; preds = %1157, %1041, %1032
  br label %1160

1160:                                             ; preds = %1159
  br label %1161

1161:                                             ; preds = %1160
  br label %1162

1162:                                             ; preds = %1161
  %1163 = load ptr, ptr %13, align 8, !tbaa !5
  %1164 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %89, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1163, ptr noundef %1164, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %1165 unwind label %331

1165:                                             ; preds = %1162
  %1166 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %89, i1 noundef zeroext false)
          to label %1167 unwind label %1168

1167:                                             ; preds = %1165
  store i1 %1166, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %89) #0
  store i32 1, ptr %23, align 4
  br label %3396

1168:                                             ; preds = %1165
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %19, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %89) #0
  br label %3398

1172:                                             ; preds = %712, %704
  br label %1173

1173:                                             ; preds = %1172
  br label %1174

1174:                                             ; preds = %1173, %488
  br label %1175

1175:                                             ; preds = %1174, %429
  br label %1176

1176:                                             ; preds = %1175, %408
  br label %1177

1177:                                             ; preds = %1176, %339
  br label %1178

1178:                                             ; preds = %1177, %304
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #0
  %1179 = load ptr, ptr %13, align 8, !tbaa !5
  %1180 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1179)
          to label %1181 unwind label %1198

1181:                                             ; preds = %1178
  %1182 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1180)
          to label %1183 unwind label %1198

1183:                                             ; preds = %1181
  store ptr %1182, ptr %90, align 8, !tbaa !5
  %1184 = load ptr, ptr %90, align 8, !tbaa !5
  %1185 = icmp ne ptr %1184, null
  br i1 %1185, label %1186, label %1207

1186:                                             ; preds = %1183
  %1187 = load ptr, ptr %90, align 8, !tbaa !5
  %1188 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %1187, i32 0, i32 1
  %1189 = load i32, ptr %1188, align 8, !tbaa !77
  %1190 = lshr i32 %1189, 8
  %1191 = icmp eq i32 %1190, 2
  br i1 %1191, label %1192, label %1206

1192:                                             ; preds = %1186
  %1193 = load ptr, ptr %13, align 8, !tbaa !5
  %1194 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %91, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1193, ptr noundef %1194, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %1195 unwind label %1198

1195:                                             ; preds = %1192
  %1196 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %91, i1 noundef zeroext false)
          to label %1197 unwind label %1202

1197:                                             ; preds = %1195
  store i1 %1196, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %91) #0
  store i32 1, ptr %23, align 4
  br label %1208

1198:                                             ; preds = %1192, %1181, %1178
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %19, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %20, align 4
  br label %1236

1202:                                             ; preds = %1195
  %1203 = landingpad { ptr, i32 }
          cleanup
  %1204 = extractvalue { ptr, i32 } %1203, 0
  store ptr %1204, ptr %19, align 8
  %1205 = extractvalue { ptr, i32 } %1203, 1
  store i32 %1205, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %91) #0
  br label %1236

1206:                                             ; preds = %1186
  br label %1207

1207:                                             ; preds = %1206, %1183
  store i32 0, ptr %23, align 4
  br label %1208

1208:                                             ; preds = %1207, %1197
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  %1209 = load i32, ptr %23, align 4
  switch i32 %1209, label %3396 [
    i32 0, label %1210
  ]

1210:                                             ; preds = %1208
  %1211 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  store i1 false, ptr %94, align 1
  store i1 false, ptr %95, align 1
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1212 unwind label %1237

1212:                                             ; preds = %1210
  %1213 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1211, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %1214 unwind label %1241

1214:                                             ; preds = %1212
  br i1 %1213, label %1215, label %1222

1215:                                             ; preds = %1214
  %1216 = load ptr, ptr %13, align 8, !tbaa !5
  %1217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H11get_root_tyESC_(ptr noundef nonnull align 8 dereferenceable(8) %1216)
          to label %1218 unwind label %1241

1218:                                             ; preds = %1215
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  store i1 true, ptr %94, align 1
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %1219 unwind label %1245

1219:                                             ; preds = %1218
  store i1 true, ptr %95, align 1
  %1220 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1217, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %1221 unwind label %1249

1221:                                             ; preds = %1219
  br label %1222

1222:                                             ; preds = %1221, %1214
  %1223 = phi i1 [ false, %1214 ], [ %1220, %1221 ]
  %1224 = load i1, ptr %95, align 1
  br i1 %1224, label %1225, label %1226

1225:                                             ; preds = %1222
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  br label %1226

1226:                                             ; preds = %1225, %1222
  %1227 = load i1, ptr %94, align 1
  br i1 %1227, label %1228, label %1229

1228:                                             ; preds = %1226
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1229

1229:                                             ; preds = %1228, %1226
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br i1 %1223, label %1230, label %1266

1230:                                             ; preds = %1229
  %1231 = load ptr, ptr %13, align 8, !tbaa !5
  %1232 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %96, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %1231, ptr noundef %1232, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %1233 unwind label %331

1233:                                             ; preds = %1230
  %1234 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %96, i1 noundef zeroext false)
          to label %1235 unwind label %1262

1235:                                             ; preds = %1233
  store i1 %1234, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %96) #0
  store i32 1, ptr %23, align 4
  br label %3396

1236:                                             ; preds = %1202, %1198
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  br label %3398

1237:                                             ; preds = %1210
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %19, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %20, align 4
  br label %1261

1241:                                             ; preds = %1215, %1212
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %19, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %20, align 4
  br label %1260

1245:                                             ; preds = %1218
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %19, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %20, align 4
  br label %1256

1249:                                             ; preds = %1219
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %19, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %20, align 4
  %1253 = load i1, ptr %95, align 1
  br i1 %1253, label %1254, label %1255

1254:                                             ; preds = %1249
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  br label %1255

1255:                                             ; preds = %1254, %1249
  br label %1256

1256:                                             ; preds = %1255, %1245
  %1257 = load i1, ptr %94, align 1
  br i1 %1257, label %1258, label %1259

1258:                                             ; preds = %1256
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1259

1259:                                             ; preds = %1258, %1256
  br label %1260

1260:                                             ; preds = %1259, %1241
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  br label %1261

1261:                                             ; preds = %1260, %1237
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %3398

1262:                                             ; preds = %1233
  %1263 = landingpad { ptr, i32 }
          cleanup
  %1264 = extractvalue { ptr, i32 } %1263, 0
  store ptr %1264, ptr %19, align 8
  %1265 = extractvalue { ptr, i32 } %1263, 1
  store i32 %1265, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %96) #0
  br label %3398

1266:                                             ; preds = %1229
  call void @llvm.lifetime.start.p0(i64 1, ptr %97) #0
  store i8 1, ptr %97, align 1, !tbaa !9
  br label %1267

1267:                                             ; preds = %3139, %1266
  %1268 = load i8, ptr %97, align 1, !tbaa !9, !range !12, !noundef !13
  %1269 = trunc i8 %1268 to i1
  br i1 %1269, label %1271, label %1270

1270:                                             ; preds = %1267
  store i32 7, ptr %23, align 4
  br label %3140

1271:                                             ; preds = %1267
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  %1272 = load ptr, ptr %13, align 8, !tbaa !5
  %1273 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1272)
          to label %1274 unwind label %1279

1274:                                             ; preds = %1271
  store ptr %1273, ptr %98, align 8, !tbaa !5
  br label %1275

1275:                                             ; preds = %3134, %1274
  %1276 = load i8, ptr %97, align 1, !tbaa !9, !range !12, !noundef !13
  %1277 = trunc i8 %1276 to i1
  br i1 %1277, label %1283, label %1278

1278:                                             ; preds = %1275
  store i32 10, ptr %23, align 4
  br label %3135

1279:                                             ; preds = %1283, %1271
  %1280 = landingpad { ptr, i32 }
          cleanup
  %1281 = extractvalue { ptr, i32 } %1280, 0
  store ptr %1281, ptr %19, align 8
  %1282 = extractvalue { ptr, i32 } %1280, 1
  store i32 %1282, ptr %20, align 4
  br label %3137

1283:                                             ; preds = %1275
  %1284 = load ptr, ptr %98, align 8, !tbaa !5
  %1285 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %1284)
          to label %1286 unwind label %1279

1286:                                             ; preds = %1283
  switch i32 %1285, label %1288 [
    i32 0, label %1287
    i32 10, label %1289
    i32 14, label %1351
    i32 13, label %1617
    i32 15, label %1857
    i32 16, label %2067
    i32 6, label %2232
    i32 7, label %2404
    i32 4, label %2542
  ]

1287:                                             ; preds = %1286
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 197, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #11
  unreachable

1288:                                             ; preds = %1286
  br label %3133

1289:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %99) #0
  store i8 1, ptr %99, align 1, !tbaa !9
  br label %1290

1290:                                             ; preds = %1347, %1289
  %1291 = load i8, ptr %99, align 1, !tbaa !9, !range !12, !noundef !13
  %1292 = trunc i8 %1291 to i1
  br i1 %1292, label %1294, label %1293

1293:                                             ; preds = %1290
  store i32 14, ptr %23, align 4
  br label %1348

1294:                                             ; preds = %1290
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #0
  %1295 = load ptr, ptr %98, align 8, !tbaa !5
  %1296 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1295)
          to label %1297 unwind label %1303

1297:                                             ; preds = %1294
  store ptr %1296, ptr %100, align 8, !tbaa !5
  br label %1298

1298:                                             ; preds = %1342, %1297
  %1299 = load ptr, ptr %100, align 8, !tbaa !5
  %1300 = load i8, ptr %99, align 1, !tbaa !9, !range !12, !noundef !13
  %1301 = trunc i8 %1300 to i1
  br i1 %1301, label %1307, label %1302

1302:                                             ; preds = %1298
  store i32 17, ptr %23, align 4
  br label %1343

1303:                                             ; preds = %1320, %1317, %1310, %1294
  %1304 = landingpad { ptr, i32 }
          cleanup
  %1305 = extractvalue { ptr, i32 } %1304, 0
  store ptr %1305, ptr %19, align 8
  %1306 = extractvalue { ptr, i32 } %1304, 1
  store i32 %1306, ptr %20, align 4
  br label %1345

1307:                                             ; preds = %1298
  %1308 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %1309 = icmp sge i32 %1308, 4
  br i1 %1309, label %1310, label %1341

1310:                                             ; preds = %1307
  %1311 = load ptr, ptr %11, align 8, !tbaa !5
  %1312 = getelementptr inbounds i8, ptr %270, i64 8
  %1313 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1312, i32 0, i32 0
  %1314 = load ptr, ptr %1313, align 8, !tbaa !48
  %1315 = load ptr, ptr %10, align 8, !tbaa !5
  %1316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %1314, ptr noundef nonnull align 8 dereferenceable(8) %1315, ptr noundef @.str.6)
          to label %1317 unwind label %1303

1317:                                             ; preds = %1310
  %1318 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1311, ptr noundef nonnull align 8 dereferenceable(8) %1316)
          to label %1319 unwind label %1303

1319:                                             ; preds = %1317
  br i1 %1318, label %1320, label %1341

1320:                                             ; preds = %1319
  %1321 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(8) %1321)
          to label %1322 unwind label %1303

1322:                                             ; preds = %1320
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %103)
          to label %1323 unwind label %1327

1323:                                             ; preds = %1322
  call void @llvm.memset.p0.i64(ptr align 8 %104, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %104) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %101, ptr noundef %102, ptr noundef %103, ptr noundef %104)
          to label %1324 unwind label %1331

1324:                                             ; preds = %1323
  %1325 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %101, i1 noundef zeroext false)
          to label %1326 unwind label %1335

1326:                                             ; preds = %1324
  store i1 %1325, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %101) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %104) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  store i32 1, ptr %23, align 4
  br label %1343

1327:                                             ; preds = %1322
  %1328 = landingpad { ptr, i32 }
          cleanup
  %1329 = extractvalue { ptr, i32 } %1328, 0
  store ptr %1329, ptr %19, align 8
  %1330 = extractvalue { ptr, i32 } %1328, 1
  store i32 %1330, ptr %20, align 4
  br label %1340

1331:                                             ; preds = %1323
  %1332 = landingpad { ptr, i32 }
          cleanup
  %1333 = extractvalue { ptr, i32 } %1332, 0
  store ptr %1333, ptr %19, align 8
  %1334 = extractvalue { ptr, i32 } %1332, 1
  store i32 %1334, ptr %20, align 4
  br label %1339

1335:                                             ; preds = %1324
  %1336 = landingpad { ptr, i32 }
          cleanup
  %1337 = extractvalue { ptr, i32 } %1336, 0
  store ptr %1337, ptr %19, align 8
  %1338 = extractvalue { ptr, i32 } %1336, 1
  store i32 %1338, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %101) #0
  br label %1339

1339:                                             ; preds = %1335, %1331
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %104) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #0
  br label %1340

1340:                                             ; preds = %1339, %1327
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  br label %1345

1341:                                             ; preds = %1319, %1307
  br label %1342

1342:                                             ; preds = %1341
  store i8 0, ptr %99, align 1, !tbaa !9
  br label %1298, !llvm.loop !80

1343:                                             ; preds = %1326, %1302
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  %1344 = load i32, ptr %23, align 4
  switch i32 %1344, label %1348 [
    i32 17, label %1346
  ]

1345:                                             ; preds = %1340, %1303
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #0
  br label %3137

1346:                                             ; preds = %1343
  br label %1347

1347:                                             ; preds = %1346
  store i8 0, ptr %99, align 1, !tbaa !9
  br label %1290, !llvm.loop !82

1348:                                             ; preds = %1343, %1293
  call void @llvm.lifetime.end.p0(i64 1, ptr %99) #0
  %1349 = load i32, ptr %23, align 4
  switch i32 %1349, label %3135 [
    i32 14, label %1350
  ]

1350:                                             ; preds = %1348
  br label %3133

1351:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #0
  store i8 1, ptr %105, align 1, !tbaa !9
  br label %1352

1352:                                             ; preds = %1613, %1351
  %1353 = load i8, ptr %105, align 1, !tbaa !9, !range !12, !noundef !13
  %1354 = trunc i8 %1353 to i1
  br i1 %1354, label %1356, label %1355

1355:                                             ; preds = %1352
  store i32 20, ptr %23, align 4
  br label %1614

1356:                                             ; preds = %1352
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #0
  %1357 = load ptr, ptr %98, align 8, !tbaa !5
  %1358 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1357)
          to label %1359 unwind label %1365

1359:                                             ; preds = %1356
  store ptr %1358, ptr %106, align 8, !tbaa !5
  br label %1360

1360:                                             ; preds = %1608, %1359
  %1361 = load ptr, ptr %106, align 8, !tbaa !5
  %1362 = load i8, ptr %105, align 1, !tbaa !9, !range !12, !noundef !13
  %1363 = trunc i8 %1362 to i1
  br i1 %1363, label %1369, label %1364

1364:                                             ; preds = %1360
  store i32 23, ptr %23, align 4
  br label %1609

1365:                                             ; preds = %1586, %1583, %1577, %1381, %1375, %1369, %1356
  %1366 = landingpad { ptr, i32 }
          cleanup
  %1367 = extractvalue { ptr, i32 } %1366, 0
  store ptr %1367, ptr %19, align 8
  %1368 = extractvalue { ptr, i32 } %1366, 1
  store i32 %1368, ptr %20, align 4
  br label %1611

1369:                                             ; preds = %1360
  %1370 = load ptr, ptr %11, align 8, !tbaa !5
  %1371 = getelementptr inbounds i8, ptr %270, i64 8
  %1372 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1371, i32 0, i32 10
  %1373 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1370, ptr noundef nonnull align 8 dereferenceable(8) %1372)
          to label %1374 unwind label %1365

1374:                                             ; preds = %1369
  br i1 %1373, label %1387, label %1375

1375:                                             ; preds = %1374
  %1376 = load ptr, ptr %11, align 8, !tbaa !5
  %1377 = getelementptr inbounds i8, ptr %270, i64 8
  %1378 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1377, i32 0, i32 11
  %1379 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1376, ptr noundef nonnull align 8 dereferenceable(8) %1378)
          to label %1380 unwind label %1365

1380:                                             ; preds = %1375
  br i1 %1379, label %1387, label %1381

1381:                                             ; preds = %1380
  %1382 = load ptr, ptr %11, align 8, !tbaa !5
  %1383 = getelementptr inbounds i8, ptr %270, i64 8
  %1384 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1383, i32 0, i32 12
  %1385 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1382, ptr noundef nonnull align 8 dereferenceable(8) %1384)
          to label %1386 unwind label %1365

1386:                                             ; preds = %1381
  br i1 %1385, label %1387, label %1577

1387:                                             ; preds = %1386, %1380, %1374
  %1388 = load ptr, ptr %12, align 8, !tbaa !5
  %1389 = icmp ne ptr %1388, null
  br i1 %1389, label %1390, label %1448

1390:                                             ; preds = %1387
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #0
  %1391 = load ptr, ptr %12, align 8, !tbaa !5
  %1392 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1391, i32 0, i32 1
  %1393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1392, i64 noundef 0)
          to label %1394 unwind label %1406

1394:                                             ; preds = %1390
  %1395 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1393)
          to label %1396 unwind label %1406

1396:                                             ; preds = %1394
  %1397 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1395)
          to label %1398 unwind label %1406

1398:                                             ; preds = %1396
  store ptr %1397, ptr %107, align 8, !tbaa !5
  %1399 = load ptr, ptr %107, align 8, !tbaa !5
  %1400 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1399) #0
  %1401 = load ptr, ptr %106, align 8, !tbaa !5
  %1402 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1401, i32 0, i32 5
  %1403 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1402) #0
  %1404 = icmp ne i64 %1400, %1403
  br i1 %1404, label %1405, label %1410

1405:                                             ; preds = %1398
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1444

1406:                                             ; preds = %1396, %1394, %1390
  %1407 = landingpad { ptr, i32 }
          cleanup
  %1408 = extractvalue { ptr, i32 } %1407, 0
  store ptr %1408, ptr %19, align 8
  %1409 = extractvalue { ptr, i32 } %1407, 1
  store i32 %1409, ptr %20, align 4
  br label %1447

1410:                                             ; preds = %1398
  call void @llvm.lifetime.start.p0(i64 4, ptr %108) #0
  store i32 0, ptr %108, align 4, !tbaa !83
  br label %1411

1411:                                             ; preds = %1438, %1410
  %1412 = load i32, ptr %108, align 4, !tbaa !83
  %1413 = zext i32 %1412 to i64
  %1414 = load ptr, ptr %107, align 8, !tbaa !5
  %1415 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1414) #0
  %1416 = icmp ult i64 %1413, %1415
  br i1 %1416, label %1418, label %1417

1417:                                             ; preds = %1411
  store i32 26, ptr %23, align 4
  br label %1441

1418:                                             ; preds = %1411
  %1419 = load ptr, ptr %107, align 8, !tbaa !5
  %1420 = load i32, ptr %108, align 4, !tbaa !83
  %1421 = zext i32 %1420 to i64
  %1422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1419, i64 noundef %1421) #0
  %1423 = load ptr, ptr %10, align 8, !tbaa !5
  %1424 = load ptr, ptr %106, align 8, !tbaa !5
  %1425 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1424, i32 0, i32 5
  %1426 = load i32, ptr %108, align 4, !tbaa !83
  %1427 = zext i32 %1426 to i64
  %1428 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1425, i64 noundef %1427) #0
  %1429 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1422, ptr noundef nonnull align 8 dereferenceable(8) %1423, ptr noundef nonnull align 8 dereferenceable(8) %1428, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %1430 unwind label %1433

1430:                                             ; preds = %1418
  %1431 = icmp eq i32 %1429, 2
  br i1 %1431, label %1432, label %1437

1432:                                             ; preds = %1430
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1441

1433:                                             ; preds = %1418
  %1434 = landingpad { ptr, i32 }
          cleanup
  %1435 = extractvalue { ptr, i32 } %1434, 0
  store ptr %1435, ptr %19, align 8
  %1436 = extractvalue { ptr, i32 } %1434, 1
  store i32 %1436, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #0
  br label %1447

1437:                                             ; preds = %1430
  br label %1438

1438:                                             ; preds = %1437
  %1439 = load i32, ptr %108, align 4, !tbaa !83
  %1440 = add i32 %1439, 1
  store i32 %1440, ptr %108, align 4, !tbaa !83
  br label %1411, !llvm.loop !84

1441:                                             ; preds = %1432, %1417
  call void @llvm.lifetime.end.p0(i64 4, ptr %108) #0
  %1442 = load i32, ptr %23, align 4
  switch i32 %1442, label %1444 [
    i32 26, label %1443
  ]

1443:                                             ; preds = %1441
  store i32 0, ptr %23, align 4
  br label %1444

1444:                                             ; preds = %1443, %1441, %1405
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  %1445 = load i32, ptr %23, align 4
  switch i32 %1445, label %1609 [
    i32 0, label %1446
  ]

1446:                                             ; preds = %1444
  br label %1449

1447:                                             ; preds = %1433, %1406
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %1611

1448:                                             ; preds = %1387
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %12, align 8, !tbaa !5
  br label %1449

1449:                                             ; preds = %1448, %1446
  call void @llvm.lifetime.start.p0(i64 24, ptr %109) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %110) #0
  store i32 0, ptr %110, align 4, !tbaa !83
  br label %1450

1450:                                             ; preds = %1466, %1449
  %1451 = load i32, ptr %110, align 4, !tbaa !83
  %1452 = zext i32 %1451 to i64
  %1453 = load ptr, ptr %106, align 8, !tbaa !5
  %1454 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1453, i32 0, i32 5
  %1455 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1454) #0
  %1456 = icmp ult i64 %1452, %1455
  br i1 %1456, label %1458, label %1457

1457:                                             ; preds = %1450
  store i32 29, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #0
  br label %1478

1458:                                             ; preds = %1450
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #0
  %1459 = load ptr, ptr %106, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1459, i32 0, i32 5
  %1461 = load i32, ptr %110, align 4, !tbaa !83
  %1462 = zext i32 %1461 to i64
  %1463 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1460, i64 noundef %1462) #0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %111, ptr noundef nonnull align 8 dereferenceable(8) %1463)
          to label %1464 unwind label %1469

1464:                                             ; preds = %1458
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %109, ptr noundef nonnull align 8 dereferenceable(8) %111)
          to label %1465 unwind label %1473

1465:                                             ; preds = %1464
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  br label %1466

1466:                                             ; preds = %1465
  %1467 = load i32, ptr %110, align 4, !tbaa !83
  %1468 = add i32 %1467, 1
  store i32 %1468, ptr %110, align 4, !tbaa !83
  br label %1450, !llvm.loop !85

1469:                                             ; preds = %1458
  %1470 = landingpad { ptr, i32 }
          cleanup
  %1471 = extractvalue { ptr, i32 } %1470, 0
  store ptr %1471, ptr %19, align 8
  %1472 = extractvalue { ptr, i32 } %1470, 1
  store i32 %1472, ptr %20, align 4
  br label %1477

1473:                                             ; preds = %1464
  %1474 = landingpad { ptr, i32 }
          cleanup
  %1475 = extractvalue { ptr, i32 } %1474, 0
  store ptr %1475, ptr %19, align 8
  %1476 = extractvalue { ptr, i32 } %1474, 1
  store i32 %1476, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %111) #0
  br label %1477

1477:                                             ; preds = %1473, %1469
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %110) #0
  br label %1576

1478:                                             ; preds = %1457
  call void @llvm.lifetime.start.p0(i64 24, ptr %112) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %112)
          to label %1479 unwind label %1509

1479:                                             ; preds = %1478
  %1480 = getelementptr inbounds %"struct.HIR::PathParams", ptr %112, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %113, ptr noundef %114)
          to label %1481 unwind label %1513

1481:                                             ; preds = %1479
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1480, ptr noundef %113)
          to label %1482 unwind label %1517

1482:                                             ; preds = %1481
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %115) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %116) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %117) #0
  %1483 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %117, i32 0, i32 0
  %1484 = getelementptr inbounds i8, ptr %270, i64 8
  %1485 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1484, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %1485)
          to label %1486 unwind label %1522

1486:                                             ; preds = %1482
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %119, ptr noundef nonnull align 8 dereferenceable(24) %112)
          to label %1487 unwind label %1526

1487:                                             ; preds = %1486
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %1483, ptr noundef %118, ptr noundef %119)
          to label %1488 unwind label %1530

1488:                                             ; preds = %1487
  %1489 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %117, i32 0, i32 1
  %1490 = load ptr, ptr %106, align 8, !tbaa !5
  %1491 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1490, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1489, ptr noundef nonnull align 8 dereferenceable(8) %1491)
          to label %1492 unwind label %1534

1492:                                             ; preds = %1488
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.264") align 8 %116, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %117)
          to label %1493 unwind label %1538

1493:                                             ; preds = %1492
  %1494 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %115, ptr noundef nonnull align 8 dereferenceable(48) %116)
          to label %1495 unwind label %1542

1495:                                             ; preds = %1493
  %1496 = getelementptr inbounds { ptr, i8 }, ptr %120, i32 0, i32 0
  %1497 = extractvalue { ptr, i8 } %1494, 0
  store ptr %1497, ptr %1496, align 8
  %1498 = getelementptr inbounds { ptr, i8 }, ptr %120, i32 0, i32 1
  %1499 = extractvalue { ptr, i8 } %1494, 1
  store i8 %1499, ptr %1498, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %117) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %116) #0
  %1500 = load ptr, ptr %106, align 8, !tbaa !5
  %1501 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %1500, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %122, ptr noundef nonnull align 8 dereferenceable(96) %1501)
          to label %1502 unwind label %1550

1502:                                             ; preds = %1495
  %1503 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %123, ptr noundef nonnull align 8 dereferenceable(8) %1503)
          to label %1504 unwind label %1554

1504:                                             ; preds = %1502
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %124, ptr noundef nonnull align 8 dereferenceable(24) %112)
          to label %1505 unwind label %1558

1505:                                             ; preds = %1504
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %125, ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %121, ptr noundef %122, ptr noundef %123, ptr noundef %124, ptr noundef %125)
          to label %1506 unwind label %1562

1506:                                             ; preds = %1505
  %1507 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %121, i1 noundef zeroext false)
          to label %1508 unwind label %1566

1508:                                             ; preds = %1506
  store i1 %1507, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %125) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %122) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %115) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %112) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %109) #0
  br label %1609

1509:                                             ; preds = %1478
  %1510 = landingpad { ptr, i32 }
          cleanup
  %1511 = extractvalue { ptr, i32 } %1510, 0
  store ptr %1511, ptr %19, align 8
  %1512 = extractvalue { ptr, i32 } %1510, 1
  store i32 %1512, ptr %20, align 4
  br label %1575

1513:                                             ; preds = %1479
  %1514 = landingpad { ptr, i32 }
          cleanup
  %1515 = extractvalue { ptr, i32 } %1514, 0
  store ptr %1515, ptr %19, align 8
  %1516 = extractvalue { ptr, i32 } %1514, 1
  store i32 %1516, ptr %20, align 4
  br label %1521

1517:                                             ; preds = %1481
  %1518 = landingpad { ptr, i32 }
          cleanup
  %1519 = extractvalue { ptr, i32 } %1518, 0
  store ptr %1519, ptr %19, align 8
  %1520 = extractvalue { ptr, i32 } %1518, 1
  store i32 %1520, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  br label %1521

1521:                                             ; preds = %1517, %1513
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #0
  br label %1574

1522:                                             ; preds = %1482
  %1523 = landingpad { ptr, i32 }
          cleanup
  %1524 = extractvalue { ptr, i32 } %1523, 0
  store ptr %1524, ptr %19, align 8
  %1525 = extractvalue { ptr, i32 } %1523, 1
  store i32 %1525, ptr %20, align 4
  br label %1549

1526:                                             ; preds = %1486
  %1527 = landingpad { ptr, i32 }
          cleanup
  %1528 = extractvalue { ptr, i32 } %1527, 0
  store ptr %1528, ptr %19, align 8
  %1529 = extractvalue { ptr, i32 } %1527, 1
  store i32 %1529, ptr %20, align 4
  br label %1548

1530:                                             ; preds = %1487
  %1531 = landingpad { ptr, i32 }
          cleanup
  %1532 = extractvalue { ptr, i32 } %1531, 0
  store ptr %1532, ptr %19, align 8
  %1533 = extractvalue { ptr, i32 } %1531, 1
  store i32 %1533, ptr %20, align 4
  br label %1547

1534:                                             ; preds = %1488
  %1535 = landingpad { ptr, i32 }
          cleanup
  %1536 = extractvalue { ptr, i32 } %1535, 0
  store ptr %1536, ptr %19, align 8
  %1537 = extractvalue { ptr, i32 } %1535, 1
  store i32 %1537, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1483) #0
  br label %1547

1538:                                             ; preds = %1492
  %1539 = landingpad { ptr, i32 }
          cleanup
  %1540 = extractvalue { ptr, i32 } %1539, 0
  store ptr %1540, ptr %19, align 8
  %1541 = extractvalue { ptr, i32 } %1539, 1
  store i32 %1541, ptr %20, align 4
  br label %1546

1542:                                             ; preds = %1493
  %1543 = landingpad { ptr, i32 }
          cleanup
  %1544 = extractvalue { ptr, i32 } %1543, 0
  store ptr %1544, ptr %19, align 8
  %1545 = extractvalue { ptr, i32 } %1543, 1
  store i32 %1545, ptr %20, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #0
  br label %1546

1546:                                             ; preds = %1542, %1538
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %117) #0
  br label %1547

1547:                                             ; preds = %1546, %1534, %1530
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #0
  br label %1548

1548:                                             ; preds = %1547, %1526
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  br label %1549

1549:                                             ; preds = %1548, %1522
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %116) #0
  br label %1573

1550:                                             ; preds = %1495
  %1551 = landingpad { ptr, i32 }
          cleanup
  %1552 = extractvalue { ptr, i32 } %1551, 0
  store ptr %1552, ptr %19, align 8
  %1553 = extractvalue { ptr, i32 } %1551, 1
  store i32 %1553, ptr %20, align 4
  br label %1573

1554:                                             ; preds = %1502
  %1555 = landingpad { ptr, i32 }
          cleanup
  %1556 = extractvalue { ptr, i32 } %1555, 0
  store ptr %1556, ptr %19, align 8
  %1557 = extractvalue { ptr, i32 } %1555, 1
  store i32 %1557, ptr %20, align 4
  br label %1572

1558:                                             ; preds = %1504
  %1559 = landingpad { ptr, i32 }
          cleanup
  %1560 = extractvalue { ptr, i32 } %1559, 0
  store ptr %1560, ptr %19, align 8
  %1561 = extractvalue { ptr, i32 } %1559, 1
  store i32 %1561, ptr %20, align 4
  br label %1571

1562:                                             ; preds = %1505
  %1563 = landingpad { ptr, i32 }
          cleanup
  %1564 = extractvalue { ptr, i32 } %1563, 0
  store ptr %1564, ptr %19, align 8
  %1565 = extractvalue { ptr, i32 } %1563, 1
  store i32 %1565, ptr %20, align 4
  br label %1570

1566:                                             ; preds = %1506
  %1567 = landingpad { ptr, i32 }
          cleanup
  %1568 = extractvalue { ptr, i32 } %1567, 0
  store ptr %1568, ptr %19, align 8
  %1569 = extractvalue { ptr, i32 } %1567, 1
  store i32 %1569, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #0
  br label %1570

1570:                                             ; preds = %1566, %1562
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %125) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  br label %1571

1571:                                             ; preds = %1570, %1558
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %123) #0
  br label %1572

1572:                                             ; preds = %1571, %1554
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %122) #0
  br label %1573

1573:                                             ; preds = %1572, %1550, %1549
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %115) #0
  br label %1574

1574:                                             ; preds = %1573, %1521
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %112) #0
  br label %1575

1575:                                             ; preds = %1574, %1509
  call void @llvm.lifetime.end.p0(i64 24, ptr %112) #0
  br label %1576

1576:                                             ; preds = %1575, %1477
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %109) #0
  br label %1611

1577:                                             ; preds = %1386
  %1578 = load ptr, ptr %11, align 8, !tbaa !5
  %1579 = getelementptr inbounds i8, ptr %270, i64 8
  %1580 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1579, i32 0, i32 0
  %1581 = load ptr, ptr %1580, align 8, !tbaa !48
  %1582 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944) %1581, ptr noundef @.str.8)
          to label %1583 unwind label %1365

1583:                                             ; preds = %1577
  %1584 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1578, ptr noundef nonnull align 8 dereferenceable(8) %1582)
          to label %1585 unwind label %1365

1585:                                             ; preds = %1583
  br i1 %1584, label %1586, label %1607

1586:                                             ; preds = %1585
  %1587 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %127, ptr noundef nonnull align 8 dereferenceable(8) %1587)
          to label %1588 unwind label %1365

1588:                                             ; preds = %1586
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %128)
          to label %1589 unwind label %1593

1589:                                             ; preds = %1588
  call void @llvm.memset.p0.i64(ptr align 8 %129, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %129) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %126, ptr noundef %127, ptr noundef %128, ptr noundef %129)
          to label %1590 unwind label %1597

1590:                                             ; preds = %1589
  %1591 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %126, i1 noundef zeroext false)
          to label %1592 unwind label %1601

1592:                                             ; preds = %1590
  store i1 %1591, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %126) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %129) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %128) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  store i32 1, ptr %23, align 4
  br label %1609

1593:                                             ; preds = %1588
  %1594 = landingpad { ptr, i32 }
          cleanup
  %1595 = extractvalue { ptr, i32 } %1594, 0
  store ptr %1595, ptr %19, align 8
  %1596 = extractvalue { ptr, i32 } %1594, 1
  store i32 %1596, ptr %20, align 4
  br label %1606

1597:                                             ; preds = %1589
  %1598 = landingpad { ptr, i32 }
          cleanup
  %1599 = extractvalue { ptr, i32 } %1598, 0
  store ptr %1599, ptr %19, align 8
  %1600 = extractvalue { ptr, i32 } %1598, 1
  store i32 %1600, ptr %20, align 4
  br label %1605

1601:                                             ; preds = %1590
  %1602 = landingpad { ptr, i32 }
          cleanup
  %1603 = extractvalue { ptr, i32 } %1602, 0
  store ptr %1603, ptr %19, align 8
  %1604 = extractvalue { ptr, i32 } %1602, 1
  store i32 %1604, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %126) #0
  br label %1605

1605:                                             ; preds = %1601, %1597
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %129) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %128) #0
  br label %1606

1606:                                             ; preds = %1605, %1593
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %127) #0
  br label %1611

1607:                                             ; preds = %1585
  br label %1608

1608:                                             ; preds = %1607
  store i8 0, ptr %105, align 1, !tbaa !9
  br label %1360, !llvm.loop !86

1609:                                             ; preds = %1592, %1508, %1444, %1364
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  %1610 = load i32, ptr %23, align 4
  switch i32 %1610, label %1614 [
    i32 23, label %1612
  ]

1611:                                             ; preds = %1606, %1576, %1447, %1365
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #0
  br label %3137

1612:                                             ; preds = %1609
  br label %1613

1613:                                             ; preds = %1612
  store i8 0, ptr %105, align 1, !tbaa !9
  br label %1352, !llvm.loop !87

1614:                                             ; preds = %1609, %1355
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #0
  %1615 = load i32, ptr %23, align 4
  switch i32 %1615, label %3135 [
    i32 20, label %1616
  ]

1616:                                             ; preds = %1614
  br label %3133

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

1618:                                             ; preds = %1853, %1617
  %1619 = load i8, ptr %130, align 1, !tbaa !9, !range !12, !noundef !13
  %1620 = trunc i8 %1619 to i1
  br i1 %1620, label %1622, label %1621

1621:                                             ; preds = %1618
  store i32 32, ptr %23, align 4
  br label %1854

1622:                                             ; preds = %1618
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #0
  %1623 = load ptr, ptr %98, align 8, !tbaa !5
  %1624 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1623)
          to label %1625 unwind label %1631

1625:                                             ; preds = %1622
  store ptr %1624, ptr %131, align 8, !tbaa !5
  br label %1626

1626:                                             ; preds = %1848, %1625
  %1627 = load ptr, ptr %131, align 8, !tbaa !5
  %1628 = load i8, ptr %130, align 1, !tbaa !9, !range !12, !noundef !13
  %1629 = trunc i8 %1628 to i1
  br i1 %1629, label %1635, label %1630

1630:                                             ; preds = %1626
  store i32 35, ptr %23, align 4
  br label %1849

1631:                                             ; preds = %1647, %1641, %1635, %1622
  %1632 = landingpad { ptr, i32 }
          cleanup
  %1633 = extractvalue { ptr, i32 } %1632, 0
  store ptr %1633, ptr %19, align 8
  %1634 = extractvalue { ptr, i32 } %1632, 1
  store i32 %1634, ptr %20, align 4
  br label %1851

1635:                                             ; preds = %1626
  %1636 = load ptr, ptr %11, align 8, !tbaa !5
  %1637 = getelementptr inbounds i8, ptr %270, i64 8
  %1638 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1637, i32 0, i32 10
  %1639 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1636, ptr noundef nonnull align 8 dereferenceable(8) %1638)
          to label %1640 unwind label %1631

1640:                                             ; preds = %1635
  br i1 %1639, label %1653, label %1641

1641:                                             ; preds = %1640
  %1642 = load ptr, ptr %11, align 8, !tbaa !5
  %1643 = getelementptr inbounds i8, ptr %270, i64 8
  %1644 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1643, i32 0, i32 11
  %1645 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1642, ptr noundef nonnull align 8 dereferenceable(8) %1644)
          to label %1646 unwind label %1631

1646:                                             ; preds = %1641
  br i1 %1645, label %1653, label %1647

1647:                                             ; preds = %1646
  %1648 = load ptr, ptr %11, align 8, !tbaa !5
  %1649 = getelementptr inbounds i8, ptr %270, i64 8
  %1650 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1649, i32 0, i32 12
  %1651 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1648, ptr noundef nonnull align 8 dereferenceable(8) %1650)
          to label %1652 unwind label %1631

1652:                                             ; preds = %1647
  br i1 %1651, label %1653, label %1847

1653:                                             ; preds = %1652, %1646, %1640
  call void @llvm.lifetime.start.p0(i64 144, ptr %132) #0
  %1654 = load ptr, ptr %131, align 8, !tbaa !5
  %1655 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %132, ptr noundef nonnull align 8 dereferenceable(112) %1654, ptr noundef nonnull align 8 dereferenceable(8) %1655)
          to label %1656 unwind label %1674

1656:                                             ; preds = %1653
  %1657 = load ptr, ptr %12, align 8, !tbaa !5
  %1658 = icmp ne ptr %1657, null
  br i1 %1658, label %1659, label %1719

1659:                                             ; preds = %1656
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #0
  %1660 = load ptr, ptr %12, align 8, !tbaa !5
  %1661 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1660, i32 0, i32 1
  %1662 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1661, i64 noundef 0)
          to label %1663 unwind label %1678

1663:                                             ; preds = %1659
  %1664 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1662)
          to label %1665 unwind label %1678

1665:                                             ; preds = %1663
  %1666 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1664)
          to label %1667 unwind label %1678

1667:                                             ; preds = %1665
  store ptr %1666, ptr %133, align 8, !tbaa !5
  %1668 = load ptr, ptr %133, align 8, !tbaa !5
  %1669 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1668) #0
  %1670 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 5
  %1671 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1670) #0
  %1672 = icmp ne i64 %1669, %1671
  br i1 %1672, label %1673, label %1682

1673:                                             ; preds = %1667
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1715

1674:                                             ; preds = %1653
  %1675 = landingpad { ptr, i32 }
          cleanup
  %1676 = extractvalue { ptr, i32 } %1675, 0
  store ptr %1676, ptr %19, align 8
  %1677 = extractvalue { ptr, i32 } %1675, 1
  store i32 %1677, ptr %20, align 4
  br label %1846

1678:                                             ; preds = %1665, %1663, %1659
  %1679 = landingpad { ptr, i32 }
          cleanup
  %1680 = extractvalue { ptr, i32 } %1679, 0
  store ptr %1680, ptr %19, align 8
  %1681 = extractvalue { ptr, i32 } %1679, 1
  store i32 %1681, ptr %20, align 4
  br label %1718

1682:                                             ; preds = %1667
  call void @llvm.lifetime.start.p0(i64 4, ptr %134) #0
  store i32 0, ptr %134, align 4, !tbaa !83
  br label %1683

1683:                                             ; preds = %1709, %1682
  %1684 = load i32, ptr %134, align 4, !tbaa !83
  %1685 = zext i32 %1684 to i64
  %1686 = load ptr, ptr %133, align 8, !tbaa !5
  %1687 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1686) #0
  %1688 = icmp ult i64 %1685, %1687
  br i1 %1688, label %1690, label %1689

1689:                                             ; preds = %1683
  store i32 38, ptr %23, align 4
  br label %1712

1690:                                             ; preds = %1683
  %1691 = load ptr, ptr %133, align 8, !tbaa !5
  %1692 = load i32, ptr %134, align 4, !tbaa !83
  %1693 = zext i32 %1692 to i64
  %1694 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1691, i64 noundef %1693) #0
  %1695 = load ptr, ptr %10, align 8, !tbaa !5
  %1696 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 5
  %1697 = load i32, ptr %134, align 4, !tbaa !83
  %1698 = zext i32 %1697 to i64
  %1699 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1696, i64 noundef %1698) #0
  %1700 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1694, ptr noundef nonnull align 8 dereferenceable(8) %1695, ptr noundef nonnull align 8 dereferenceable(8) %1699, ptr noundef nonnull align 8 dereferenceable(8) %21)
          to label %1701 unwind label %1704

1701:                                             ; preds = %1690
  %1702 = icmp eq i32 %1700, 2
  br i1 %1702, label %1703, label %1708

1703:                                             ; preds = %1701
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1712

1704:                                             ; preds = %1690
  %1705 = landingpad { ptr, i32 }
          cleanup
  %1706 = extractvalue { ptr, i32 } %1705, 0
  store ptr %1706, ptr %19, align 8
  %1707 = extractvalue { ptr, i32 } %1705, 1
  store i32 %1707, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #0
  br label %1718

1708:                                             ; preds = %1701
  br label %1709

1709:                                             ; preds = %1708
  %1710 = load i32, ptr %134, align 4, !tbaa !83
  %1711 = add i32 %1710, 1
  store i32 %1711, ptr %134, align 4, !tbaa !83
  br label %1683, !llvm.loop !88

1712:                                             ; preds = %1703, %1689
  call void @llvm.lifetime.end.p0(i64 4, ptr %134) #0
  %1713 = load i32, ptr %23, align 4
  switch i32 %1713, label %1715 [
    i32 38, label %1714
  ]

1714:                                             ; preds = %1712
  store i32 0, ptr %23, align 4
  br label %1715

1715:                                             ; preds = %1714, %1712, %1673
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  %1716 = load i32, ptr %23, align 4
  switch i32 %1716, label %1844 [
    i32 0, label %1717
  ]

1717:                                             ; preds = %1715
  br label %1720

1718:                                             ; preds = %1704, %1678
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #0
  br label %1845

1719:                                             ; preds = %1656
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %12, align 8, !tbaa !5
  br label %1720

1720:                                             ; preds = %1719, %1717
  call void @llvm.lifetime.start.p0(i64 24, ptr %135) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %136) #0
  store i32 0, ptr %136, align 4, !tbaa !83
  br label %1721

1721:                                             ; preds = %1735, %1720
  %1722 = load i32, ptr %136, align 4, !tbaa !83
  %1723 = zext i32 %1722 to i64
  %1724 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 5
  %1725 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1724) #0
  %1726 = icmp ult i64 %1723, %1725
  br i1 %1726, label %1728, label %1727

1727:                                             ; preds = %1721
  store i32 41, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #0
  br label %1747

1728:                                             ; preds = %1721
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #0
  %1729 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 5
  %1730 = load i32, ptr %136, align 4, !tbaa !83
  %1731 = zext i32 %1730 to i64
  %1732 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1729, i64 noundef %1731) #0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %137, ptr noundef nonnull align 8 dereferenceable(8) %1732)
          to label %1733 unwind label %1738

1733:                                             ; preds = %1728
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %135, ptr noundef nonnull align 8 dereferenceable(8) %137)
          to label %1734 unwind label %1742

1734:                                             ; preds = %1733
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  br label %1735

1735:                                             ; preds = %1734
  %1736 = load i32, ptr %136, align 4, !tbaa !83
  %1737 = add i32 %1736, 1
  store i32 %1737, ptr %136, align 4, !tbaa !83
  br label %1721, !llvm.loop !89

1738:                                             ; preds = %1728
  %1739 = landingpad { ptr, i32 }
          cleanup
  %1740 = extractvalue { ptr, i32 } %1739, 0
  store ptr %1740, ptr %19, align 8
  %1741 = extractvalue { ptr, i32 } %1739, 1
  store i32 %1741, ptr %20, align 4
  br label %1746

1742:                                             ; preds = %1733
  %1743 = landingpad { ptr, i32 }
          cleanup
  %1744 = extractvalue { ptr, i32 } %1743, 0
  store ptr %1744, ptr %19, align 8
  %1745 = extractvalue { ptr, i32 } %1743, 1
  store i32 %1745, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %137) #0
  br label %1746

1746:                                             ; preds = %1742, %1738
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %136) #0
  br label %1843

1747:                                             ; preds = %1727
  call void @llvm.lifetime.start.p0(i64 24, ptr %138) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %1748 unwind label %1776

1748:                                             ; preds = %1747
  %1749 = getelementptr inbounds %"struct.HIR::PathParams", ptr %138, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %140, ptr noundef nonnull align 8 dereferenceable(24) %135) #0
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %139, ptr noundef %140)
          to label %1750 unwind label %1780

1750:                                             ; preds = %1748
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1749, ptr noundef %139)
          to label %1751 unwind label %1784

1751:                                             ; preds = %1750
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %141) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %141) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %142) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %143) #0
  %1752 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %143, i32 0, i32 0
  %1753 = getelementptr inbounds i8, ptr %270, i64 8
  %1754 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1753, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull align 8 dereferenceable(8) %1754)
          to label %1755 unwind label %1789

1755:                                             ; preds = %1751
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %145, ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %1756 unwind label %1793

1756:                                             ; preds = %1755
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %1752, ptr noundef %144, ptr noundef %145)
          to label %1757 unwind label %1797

1757:                                             ; preds = %1756
  %1758 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %143, i32 0, i32 1
  %1759 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1758, ptr noundef nonnull align 8 dereferenceable(8) %1759)
          to label %1760 unwind label %1801

1760:                                             ; preds = %1757
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.264") align 8 %142, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %143)
          to label %1761 unwind label %1805

1761:                                             ; preds = %1760
  %1762 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %141, ptr noundef nonnull align 8 dereferenceable(48) %142)
          to label %1763 unwind label %1809

1763:                                             ; preds = %1761
  %1764 = getelementptr inbounds { ptr, i8 }, ptr %146, i32 0, i32 0
  %1765 = extractvalue { ptr, i8 } %1762, 0
  store ptr %1765, ptr %1764, align 8
  %1766 = getelementptr inbounds { ptr, i8 }, ptr %146, i32 0, i32 1
  %1767 = extractvalue { ptr, i8 } %1762, 1
  store i8 %1767, ptr %1766, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %142) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %143) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %145) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %143) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %142) #0
  %1768 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %132, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %148, ptr noundef nonnull align 8 dereferenceable(96) %1768)
          to label %1769 unwind label %1817

1769:                                             ; preds = %1763
  %1770 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %149, ptr noundef nonnull align 8 dereferenceable(8) %1770)
          to label %1771 unwind label %1821

1771:                                             ; preds = %1769
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %150, ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %1772 unwind label %1825

1772:                                             ; preds = %1771
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %151, ptr noundef nonnull align 8 dereferenceable(48) %141) #0
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %147, ptr noundef %148, ptr noundef %149, ptr noundef %150, ptr noundef %151)
          to label %1773 unwind label %1829

1773:                                             ; preds = %1772
  %1774 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %147, i1 noundef zeroext false)
          to label %1775 unwind label %1833

1775:                                             ; preds = %1773
  store i1 %1774, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %147) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %151) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %150) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %148) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %141) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %141) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %138) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %138) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #0
  br label %1844

1776:                                             ; preds = %1747
  %1777 = landingpad { ptr, i32 }
          cleanup
  %1778 = extractvalue { ptr, i32 } %1777, 0
  store ptr %1778, ptr %19, align 8
  %1779 = extractvalue { ptr, i32 } %1777, 1
  store i32 %1779, ptr %20, align 4
  br label %1842

1780:                                             ; preds = %1748
  %1781 = landingpad { ptr, i32 }
          cleanup
  %1782 = extractvalue { ptr, i32 } %1781, 0
  store ptr %1782, ptr %19, align 8
  %1783 = extractvalue { ptr, i32 } %1781, 1
  store i32 %1783, ptr %20, align 4
  br label %1788

1784:                                             ; preds = %1750
  %1785 = landingpad { ptr, i32 }
          cleanup
  %1786 = extractvalue { ptr, i32 } %1785, 0
  store ptr %1786, ptr %19, align 8
  %1787 = extractvalue { ptr, i32 } %1785, 1
  store i32 %1787, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #0
  br label %1788

1788:                                             ; preds = %1784, %1780
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %140) #0
  br label %1841

1789:                                             ; preds = %1751
  %1790 = landingpad { ptr, i32 }
          cleanup
  %1791 = extractvalue { ptr, i32 } %1790, 0
  store ptr %1791, ptr %19, align 8
  %1792 = extractvalue { ptr, i32 } %1790, 1
  store i32 %1792, ptr %20, align 4
  br label %1816

1793:                                             ; preds = %1755
  %1794 = landingpad { ptr, i32 }
          cleanup
  %1795 = extractvalue { ptr, i32 } %1794, 0
  store ptr %1795, ptr %19, align 8
  %1796 = extractvalue { ptr, i32 } %1794, 1
  store i32 %1796, ptr %20, align 4
  br label %1815

1797:                                             ; preds = %1756
  %1798 = landingpad { ptr, i32 }
          cleanup
  %1799 = extractvalue { ptr, i32 } %1798, 0
  store ptr %1799, ptr %19, align 8
  %1800 = extractvalue { ptr, i32 } %1798, 1
  store i32 %1800, ptr %20, align 4
  br label %1814

1801:                                             ; preds = %1757
  %1802 = landingpad { ptr, i32 }
          cleanup
  %1803 = extractvalue { ptr, i32 } %1802, 0
  store ptr %1803, ptr %19, align 8
  %1804 = extractvalue { ptr, i32 } %1802, 1
  store i32 %1804, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1752) #0
  br label %1814

1805:                                             ; preds = %1760
  %1806 = landingpad { ptr, i32 }
          cleanup
  %1807 = extractvalue { ptr, i32 } %1806, 0
  store ptr %1807, ptr %19, align 8
  %1808 = extractvalue { ptr, i32 } %1806, 1
  store i32 %1808, ptr %20, align 4
  br label %1813

1809:                                             ; preds = %1761
  %1810 = landingpad { ptr, i32 }
          cleanup
  %1811 = extractvalue { ptr, i32 } %1810, 0
  store ptr %1811, ptr %19, align 8
  %1812 = extractvalue { ptr, i32 } %1810, 1
  store i32 %1812, ptr %20, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %142) #0
  br label %1813

1813:                                             ; preds = %1809, %1805
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %143) #0
  br label %1814

1814:                                             ; preds = %1813, %1801, %1797
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %145) #0
  br label %1815

1815:                                             ; preds = %1814, %1793
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %144) #0
  br label %1816

1816:                                             ; preds = %1815, %1789
  call void @llvm.lifetime.end.p0(i64 40, ptr %143) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %142) #0
  br label %1840

1817:                                             ; preds = %1763
  %1818 = landingpad { ptr, i32 }
          cleanup
  %1819 = extractvalue { ptr, i32 } %1818, 0
  store ptr %1819, ptr %19, align 8
  %1820 = extractvalue { ptr, i32 } %1818, 1
  store i32 %1820, ptr %20, align 4
  br label %1840

1821:                                             ; preds = %1769
  %1822 = landingpad { ptr, i32 }
          cleanup
  %1823 = extractvalue { ptr, i32 } %1822, 0
  store ptr %1823, ptr %19, align 8
  %1824 = extractvalue { ptr, i32 } %1822, 1
  store i32 %1824, ptr %20, align 4
  br label %1839

1825:                                             ; preds = %1771
  %1826 = landingpad { ptr, i32 }
          cleanup
  %1827 = extractvalue { ptr, i32 } %1826, 0
  store ptr %1827, ptr %19, align 8
  %1828 = extractvalue { ptr, i32 } %1826, 1
  store i32 %1828, ptr %20, align 4
  br label %1838

1829:                                             ; preds = %1772
  %1830 = landingpad { ptr, i32 }
          cleanup
  %1831 = extractvalue { ptr, i32 } %1830, 0
  store ptr %1831, ptr %19, align 8
  %1832 = extractvalue { ptr, i32 } %1830, 1
  store i32 %1832, ptr %20, align 4
  br label %1837

1833:                                             ; preds = %1773
  %1834 = landingpad { ptr, i32 }
          cleanup
  %1835 = extractvalue { ptr, i32 } %1834, 0
  store ptr %1835, ptr %19, align 8
  %1836 = extractvalue { ptr, i32 } %1834, 1
  store i32 %1836, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %147) #0
  br label %1837

1837:                                             ; preds = %1833, %1829
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %151) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %150) #0
  br label %1838

1838:                                             ; preds = %1837, %1825
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %149) #0
  br label %1839

1839:                                             ; preds = %1838, %1821
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %148) #0
  br label %1840

1840:                                             ; preds = %1839, %1817, %1816
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %141) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %141) #0
  br label %1841

1841:                                             ; preds = %1840, %1788
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %138) #0
  br label %1842

1842:                                             ; preds = %1841, %1776
  call void @llvm.lifetime.end.p0(i64 24, ptr %138) #0
  br label %1843

1843:                                             ; preds = %1842, %1746
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %135) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %135) #0
  br label %1845

1844:                                             ; preds = %1775, %1715
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %132) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %132) #0
  br label %1849

1845:                                             ; preds = %1843, %1718
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %132) #0
  br label %1846

1846:                                             ; preds = %1845, %1674
  call void @llvm.lifetime.end.p0(i64 144, ptr %132) #0
  br label %1851

1847:                                             ; preds = %1652
  br label %1848

1848:                                             ; preds = %1847
  store i8 0, ptr %130, align 1, !tbaa !9
  br label %1626, !llvm.loop !90

1849:                                             ; preds = %1844, %1630
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  %1850 = load i32, ptr %23, align 4
  switch i32 %1850, label %1854 [
    i32 35, label %1852
  ]

1851:                                             ; preds = %1846, %1631
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  br label %3137

1852:                                             ; preds = %1849
  br label %1853

1853:                                             ; preds = %1852
  store i8 0, ptr %130, align 1, !tbaa !9
  br label %1618, !llvm.loop !91

1854:                                             ; preds = %1849, %1621
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  %1855 = load i32, ptr %23, align 4
  switch i32 %1855, label %3135 [
    i32 32, label %1856
  ]

1856:                                             ; preds = %1854
  br label %3133

1857:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %152) #0
  store i8 1, ptr %152, align 1, !tbaa !9
  br label %1858

1858:                                             ; preds = %2063, %1857
  %1859 = load i8, ptr %152, align 1, !tbaa !9, !range !12, !noundef !13
  %1860 = trunc i8 %1859 to i1
  br i1 %1860, label %1862, label %1861

1861:                                             ; preds = %1858
  store i32 44, ptr %23, align 4
  br label %2064

1862:                                             ; preds = %1858
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #0
  %1863 = load ptr, ptr %98, align 8, !tbaa !5
  %1864 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %1863)
          to label %1865 unwind label %1871

1865:                                             ; preds = %1862
  store ptr %1864, ptr %153, align 8, !tbaa !5
  br label %1866

1866:                                             ; preds = %2058, %1865
  %1867 = load ptr, ptr %153, align 8, !tbaa !5
  %1868 = load i8, ptr %152, align 1, !tbaa !9, !range !12, !noundef !13
  %1869 = trunc i8 %1868 to i1
  br i1 %1869, label %1875, label %1870

1870:                                             ; preds = %1866
  store i32 47, ptr %23, align 4
  br label %2059

1871:                                             ; preds = %1974, %1966, %1887, %1881, %1875, %1862
  %1872 = landingpad { ptr, i32 }
          cleanup
  %1873 = extractvalue { ptr, i32 } %1872, 0
  store ptr %1873, ptr %19, align 8
  %1874 = extractvalue { ptr, i32 } %1872, 1
  store i32 %1874, ptr %20, align 4
  br label %2061

1875:                                             ; preds = %1866
  %1876 = load ptr, ptr %11, align 8, !tbaa !5
  %1877 = getelementptr inbounds i8, ptr %270, i64 8
  %1878 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1877, i32 0, i32 10
  %1879 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1876, ptr noundef nonnull align 8 dereferenceable(8) %1878)
          to label %1880 unwind label %1871

1880:                                             ; preds = %1875
  br i1 %1879, label %1893, label %1881

1881:                                             ; preds = %1880
  %1882 = load ptr, ptr %11, align 8, !tbaa !5
  %1883 = getelementptr inbounds i8, ptr %270, i64 8
  %1884 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1883, i32 0, i32 11
  %1885 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1882, ptr noundef nonnull align 8 dereferenceable(8) %1884)
          to label %1886 unwind label %1871

1886:                                             ; preds = %1881
  br i1 %1885, label %1893, label %1887

1887:                                             ; preds = %1886
  %1888 = load ptr, ptr %11, align 8, !tbaa !5
  %1889 = getelementptr inbounds i8, ptr %270, i64 8
  %1890 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1889, i32 0, i32 12
  %1891 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1888, ptr noundef nonnull align 8 dereferenceable(8) %1890)
          to label %1892 unwind label %1871

1892:                                             ; preds = %1887
  br i1 %1891, label %1893, label %2057

1893:                                             ; preds = %1892, %1886, %1880
  %1894 = load ptr, ptr %12, align 8, !tbaa !5
  %1895 = icmp ne ptr %1894, null
  br i1 %1895, label %1896, label %1959

1896:                                             ; preds = %1893
  call void @llvm.lifetime.start.p0(i64 8, ptr %154) #0
  %1897 = load ptr, ptr %12, align 8, !tbaa !5
  %1898 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1897, i32 0, i32 1
  %1899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1898, i64 noundef 0)
          to label %1900 unwind label %1914

1900:                                             ; preds = %1896
  %1901 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1899)
          to label %1902 unwind label %1914

1902:                                             ; preds = %1900
  %1903 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1901)
          to label %1904 unwind label %1914

1904:                                             ; preds = %1902
  store ptr %1903, ptr %154, align 8, !tbaa !5
  %1905 = load ptr, ptr %154, align 8, !tbaa !5
  %1906 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1905) #0
  %1907 = load ptr, ptr %153, align 8, !tbaa !5
  %1908 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %1907, i32 0, i32 0
  %1909 = load ptr, ptr %1908, align 8, !tbaa !92
  %1910 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %1909, i32 0, i32 1
  %1911 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1910) #0
  %1912 = icmp ne i64 %1906, %1911
  br i1 %1912, label %1913, label %1918

1913:                                             ; preds = %1904
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1955

1914:                                             ; preds = %1902, %1900, %1896
  %1915 = landingpad { ptr, i32 }
          cleanup
  %1916 = extractvalue { ptr, i32 } %1915, 0
  store ptr %1916, ptr %19, align 8
  %1917 = extractvalue { ptr, i32 } %1915, 1
  store i32 %1917, ptr %20, align 4
  br label %1958

1918:                                             ; preds = %1904
  call void @llvm.lifetime.start.p0(i64 4, ptr %155) #0
  store i32 0, ptr %155, align 4, !tbaa !83
  br label %1919

1919:                                             ; preds = %1949, %1918
  %1920 = load i32, ptr %155, align 4, !tbaa !83
  %1921 = zext i32 %1920 to i64
  %1922 = load ptr, ptr %154, align 8, !tbaa !5
  %1923 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1922) #0
  %1924 = icmp ult i64 %1921, %1923
  br i1 %1924, label %1926, label %1925

1925:                                             ; preds = %1919
  store i32 50, ptr %23, align 4
  br label %1952

1926:                                             ; preds = %1919
  %1927 = load ptr, ptr %154, align 8, !tbaa !5
  %1928 = load i32, ptr %155, align 4, !tbaa !83
  %1929 = zext i32 %1928 to i64
  %1930 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1927, i64 noundef %1929) #0
  %1931 = load ptr, ptr %10, align 8, !tbaa !5
  %1932 = load ptr, ptr %153, align 8, !tbaa !5
  %1933 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %1932, i32 0, i32 0
  %1934 = load ptr, ptr %1933, align 8, !tbaa !92
  %1935 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %1934, i32 0, i32 1
  %1936 = load i32, ptr %155, align 4, !tbaa !83
  %1937 = zext i32 %1936 to i64
  %1938 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1935, i64 noundef %1937) #0
  %1939 = getelementptr inbounds %"struct.std::pair.294", ptr %1938, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 8, ptr %156) #0
  call void @llvm.memset.p0.i64(ptr align 8 %156, i8 0, i64 8, i1 false)
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %156) #0
  %1940 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1930, ptr noundef nonnull align 8 dereferenceable(8) %1931, ptr noundef nonnull align 8 dereferenceable(8) %1939, ptr noundef nonnull align 8 dereferenceable(8) %156)
          to label %1941 unwind label %1944

1941:                                             ; preds = %1926
  %1942 = icmp eq i32 %1940, 2
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #0
  br i1 %1942, label %1943, label %1948

1943:                                             ; preds = %1941
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1952

1944:                                             ; preds = %1926
  %1945 = landingpad { ptr, i32 }
          cleanup
  %1946 = extractvalue { ptr, i32 } %1945, 0
  store ptr %1946, ptr %19, align 8
  %1947 = extractvalue { ptr, i32 } %1945, 1
  store i32 %1947, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %156) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #0
  br label %1958

1948:                                             ; preds = %1941
  br label %1949

1949:                                             ; preds = %1948
  %1950 = load i32, ptr %155, align 4, !tbaa !83
  %1951 = add i32 %1950, 1
  store i32 %1951, ptr %155, align 4, !tbaa !83
  br label %1919, !llvm.loop !94

1952:                                             ; preds = %1943, %1925
  call void @llvm.lifetime.end.p0(i64 4, ptr %155) #0
  %1953 = load i32, ptr %23, align 4
  switch i32 %1953, label %1955 [
    i32 50, label %1954
  ]

1954:                                             ; preds = %1952
  store i32 0, ptr %23, align 4
  br label %1955

1955:                                             ; preds = %1954, %1952, %1913
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  %1956 = load i32, ptr %23, align 4
  switch i32 %1956, label %2059 [
    i32 0, label %1957
  ]

1957:                                             ; preds = %1955
  br label %1960

1958:                                             ; preds = %1944, %1914
  call void @llvm.lifetime.end.p0(i64 8, ptr %154) #0
  br label %2061

1959:                                             ; preds = %1893
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %12, align 8, !tbaa !5
  br label %1960

1960:                                             ; preds = %1959, %1957
  %1961 = load ptr, ptr %153, align 8, !tbaa !5
  %1962 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %1961, i32 0, i32 0
  %1963 = load ptr, ptr %1962, align 8, !tbaa !92
  %1964 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %1963, i32 0, i32 5
  %1965 = load i32, ptr %1964, align 4, !tbaa !95
  switch i32 %1965, label %1982 [
    i32 0, label %1982
    i32 1, label %1982
    i32 4, label %1966
    i32 3, label %1974
    i32 2, label %1982
  ]

1966:                                             ; preds = %1960
  %1967 = load ptr, ptr %11, align 8, !tbaa !5
  %1968 = getelementptr inbounds i8, ptr %270, i64 8
  %1969 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1968, i32 0, i32 11
  %1970 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1967, ptr noundef nonnull align 8 dereferenceable(8) %1969)
          to label %1971 unwind label %1871

1971:                                             ; preds = %1966
  br i1 %1970, label %1972, label %1973

1972:                                             ; preds = %1971
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2059

1973:                                             ; preds = %1971
  br label %1974

1974:                                             ; preds = %1973, %1960
  %1975 = load ptr, ptr %11, align 8, !tbaa !5
  %1976 = getelementptr inbounds i8, ptr %270, i64 8
  %1977 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1976, i32 0, i32 10
  %1978 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1975, ptr noundef nonnull align 8 dereferenceable(8) %1977)
          to label %1979 unwind label %1871

1979:                                             ; preds = %1974
  br i1 %1978, label %1980, label %1981

1980:                                             ; preds = %1979
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2059

1981:                                             ; preds = %1979
  br label %1982

1982:                                             ; preds = %1981, %1960, %1960, %1960, %1960
  call void @llvm.lifetime.start.p0(i64 48, ptr %157) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %157) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %158) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %159) #0
  %1983 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %159, i32 0, i32 0
  %1984 = getelementptr inbounds i8, ptr %270, i64 8
  %1985 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1984, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull align 8 dereferenceable(8) %1985)
          to label %1986 unwind label %2010

1986:                                             ; preds = %1982
  %1987 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %161, ptr noundef nonnull align 8 dereferenceable(24) %1987)
          to label %1988 unwind label %2014

1988:                                             ; preds = %1986
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %1983, ptr noundef %160, ptr noundef %161)
          to label %1989 unwind label %2018

1989:                                             ; preds = %1988
  %1990 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %159, i32 0, i32 1
  %1991 = load ptr, ptr %153, align 8, !tbaa !5
  %1992 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %1991, i32 0, i32 0
  %1993 = load ptr, ptr %1992, align 8, !tbaa !92
  %1994 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %1993, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1990, ptr noundef nonnull align 8 dereferenceable(8) %1994)
          to label %1995 unwind label %2022

1995:                                             ; preds = %1989
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.264") align 8 %158, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %159)
          to label %1996 unwind label %2026

1996:                                             ; preds = %1995
  %1997 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %157, ptr noundef nonnull align 8 dereferenceable(48) %158)
          to label %1998 unwind label %2030

1998:                                             ; preds = %1996
  %1999 = getelementptr inbounds { ptr, i8 }, ptr %162, i32 0, i32 0
  %2000 = extractvalue { ptr, i8 } %1997, 0
  store ptr %2000, ptr %1999, align 8
  %2001 = getelementptr inbounds { ptr, i8 }, ptr %162, i32 0, i32 1
  %2002 = extractvalue { ptr, i8 } %1997, 1
  store i8 %2002, ptr %2001, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %158) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %159) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %159) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %158) #0
  %2003 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %164, ptr noundef nonnull align 8 dereferenceable(8) %2003)
          to label %2004 unwind label %2038

2004:                                             ; preds = %1998
  %2005 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %165, ptr noundef nonnull align 8 dereferenceable(24) %2005)
          to label %2006 unwind label %2042

2006:                                             ; preds = %2004
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %166, ptr noundef nonnull align 8 dereferenceable(48) %157) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %163, ptr noundef %164, ptr noundef %165, ptr noundef %166)
          to label %2007 unwind label %2046

2007:                                             ; preds = %2006
  %2008 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %163, i1 noundef zeroext false)
          to label %2009 unwind label %2050

2009:                                             ; preds = %2007
  store i1 %2008, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %163) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %166) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %165) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %157) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %157) #0
  br label %2059

2010:                                             ; preds = %1982
  %2011 = landingpad { ptr, i32 }
          cleanup
  %2012 = extractvalue { ptr, i32 } %2011, 0
  store ptr %2012, ptr %19, align 8
  %2013 = extractvalue { ptr, i32 } %2011, 1
  store i32 %2013, ptr %20, align 4
  br label %2037

2014:                                             ; preds = %1986
  %2015 = landingpad { ptr, i32 }
          cleanup
  %2016 = extractvalue { ptr, i32 } %2015, 0
  store ptr %2016, ptr %19, align 8
  %2017 = extractvalue { ptr, i32 } %2015, 1
  store i32 %2017, ptr %20, align 4
  br label %2036

2018:                                             ; preds = %1988
  %2019 = landingpad { ptr, i32 }
          cleanup
  %2020 = extractvalue { ptr, i32 } %2019, 0
  store ptr %2020, ptr %19, align 8
  %2021 = extractvalue { ptr, i32 } %2019, 1
  store i32 %2021, ptr %20, align 4
  br label %2035

2022:                                             ; preds = %1989
  %2023 = landingpad { ptr, i32 }
          cleanup
  %2024 = extractvalue { ptr, i32 } %2023, 0
  store ptr %2024, ptr %19, align 8
  %2025 = extractvalue { ptr, i32 } %2023, 1
  store i32 %2025, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1983) #0
  br label %2035

2026:                                             ; preds = %1995
  %2027 = landingpad { ptr, i32 }
          cleanup
  %2028 = extractvalue { ptr, i32 } %2027, 0
  store ptr %2028, ptr %19, align 8
  %2029 = extractvalue { ptr, i32 } %2027, 1
  store i32 %2029, ptr %20, align 4
  br label %2034

2030:                                             ; preds = %1996
  %2031 = landingpad { ptr, i32 }
          cleanup
  %2032 = extractvalue { ptr, i32 } %2031, 0
  store ptr %2032, ptr %19, align 8
  %2033 = extractvalue { ptr, i32 } %2031, 1
  store i32 %2033, ptr %20, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %158) #0
  br label %2034

2034:                                             ; preds = %2030, %2026
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %159) #0
  br label %2035

2035:                                             ; preds = %2034, %2022, %2018
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %161) #0
  br label %2036

2036:                                             ; preds = %2035, %2014
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %160) #0
  br label %2037

2037:                                             ; preds = %2036, %2010
  call void @llvm.lifetime.end.p0(i64 40, ptr %159) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %158) #0
  br label %2056

2038:                                             ; preds = %1998
  %2039 = landingpad { ptr, i32 }
          cleanup
  %2040 = extractvalue { ptr, i32 } %2039, 0
  store ptr %2040, ptr %19, align 8
  %2041 = extractvalue { ptr, i32 } %2039, 1
  store i32 %2041, ptr %20, align 4
  br label %2056

2042:                                             ; preds = %2004
  %2043 = landingpad { ptr, i32 }
          cleanup
  %2044 = extractvalue { ptr, i32 } %2043, 0
  store ptr %2044, ptr %19, align 8
  %2045 = extractvalue { ptr, i32 } %2043, 1
  store i32 %2045, ptr %20, align 4
  br label %2055

2046:                                             ; preds = %2006
  %2047 = landingpad { ptr, i32 }
          cleanup
  %2048 = extractvalue { ptr, i32 } %2047, 0
  store ptr %2048, ptr %19, align 8
  %2049 = extractvalue { ptr, i32 } %2047, 1
  store i32 %2049, ptr %20, align 4
  br label %2054

2050:                                             ; preds = %2007
  %2051 = landingpad { ptr, i32 }
          cleanup
  %2052 = extractvalue { ptr, i32 } %2051, 0
  store ptr %2052, ptr %19, align 8
  %2053 = extractvalue { ptr, i32 } %2051, 1
  store i32 %2053, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %163) #0
  br label %2054

2054:                                             ; preds = %2050, %2046
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %166) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %165) #0
  br label %2055

2055:                                             ; preds = %2054, %2042
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %164) #0
  br label %2056

2056:                                             ; preds = %2055, %2038, %2037
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %157) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %157) #0
  br label %2061

2057:                                             ; preds = %1892
  br label %2058

2058:                                             ; preds = %2057
  store i8 0, ptr %152, align 1, !tbaa !9
  br label %1866, !llvm.loop !131

2059:                                             ; preds = %2009, %1980, %1972, %1955, %1870
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  %2060 = load i32, ptr %23, align 4
  switch i32 %2060, label %2064 [
    i32 47, label %2062
  ]

2061:                                             ; preds = %2056, %1958, %1871
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #0
  br label %3137

2062:                                             ; preds = %2059
  br label %2063

2063:                                             ; preds = %2062
  store i8 0, ptr %152, align 1, !tbaa !9
  br label %1858, !llvm.loop !132

2064:                                             ; preds = %2059, %1861
  call void @llvm.lifetime.end.p0(i64 1, ptr %152) #0
  %2065 = load i32, ptr %23, align 4
  switch i32 %2065, label %3135 [
    i32 44, label %2066
  ]

2066:                                             ; preds = %2064
  br label %3133

2067:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %167) #0
  store i8 1, ptr %167, align 1, !tbaa !9
  br label %2068

2068:                                             ; preds = %2228, %2067
  %2069 = load i8, ptr %167, align 1, !tbaa !9, !range !12, !noundef !13
  %2070 = trunc i8 %2069 to i1
  br i1 %2070, label %2072, label %2071

2071:                                             ; preds = %2068
  store i32 54, ptr %23, align 4
  br label %2229

2072:                                             ; preds = %2068
  call void @llvm.lifetime.start.p0(i64 8, ptr %168) #0
  %2073 = load ptr, ptr %98, align 8, !tbaa !5
  %2074 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %2073)
          to label %2075 unwind label %2081

2075:                                             ; preds = %2072
  store ptr %2074, ptr %168, align 8, !tbaa !5
  br label %2076

2076:                                             ; preds = %2223, %2075
  %2077 = load ptr, ptr %168, align 8, !tbaa !5
  %2078 = load i8, ptr %167, align 1, !tbaa !9, !range !12, !noundef !13
  %2079 = trunc i8 %2078 to i1
  br i1 %2079, label %2085, label %2080

2080:                                             ; preds = %2076
  store i32 57, ptr %23, align 4
  br label %2224

2081:                                             ; preds = %2088, %2072
  %2082 = landingpad { ptr, i32 }
          cleanup
  %2083 = extractvalue { ptr, i32 } %2082, 0
  store ptr %2083, ptr %19, align 8
  %2084 = extractvalue { ptr, i32 } %2082, 1
  store i32 %2084, ptr %20, align 4
  br label %2226

2085:                                             ; preds = %2076
  %2086 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %2087 = icmp sge i32 %2086, 2
  br i1 %2087, label %2088, label %2222

2088:                                             ; preds = %2085
  %2089 = load ptr, ptr %11, align 8, !tbaa !5
  %2090 = getelementptr inbounds i8, ptr %270, i64 8
  %2091 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2090, i32 0, i32 15
  %2092 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2089, ptr noundef nonnull align 8 dereferenceable(8) %2091)
          to label %2093 unwind label %2081

2093:                                             ; preds = %2088
  br i1 %2092, label %2094, label %2222

2094:                                             ; preds = %2093
  call void @llvm.lifetime.start.p0(i64 48, ptr %169) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %169) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %170) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %171) #0
  %2095 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %171, i32 0, i32 0
  %2096 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %172, ptr noundef nonnull align 8 dereferenceable(8) %2096)
          to label %2097 unwind label %2140

2097:                                             ; preds = %2094
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %2095, ptr noundef %172)
          to label %2098 unwind label %2144

2098:                                             ; preds = %2097
  %2099 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %171, i32 0, i32 1
  %2100 = load ptr, ptr %168, align 8, !tbaa !5
  %2101 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %2100, i32 0, i32 0
  %2102 = load ptr, ptr %2101, align 8, !tbaa !133
  %2103 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %2102, i32 0, i32 3
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %2099, ptr noundef nonnull align 8 dereferenceable(8) %2103)
          to label %2104 unwind label %2148

2104:                                             ; preds = %2098
  invoke void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.264") align 8 %170, ptr noundef nonnull align 1 dereferenceable(6) @.str.9, ptr noundef nonnull align 8 dereferenceable(40) %171)
          to label %2105 unwind label %2152

2105:                                             ; preds = %2104
  %2106 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %169, ptr noundef nonnull align 8 dereferenceable(48) %170)
          to label %2107 unwind label %2156

2107:                                             ; preds = %2105
  %2108 = getelementptr inbounds { ptr, i8 }, ptr %173, i32 0, i32 0
  %2109 = extractvalue { ptr, i8 } %2106, 0
  store ptr %2109, ptr %2108, align 8
  %2110 = getelementptr inbounds { ptr, i8 }, ptr %173, i32 0, i32 1
  %2111 = extractvalue { ptr, i8 } %2106, 1
  store i8 %2111, ptr %2110, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %170) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %171) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %171) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %170) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %174) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %175) #0
  %2112 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %175, i32 0, i32 0
  %2113 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %176, ptr noundef nonnull align 8 dereferenceable(8) %2113)
          to label %2114 unwind label %2163

2114:                                             ; preds = %2107
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %2112, ptr noundef %176)
          to label %2115 unwind label %2167

2115:                                             ; preds = %2114
  %2116 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %175, i32 0, i32 1
  %2117 = load ptr, ptr %168, align 8, !tbaa !5
  %2118 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %2117, i32 0, i32 0
  %2119 = load ptr, ptr %2118, align 8, !tbaa !133
  %2120 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %2119, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %2116, ptr noundef nonnull align 8 dereferenceable(8) %2120)
          to label %2121 unwind label %2171

2121:                                             ; preds = %2115
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.264") align 8 %174, ptr noundef nonnull align 1 dereferenceable(7) @.str.10, ptr noundef nonnull align 8 dereferenceable(40) %175)
          to label %2122 unwind label %2175

2122:                                             ; preds = %2121
  %2123 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %169, ptr noundef nonnull align 8 dereferenceable(48) %174)
          to label %2124 unwind label %2179

2124:                                             ; preds = %2122
  %2125 = getelementptr inbounds { ptr, i8 }, ptr %177, i32 0, i32 0
  %2126 = extractvalue { ptr, i8 } %2123, 0
  store ptr %2126, ptr %2125, align 8
  %2127 = getelementptr inbounds { ptr, i8 }, ptr %177, i32 0, i32 1
  %2128 = extractvalue { ptr, i8 } %2123, 1
  store i8 %2128, ptr %2127, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %174) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %175) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %175) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %174) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %178) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %178)
          to label %2129 unwind label %2186

2129:                                             ; preds = %2124
  %2130 = load i32, ptr @gTargetVersion, align 4, !tbaa !14
  %2131 = icmp sge i32 %2130, 4
  br i1 %2131, label %2132, label %2198

2132:                                             ; preds = %2129
  %2133 = getelementptr inbounds %"struct.HIR::PathParams", ptr %178, i32 0, i32 1
  %2134 = load ptr, ptr %168, align 8, !tbaa !5
  %2135 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %2134, i32 0, i32 0
  %2136 = load ptr, ptr %2135, align 8, !tbaa !133
  %2137 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %2136, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %179, ptr noundef nonnull align 8 dereferenceable(8) %2137)
          to label %2138 unwind label %2190

2138:                                             ; preds = %2132
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %2133, ptr noundef %179)
          to label %2139 unwind label %2194

2139:                                             ; preds = %2138
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #0
  br label %2198

2140:                                             ; preds = %2094
  %2141 = landingpad { ptr, i32 }
          cleanup
  %2142 = extractvalue { ptr, i32 } %2141, 0
  store ptr %2142, ptr %19, align 8
  %2143 = extractvalue { ptr, i32 } %2141, 1
  store i32 %2143, ptr %20, align 4
  br label %2162

2144:                                             ; preds = %2097
  %2145 = landingpad { ptr, i32 }
          cleanup
  %2146 = extractvalue { ptr, i32 } %2145, 0
  store ptr %2146, ptr %19, align 8
  %2147 = extractvalue { ptr, i32 } %2145, 1
  store i32 %2147, ptr %20, align 4
  br label %2161

2148:                                             ; preds = %2098
  %2149 = landingpad { ptr, i32 }
          cleanup
  %2150 = extractvalue { ptr, i32 } %2149, 0
  store ptr %2150, ptr %19, align 8
  %2151 = extractvalue { ptr, i32 } %2149, 1
  store i32 %2151, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2095) #0
  br label %2161

2152:                                             ; preds = %2104
  %2153 = landingpad { ptr, i32 }
          cleanup
  %2154 = extractvalue { ptr, i32 } %2153, 0
  store ptr %2154, ptr %19, align 8
  %2155 = extractvalue { ptr, i32 } %2153, 1
  store i32 %2155, ptr %20, align 4
  br label %2160

2156:                                             ; preds = %2105
  %2157 = landingpad { ptr, i32 }
          cleanup
  %2158 = extractvalue { ptr, i32 } %2157, 0
  store ptr %2158, ptr %19, align 8
  %2159 = extractvalue { ptr, i32 } %2157, 1
  store i32 %2159, ptr %20, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %170) #0
  br label %2160

2160:                                             ; preds = %2156, %2152
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %171) #0
  br label %2161

2161:                                             ; preds = %2160, %2148, %2144
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %172) #0
  br label %2162

2162:                                             ; preds = %2161, %2140
  call void @llvm.lifetime.end.p0(i64 40, ptr %171) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %170) #0
  br label %2221

2163:                                             ; preds = %2107
  %2164 = landingpad { ptr, i32 }
          cleanup
  %2165 = extractvalue { ptr, i32 } %2164, 0
  store ptr %2165, ptr %19, align 8
  %2166 = extractvalue { ptr, i32 } %2164, 1
  store i32 %2166, ptr %20, align 4
  br label %2185

2167:                                             ; preds = %2114
  %2168 = landingpad { ptr, i32 }
          cleanup
  %2169 = extractvalue { ptr, i32 } %2168, 0
  store ptr %2169, ptr %19, align 8
  %2170 = extractvalue { ptr, i32 } %2168, 1
  store i32 %2170, ptr %20, align 4
  br label %2184

2171:                                             ; preds = %2115
  %2172 = landingpad { ptr, i32 }
          cleanup
  %2173 = extractvalue { ptr, i32 } %2172, 0
  store ptr %2173, ptr %19, align 8
  %2174 = extractvalue { ptr, i32 } %2172, 1
  store i32 %2174, ptr %20, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %2112) #0
  br label %2184

2175:                                             ; preds = %2121
  %2176 = landingpad { ptr, i32 }
          cleanup
  %2177 = extractvalue { ptr, i32 } %2176, 0
  store ptr %2177, ptr %19, align 8
  %2178 = extractvalue { ptr, i32 } %2176, 1
  store i32 %2178, ptr %20, align 4
  br label %2183

2179:                                             ; preds = %2122
  %2180 = landingpad { ptr, i32 }
          cleanup
  %2181 = extractvalue { ptr, i32 } %2180, 0
  store ptr %2181, ptr %19, align 8
  %2182 = extractvalue { ptr, i32 } %2180, 1
  store i32 %2182, ptr %20, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %174) #0
  br label %2183

2183:                                             ; preds = %2179, %2175
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %175) #0
  br label %2184

2184:                                             ; preds = %2183, %2171, %2167
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #0
  br label %2185

2185:                                             ; preds = %2184, %2163
  call void @llvm.lifetime.end.p0(i64 40, ptr %175) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %174) #0
  br label %2221

2186:                                             ; preds = %2124
  %2187 = landingpad { ptr, i32 }
          cleanup
  %2188 = extractvalue { ptr, i32 } %2187, 0
  store ptr %2188, ptr %19, align 8
  %2189 = extractvalue { ptr, i32 } %2187, 1
  store i32 %2189, ptr %20, align 4
  br label %2220

2190:                                             ; preds = %2198, %2132
  %2191 = landingpad { ptr, i32 }
          cleanup
  %2192 = extractvalue { ptr, i32 } %2191, 0
  store ptr %2192, ptr %19, align 8
  %2193 = extractvalue { ptr, i32 } %2191, 1
  store i32 %2193, ptr %20, align 4
  br label %2219

2194:                                             ; preds = %2138
  %2195 = landingpad { ptr, i32 }
          cleanup
  %2196 = extractvalue { ptr, i32 } %2195, 0
  store ptr %2196, ptr %19, align 8
  %2197 = extractvalue { ptr, i32 } %2195, 1
  store i32 %2197, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %179) #0
  br label %2219

2198:                                             ; preds = %2139, %2129
  %2199 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %181, ptr noundef nonnull align 8 dereferenceable(8) %2199)
          to label %2200 unwind label %2190

2200:                                             ; preds = %2198
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef nonnull align 8 dereferenceable(24) %178)
          to label %2201 unwind label %2205

2201:                                             ; preds = %2200
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %183, ptr noundef nonnull align 8 dereferenceable(48) %169) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %180, ptr noundef %181, ptr noundef %182, ptr noundef %183)
          to label %2202 unwind label %2209

2202:                                             ; preds = %2201
  %2203 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %180, i1 noundef zeroext false)
          to label %2204 unwind label %2213

2204:                                             ; preds = %2202
  store i1 %2203, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %180) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %183) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %182) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #0
  store i32 1, ptr %23, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %178) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %169) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %169) #0
  br label %2224

2205:                                             ; preds = %2200
  %2206 = landingpad { ptr, i32 }
          cleanup
  %2207 = extractvalue { ptr, i32 } %2206, 0
  store ptr %2207, ptr %19, align 8
  %2208 = extractvalue { ptr, i32 } %2206, 1
  store i32 %2208, ptr %20, align 4
  br label %2218

2209:                                             ; preds = %2201
  %2210 = landingpad { ptr, i32 }
          cleanup
  %2211 = extractvalue { ptr, i32 } %2210, 0
  store ptr %2211, ptr %19, align 8
  %2212 = extractvalue { ptr, i32 } %2210, 1
  store i32 %2212, ptr %20, align 4
  br label %2217

2213:                                             ; preds = %2202
  %2214 = landingpad { ptr, i32 }
          cleanup
  %2215 = extractvalue { ptr, i32 } %2214, 0
  store ptr %2215, ptr %19, align 8
  %2216 = extractvalue { ptr, i32 } %2214, 1
  store i32 %2216, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %180) #0
  br label %2217

2217:                                             ; preds = %2213, %2209
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %183) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %182) #0
  br label %2218

2218:                                             ; preds = %2217, %2205
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %181) #0
  br label %2219

2219:                                             ; preds = %2218, %2194, %2190
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %178) #0
  br label %2220

2220:                                             ; preds = %2219, %2186
  call void @llvm.lifetime.end.p0(i64 24, ptr %178) #0
  br label %2221

2221:                                             ; preds = %2220, %2185, %2162
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %169) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %169) #0
  br label %2226

2222:                                             ; preds = %2093, %2085
  br label %2223

2223:                                             ; preds = %2222
  store i8 0, ptr %167, align 1, !tbaa !9
  br label %2076, !llvm.loop !135

2224:                                             ; preds = %2204, %2080
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  %2225 = load i32, ptr %23, align 4
  switch i32 %2225, label %2229 [
    i32 57, label %2227
  ]

2226:                                             ; preds = %2221, %2081
  call void @llvm.lifetime.end.p0(i64 8, ptr %168) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #0
  br label %3137

2227:                                             ; preds = %2224
  br label %2228

2228:                                             ; preds = %2227
  store i8 0, ptr %167, align 1, !tbaa !9
  br label %2068, !llvm.loop !136

2229:                                             ; preds = %2224, %2071
  call void @llvm.lifetime.end.p0(i64 1, ptr %167) #0
  %2230 = load i32, ptr %23, align 4
  switch i32 %2230, label %3135 [
    i32 54, label %2231
  ]

2231:                                             ; preds = %2229
  br label %3133

2232:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %184) #0
  store i8 1, ptr %184, align 1, !tbaa !9
  br label %2233

2233:                                             ; preds = %2400, %2232
  %2234 = load i8, ptr %184, align 1, !tbaa !9, !range !12, !noundef !13
  %2235 = trunc i8 %2234 to i1
  br i1 %2235, label %2237, label %2236

2236:                                             ; preds = %2233
  store i32 60, ptr %23, align 4
  br label %2401

2237:                                             ; preds = %2233
  call void @llvm.lifetime.start.p0(i64 8, ptr %185) #0
  %2238 = load ptr, ptr %98, align 8, !tbaa !5
  %2239 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %2238)
          to label %2240 unwind label %2246

2240:                                             ; preds = %2237
  store ptr %2239, ptr %185, align 8, !tbaa !5
  br label %2241

2241:                                             ; preds = %2395, %2240
  %2242 = load ptr, ptr %185, align 8, !tbaa !5
  %2243 = load i8, ptr %184, align 1, !tbaa !9, !range !12, !noundef !13
  %2244 = trunc i8 %2243 to i1
  br i1 %2244, label %2250, label %2245

2245:                                             ; preds = %2241
  store i32 63, ptr %23, align 4
  br label %2396

2246:                                             ; preds = %2267, %2258, %2250, %2237
  %2247 = landingpad { ptr, i32 }
          cleanup
  %2248 = extractvalue { ptr, i32 } %2247, 0
  store ptr %2248, ptr %19, align 8
  %2249 = extractvalue { ptr, i32 } %2247, 1
  store i32 %2249, ptr %20, align 4
  br label %2398

2250:                                             ; preds = %2241
  %2251 = load ptr, ptr %11, align 8, !tbaa !5
  %2252 = load ptr, ptr %185, align 8, !tbaa !5
  %2253 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2252, i32 0, i32 0
  %2254 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2253, i32 0, i32 1
  %2255 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2254, i32 0, i32 0
  %2256 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2251, ptr noundef nonnull align 8 dereferenceable(8) %2255)
          to label %2257 unwind label %2246

2257:                                             ; preds = %2250
  br i1 %2256, label %2258, label %2288

2258:                                             ; preds = %2257
  %2259 = load ptr, ptr %10, align 8, !tbaa !5
  %2260 = load ptr, ptr %185, align 8, !tbaa !5
  %2261 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2260, i32 0, i32 0
  %2262 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2261, i32 0, i32 1
  %2263 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2262, i32 0, i32 1
  %2264 = load ptr, ptr %12, align 8, !tbaa !5
  %2265 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %2259, ptr noundef nonnull align 8 dereferenceable(24) %2263, ptr noundef %2264)
          to label %2266 unwind label %2246

2266:                                             ; preds = %2258
  br i1 %2265, label %2267, label %2287

2267:                                             ; preds = %2266
  %2268 = load ptr, ptr %185, align 8, !tbaa !5
  %2269 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2268, i32 0, i32 0
  %2270 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2269, i32 0, i32 0
  %2271 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2270) #0
  %2272 = load ptr, ptr %13, align 8, !tbaa !5
  %2273 = load ptr, ptr %185, align 8, !tbaa !5
  %2274 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2273, i32 0, i32 0
  %2275 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2274, i32 0, i32 1
  %2276 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2275, i32 0, i32 1
  %2277 = load ptr, ptr %185, align 8, !tbaa !5
  %2278 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2277, i32 0, i32 0
  %2279 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2278, i32 0, i32 2
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %186, ptr noundef %2271, ptr noundef %2272, ptr noundef %2276, ptr noundef %2279)
          to label %2280 unwind label %2246

2280:                                             ; preds = %2267
  %2281 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %186, i1 noundef zeroext false)
          to label %2282 unwind label %2283

2282:                                             ; preds = %2280
  store i1 %2281, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %186) #0
  store i32 1, ptr %23, align 4
  br label %2396

2283:                                             ; preds = %2280
  %2284 = landingpad { ptr, i32 }
          cleanup
  %2285 = extractvalue { ptr, i32 } %2284, 0
  store ptr %2285, ptr %19, align 8
  %2286 = extractvalue { ptr, i32 } %2284, 1
  store i32 %2286, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %186) #0
  br label %2398

2287:                                             ; preds = %2266
  br label %2288

2288:                                             ; preds = %2287, %2257
  call void @llvm.lifetime.start.p0(i64 8, ptr %187) #0
  %2289 = load ptr, ptr %185, align 8, !tbaa !5
  %2290 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2289, i32 0, i32 1
  store ptr %2290, ptr %187, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %188) #0
  %2291 = load ptr, ptr %187, align 8, !tbaa !5
  %2292 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2291) #0
  %2293 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %188, i32 0, i32 0
  store ptr %2292, ptr %2293, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %189) #0
  %2294 = load ptr, ptr %187, align 8, !tbaa !5
  %2295 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2294) #0
  %2296 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %189, i32 0, i32 0
  store ptr %2295, ptr %2296, align 8
  br label %2297

2297:                                             ; preds = %2334, %2288
  %2298 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef nonnull align 8 dereferenceable(8) %189) #0
  br i1 %2298, label %2300, label %2299

2299:                                             ; preds = %2297
  store i32 66, ptr %23, align 4
  br label %2337

2300:                                             ; preds = %2297
  call void @llvm.lifetime.start.p0(i64 8, ptr %190) #0
  %2301 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %188) #0
  store ptr %2301, ptr %190, align 8, !tbaa !5
  %2302 = load ptr, ptr %11, align 8, !tbaa !5
  %2303 = load ptr, ptr %190, align 8, !tbaa !5
  %2304 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2303, i32 0, i32 0
  %2305 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2302, ptr noundef nonnull align 8 dereferenceable(8) %2304)
          to label %2306 unwind label %2321

2306:                                             ; preds = %2300
  br i1 %2305, label %2307, label %2330

2307:                                             ; preds = %2306
  %2308 = load ptr, ptr %10, align 8, !tbaa !5
  %2309 = load ptr, ptr %190, align 8, !tbaa !5
  %2310 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2309, i32 0, i32 1
  %2311 = load ptr, ptr %12, align 8, !tbaa !5
  %2312 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %2308, ptr noundef nonnull align 8 dereferenceable(24) %2310, ptr noundef %2311)
          to label %2313 unwind label %2321

2313:                                             ; preds = %2307
  br i1 %2312, label %2314, label %2329

2314:                                             ; preds = %2313
  %2315 = load ptr, ptr %13, align 8, !tbaa !5
  %2316 = load ptr, ptr %190, align 8, !tbaa !5
  %2317 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2316, i32 0, i32 1
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %191, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %2315, ptr noundef %2317, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %2318 unwind label %2321

2318:                                             ; preds = %2314
  %2319 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %191, i1 noundef zeroext false)
          to label %2320 unwind label %2325

2320:                                             ; preds = %2318
  store i1 %2319, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %191) #0
  store i32 1, ptr %23, align 4
  br label %2331

2321:                                             ; preds = %2314, %2307, %2300
  %2322 = landingpad { ptr, i32 }
          cleanup
  %2323 = extractvalue { ptr, i32 } %2322, 0
  store ptr %2323, ptr %19, align 8
  %2324 = extractvalue { ptr, i32 } %2322, 1
  store i32 %2324, ptr %20, align 4
  br label %2336

2325:                                             ; preds = %2318
  %2326 = landingpad { ptr, i32 }
          cleanup
  %2327 = extractvalue { ptr, i32 } %2326, 0
  store ptr %2327, ptr %19, align 8
  %2328 = extractvalue { ptr, i32 } %2326, 1
  store i32 %2328, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %191) #0
  br label %2336

2329:                                             ; preds = %2313
  br label %2330

2330:                                             ; preds = %2329, %2306
  store i32 0, ptr %23, align 4
  br label %2331

2331:                                             ; preds = %2330, %2320
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  %2332 = load i32, ptr %23, align 4
  switch i32 %2332, label %2337 [
    i32 0, label %2333
  ]

2333:                                             ; preds = %2331
  br label %2334

2334:                                             ; preds = %2333
  %2335 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %188) #0
  br label %2297

2336:                                             ; preds = %2325, %2321
  call void @llvm.lifetime.end.p0(i64 8, ptr %190) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  br label %2398

2337:                                             ; preds = %2331, %2299
  call void @llvm.lifetime.end.p0(i64 8, ptr %189) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %188) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %187) #0
  %2338 = load i32, ptr %23, align 4
  switch i32 %2338, label %2396 [
    i32 66, label %2339
  ]

2339:                                             ; preds = %2337
  call void @llvm.lifetime.start.p0(i64 1, ptr %192) #0
  store i8 0, ptr %192, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %193) #0
  %2340 = load ptr, ptr %12, align 8, !tbaa !5
  %2341 = icmp ne ptr %2340, null
  call void @llvm.lifetime.start.p0(i64 32, ptr %195) #0
  store i1 false, ptr %196, align 1
  br i1 %2341, label %2342, label %2368

2342:                                             ; preds = %2339
  %2343 = load ptr, ptr %10, align 8, !tbaa !5
  %2344 = load ptr, ptr %11, align 8, !tbaa !5
  %2345 = load ptr, ptr %12, align 8, !tbaa !5
  %2346 = load ptr, ptr %185, align 8, !tbaa !5
  %2347 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2346, i32 0, i32 0
  %2348 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2347, i32 0, i32 4
  %2349 = load ptr, ptr %2348, align 8, !tbaa !137
  %2350 = load ptr, ptr %185, align 8, !tbaa !5
  %2351 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2350, i32 0, i32 0
  %2352 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2351, i32 0, i32 1
  %2353 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2352, i32 0, i32 0
  %2354 = load ptr, ptr %185, align 8, !tbaa !5
  %2355 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %2354, i32 0, i32 0
  %2356 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2355, i32 0, i32 1
  %2357 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2356, i32 0, i32 1
  %2358 = load ptr, ptr %13, align 8, !tbaa !5
  %2359 = getelementptr inbounds %class.anon.394, ptr %195, i32 0, i32 0
  %2360 = load ptr, ptr %185, align 8, !tbaa !5
  store ptr %2360, ptr %2359, align 8, !tbaa !5
  %2361 = getelementptr inbounds %class.anon.394, ptr %195, i32 0, i32 1
  %2362 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2362, ptr %2361, align 8, !tbaa !5
  %2363 = getelementptr inbounds %class.anon.394, ptr %195, i32 0, i32 2
  store ptr %192, ptr %2363, align 8, !tbaa !5
  %2364 = getelementptr inbounds %class.anon.394, ptr %195, i32 0, i32 3
  store ptr %5, ptr %2364, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPS2_RKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %194, ptr noundef nonnull align 8 dereferenceable(32) %195)
          to label %2365 unwind label %2379

2365:                                             ; preds = %2342
  store i1 true, ptr %196, align 1
  %2366 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %2343, ptr noundef nonnull align 8 dereferenceable(8) %2344, ptr noundef nonnull align 8 dereferenceable(24) %2345, ptr noundef nonnull align 8 dereferenceable(400) %2349, ptr noundef nonnull align 8 dereferenceable(8) %2353, ptr noundef nonnull align 8 dereferenceable(24) %2357, ptr noundef nonnull align 8 dereferenceable(8) %2358, ptr noundef %194)
          to label %2367 unwind label %2383

2367:                                             ; preds = %2365
  br label %2368

2368:                                             ; preds = %2367, %2339
  %2369 = phi i1 [ false, %2339 ], [ %2366, %2367 ]
  %2370 = load i1, ptr %196, align 1
  br i1 %2370, label %2371, label %2372

2371:                                             ; preds = %2368
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #0
  br label %2372

2372:                                             ; preds = %2371, %2368
  call void @llvm.lifetime.end.p0(i64 32, ptr %195) #0
  %2373 = zext i1 %2369 to i8
  store i8 %2373, ptr %193, align 1, !tbaa !9
  %2374 = load i8, ptr %193, align 1, !tbaa !9, !range !12, !noundef !13
  %2375 = trunc i8 %2374 to i1
  br i1 %2375, label %2376, label %2391

2376:                                             ; preds = %2372
  %2377 = load i8, ptr %192, align 1, !tbaa !9, !range !12, !noundef !13
  %2378 = trunc i8 %2377 to i1
  store i1 %2378, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2392

2379:                                             ; preds = %2342
  %2380 = landingpad { ptr, i32 }
          cleanup
  %2381 = extractvalue { ptr, i32 } %2380, 0
  store ptr %2381, ptr %19, align 8
  %2382 = extractvalue { ptr, i32 } %2380, 1
  store i32 %2382, ptr %20, align 4
  br label %2390

2383:                                             ; preds = %2365
  %2384 = landingpad { ptr, i32 }
          cleanup
  %2385 = extractvalue { ptr, i32 } %2384, 0
  store ptr %2385, ptr %19, align 8
  %2386 = extractvalue { ptr, i32 } %2384, 1
  store i32 %2386, ptr %20, align 4
  %2387 = load i1, ptr %196, align 1
  br i1 %2387, label %2388, label %2389

2388:                                             ; preds = %2383
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %194) #0
  br label %2389

2389:                                             ; preds = %2388, %2383
  br label %2390

2390:                                             ; preds = %2389, %2379
  call void @llvm.lifetime.end.p0(i64 32, ptr %195) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %192) #0
  br label %2398

2391:                                             ; preds = %2372
  store i32 0, ptr %23, align 4
  br label %2392

2392:                                             ; preds = %2391, %2376
  call void @llvm.lifetime.end.p0(i64 1, ptr %193) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %192) #0
  %2393 = load i32, ptr %23, align 4
  switch i32 %2393, label %2396 [
    i32 0, label %2394
  ]

2394:                                             ; preds = %2392
  br label %2395

2395:                                             ; preds = %2394
  store i8 0, ptr %184, align 1, !tbaa !9
  br label %2241, !llvm.loop !158

2396:                                             ; preds = %2392, %2337, %2282, %2245
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #0
  %2397 = load i32, ptr %23, align 4
  switch i32 %2397, label %2401 [
    i32 63, label %2399
  ]

2398:                                             ; preds = %2390, %2336, %2283, %2246
  call void @llvm.lifetime.end.p0(i64 8, ptr %185) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #0
  br label %3137

2399:                                             ; preds = %2396
  br label %2400

2400:                                             ; preds = %2399
  store i8 0, ptr %184, align 1, !tbaa !9
  br label %2233, !llvm.loop !159

2401:                                             ; preds = %2396, %2236
  call void @llvm.lifetime.end.p0(i64 1, ptr %184) #0
  %2402 = load i32, ptr %23, align 4
  switch i32 %2402, label %3135 [
    i32 60, label %2403
  ]

2403:                                             ; preds = %2401
  br label %3133

2404:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %197) #0
  store i8 1, ptr %197, align 1, !tbaa !9
  br label %2405

2405:                                             ; preds = %2538, %2404
  %2406 = load i8, ptr %197, align 1, !tbaa !9, !range !12, !noundef !13
  %2407 = trunc i8 %2406 to i1
  br i1 %2407, label %2409, label %2408

2408:                                             ; preds = %2405
  store i32 68, ptr %23, align 4
  br label %2539

2409:                                             ; preds = %2405
  call void @llvm.lifetime.start.p0(i64 8, ptr %198) #0
  %2410 = load ptr, ptr %98, align 8, !tbaa !5
  %2411 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %2410)
          to label %2412 unwind label %2418

2412:                                             ; preds = %2409
  store ptr %2411, ptr %198, align 8, !tbaa !5
  br label %2413

2413:                                             ; preds = %2533, %2412
  %2414 = load ptr, ptr %198, align 8, !tbaa !5
  %2415 = load i8, ptr %197, align 1, !tbaa !9, !range !12, !noundef !13
  %2416 = trunc i8 %2415 to i1
  br i1 %2416, label %2422, label %2417

2417:                                             ; preds = %2413
  store i32 71, ptr %23, align 4
  br label %2534

2418:                                             ; preds = %2409
  %2419 = landingpad { ptr, i32 }
          cleanup
  %2420 = extractvalue { ptr, i32 } %2419, 0
  store ptr %2420, ptr %19, align 8
  %2421 = extractvalue { ptr, i32 } %2419, 1
  store i32 %2421, ptr %20, align 4
  br label %2536

2422:                                             ; preds = %2413
  call void @llvm.lifetime.start.p0(i64 8, ptr %199) #0
  %2423 = load ptr, ptr %198, align 8, !tbaa !5
  %2424 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %2423, i32 0, i32 1
  store ptr %2424, ptr %199, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %200) #0
  %2425 = load ptr, ptr %199, align 8, !tbaa !5
  %2426 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2425) #0
  %2427 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %200, i32 0, i32 0
  store ptr %2426, ptr %2427, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %201) #0
  %2428 = load ptr, ptr %199, align 8, !tbaa !5
  %2429 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2428) #0
  %2430 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %201, i32 0, i32 0
  store ptr %2429, ptr %2430, align 8
  br label %2431

2431:                                             ; preds = %2527, %2422
  %2432 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %201) #0
  br i1 %2432, label %2434, label %2433

2433:                                             ; preds = %2431
  store i32 74, ptr %23, align 4
  br label %2530

2434:                                             ; preds = %2431
  call void @llvm.lifetime.start.p0(i64 8, ptr %202) #0
  %2435 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %200) #0
  store ptr %2435, ptr %202, align 8, !tbaa !5
  %2436 = load ptr, ptr %11, align 8, !tbaa !5
  %2437 = load ptr, ptr %202, align 8, !tbaa !5
  %2438 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2437, i32 0, i32 1
  %2439 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2438, i32 0, i32 0
  %2440 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2436, ptr noundef nonnull align 8 dereferenceable(8) %2439)
          to label %2441 unwind label %2463

2441:                                             ; preds = %2434
  br i1 %2440, label %2442, label %2471

2442:                                             ; preds = %2441
  %2443 = load ptr, ptr %10, align 8, !tbaa !5
  %2444 = load ptr, ptr %202, align 8, !tbaa !5
  %2445 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2444, i32 0, i32 1
  %2446 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2445, i32 0, i32 1
  %2447 = load ptr, ptr %12, align 8, !tbaa !5
  %2448 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %2443, ptr noundef nonnull align 8 dereferenceable(24) %2446, ptr noundef %2447)
          to label %2449 unwind label %2463

2449:                                             ; preds = %2442
  br i1 %2448, label %2450, label %2471

2450:                                             ; preds = %2449
  %2451 = load ptr, ptr %202, align 8, !tbaa !5
  %2452 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2451, i32 0, i32 0
  %2453 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %2452) #0
  %2454 = load ptr, ptr %13, align 8, !tbaa !5
  %2455 = load ptr, ptr %202, align 8, !tbaa !5
  %2456 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2455, i32 0, i32 1
  %2457 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2456, i32 0, i32 1
  %2458 = load ptr, ptr %202, align 8, !tbaa !5
  %2459 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2458, i32 0, i32 2
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %203, ptr noundef %2453, ptr noundef %2454, ptr noundef %2457, ptr noundef %2459)
          to label %2460 unwind label %2463

2460:                                             ; preds = %2450
  %2461 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %203, i1 noundef zeroext false)
          to label %2462 unwind label %2467

2462:                                             ; preds = %2460
  store i1 %2461, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %203) #0
  store i32 1, ptr %23, align 4
  br label %2524

2463:                                             ; preds = %2450, %2442, %2434
  %2464 = landingpad { ptr, i32 }
          cleanup
  %2465 = extractvalue { ptr, i32 } %2464, 0
  store ptr %2465, ptr %19, align 8
  %2466 = extractvalue { ptr, i32 } %2464, 1
  store i32 %2466, ptr %20, align 4
  br label %2529

2467:                                             ; preds = %2460
  %2468 = landingpad { ptr, i32 }
          cleanup
  %2469 = extractvalue { ptr, i32 } %2468, 0
  store ptr %2469, ptr %19, align 8
  %2470 = extractvalue { ptr, i32 } %2468, 1
  store i32 %2470, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %203) #0
  br label %2529

2471:                                             ; preds = %2449, %2441
  call void @llvm.lifetime.start.p0(i64 1, ptr %204) #0
  store i8 0, ptr %204, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %205) #0
  %2472 = load ptr, ptr %12, align 8, !tbaa !5
  %2473 = icmp ne ptr %2472, null
  call void @llvm.lifetime.start.p0(i64 32, ptr %207) #0
  store i1 false, ptr %208, align 1
  br i1 %2473, label %2474, label %2497

2474:                                             ; preds = %2471
  %2475 = load ptr, ptr %10, align 8, !tbaa !5
  %2476 = load ptr, ptr %11, align 8, !tbaa !5
  %2477 = load ptr, ptr %12, align 8, !tbaa !5
  %2478 = load ptr, ptr %202, align 8, !tbaa !5
  %2479 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2478, i32 0, i32 4
  %2480 = load ptr, ptr %2479, align 8, !tbaa !160
  %2481 = load ptr, ptr %202, align 8, !tbaa !5
  %2482 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2481, i32 0, i32 1
  %2483 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2482, i32 0, i32 0
  %2484 = load ptr, ptr %202, align 8, !tbaa !5
  %2485 = getelementptr inbounds %"class.HIR::TraitPath", ptr %2484, i32 0, i32 1
  %2486 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2485, i32 0, i32 1
  %2487 = load ptr, ptr %13, align 8, !tbaa !5
  %2488 = getelementptr inbounds %class.anon.396, ptr %207, i32 0, i32 0
  %2489 = load ptr, ptr %202, align 8, !tbaa !5
  store ptr %2489, ptr %2488, align 8, !tbaa !5
  %2490 = getelementptr inbounds %class.anon.396, ptr %207, i32 0, i32 1
  %2491 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2491, ptr %2490, align 8, !tbaa !5
  %2492 = getelementptr inbounds %class.anon.396, ptr %207, i32 0, i32 2
  store ptr %204, ptr %2492, align 8, !tbaa !5
  %2493 = getelementptr inbounds %class.anon.396, ptr %207, i32 0, i32 3
  store ptr %5, ptr %2493, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPS2_RKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %206, ptr noundef nonnull align 8 dereferenceable(32) %207)
          to label %2494 unwind label %2508

2494:                                             ; preds = %2474
  store i1 true, ptr %208, align 1
  %2495 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %2475, ptr noundef nonnull align 8 dereferenceable(8) %2476, ptr noundef nonnull align 8 dereferenceable(24) %2477, ptr noundef nonnull align 8 dereferenceable(400) %2480, ptr noundef nonnull align 8 dereferenceable(8) %2483, ptr noundef nonnull align 8 dereferenceable(24) %2486, ptr noundef nonnull align 8 dereferenceable(8) %2487, ptr noundef %206)
          to label %2496 unwind label %2512

2496:                                             ; preds = %2494
  br label %2497

2497:                                             ; preds = %2496, %2471
  %2498 = phi i1 [ false, %2471 ], [ %2495, %2496 ]
  %2499 = load i1, ptr %208, align 1
  br i1 %2499, label %2500, label %2501

2500:                                             ; preds = %2497
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #0
  br label %2501

2501:                                             ; preds = %2500, %2497
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #0
  %2502 = zext i1 %2498 to i8
  store i8 %2502, ptr %205, align 1, !tbaa !9
  %2503 = load i8, ptr %205, align 1, !tbaa !9, !range !12, !noundef !13
  %2504 = trunc i8 %2503 to i1
  br i1 %2504, label %2505, label %2520

2505:                                             ; preds = %2501
  %2506 = load i8, ptr %204, align 1, !tbaa !9, !range !12, !noundef !13
  %2507 = trunc i8 %2506 to i1
  store i1 %2507, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2521

2508:                                             ; preds = %2474
  %2509 = landingpad { ptr, i32 }
          cleanup
  %2510 = extractvalue { ptr, i32 } %2509, 0
  store ptr %2510, ptr %19, align 8
  %2511 = extractvalue { ptr, i32 } %2509, 1
  store i32 %2511, ptr %20, align 4
  br label %2519

2512:                                             ; preds = %2494
  %2513 = landingpad { ptr, i32 }
          cleanup
  %2514 = extractvalue { ptr, i32 } %2513, 0
  store ptr %2514, ptr %19, align 8
  %2515 = extractvalue { ptr, i32 } %2513, 1
  store i32 %2515, ptr %20, align 4
  %2516 = load i1, ptr %208, align 1
  br i1 %2516, label %2517, label %2518

2517:                                             ; preds = %2512
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %206) #0
  br label %2518

2518:                                             ; preds = %2517, %2512
  br label %2519

2519:                                             ; preds = %2518, %2508
  call void @llvm.lifetime.end.p0(i64 32, ptr %207) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %204) #0
  br label %2529

2520:                                             ; preds = %2501
  store i32 0, ptr %23, align 4
  br label %2521

2521:                                             ; preds = %2520, %2505
  call void @llvm.lifetime.end.p0(i64 1, ptr %205) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %204) #0
  %2522 = load i32, ptr %23, align 4
  switch i32 %2522, label %2524 [
    i32 0, label %2523
  ]

2523:                                             ; preds = %2521
  store i32 0, ptr %23, align 4
  br label %2524

2524:                                             ; preds = %2523, %2521, %2462
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  %2525 = load i32, ptr %23, align 4
  switch i32 %2525, label %2530 [
    i32 0, label %2526
  ]

2526:                                             ; preds = %2524
  br label %2527

2527:                                             ; preds = %2526
  %2528 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %200) #0
  br label %2431

2529:                                             ; preds = %2519, %2467, %2463
  call void @llvm.lifetime.end.p0(i64 8, ptr %202) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  br label %2536

2530:                                             ; preds = %2524, %2433
  call void @llvm.lifetime.end.p0(i64 8, ptr %201) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %200) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %199) #0
  %2531 = load i32, ptr %23, align 4
  switch i32 %2531, label %2534 [
    i32 74, label %2532
  ]

2532:                                             ; preds = %2530
  br label %2533

2533:                                             ; preds = %2532
  store i8 0, ptr %197, align 1, !tbaa !9
  br label %2413, !llvm.loop !161

2534:                                             ; preds = %2530, %2417
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #0
  %2535 = load i32, ptr %23, align 4
  switch i32 %2535, label %2539 [
    i32 71, label %2537
  ]

2536:                                             ; preds = %2529, %2418
  call void @llvm.lifetime.end.p0(i64 8, ptr %198) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #0
  br label %3137

2537:                                             ; preds = %2534
  br label %2538

2538:                                             ; preds = %2537
  store i8 0, ptr %197, align 1, !tbaa !9
  br label %2405, !llvm.loop !162

2539:                                             ; preds = %2534, %2408
  call void @llvm.lifetime.end.p0(i64 1, ptr %197) #0
  %2540 = load i32, ptr %23, align 4
  switch i32 %2540, label %3135 [
    i32 68, label %2541
  ]

2541:                                             ; preds = %2539
  br label %3133

2542:                                             ; preds = %1286
  call void @llvm.lifetime.start.p0(i64 1, ptr %209) #0
  store i8 1, ptr %209, align 1, !tbaa !9
  br label %2543

2543:                                             ; preds = %3129, %2542
  %2544 = load i8, ptr %209, align 1, !tbaa !9, !range !12, !noundef !13
  %2545 = trunc i8 %2544 to i1
  br i1 %2545, label %2547, label %2546

2546:                                             ; preds = %2543
  store i32 76, ptr %23, align 4
  br label %3130

2547:                                             ; preds = %2543
  call void @llvm.lifetime.start.p0(i64 8, ptr %210) #0
  %2548 = load ptr, ptr %98, align 8, !tbaa !5
  %2549 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2548)
          to label %2550 unwind label %2556

2550:                                             ; preds = %2547
  store ptr %2549, ptr %210, align 8, !tbaa !5
  br label %2551

2551:                                             ; preds = %3124, %2550
  %2552 = load ptr, ptr %210, align 8, !tbaa !5
  %2553 = load i8, ptr %209, align 1, !tbaa !9, !range !12, !noundef !13
  %2554 = trunc i8 %2553 to i1
  br i1 %2554, label %2560, label %2555

2555:                                             ; preds = %2551
  store i32 79, ptr %23, align 4
  br label %3125

2556:                                             ; preds = %2579, %2566, %2560, %2547
  %2557 = landingpad { ptr, i32 }
          cleanup
  %2558 = extractvalue { ptr, i32 } %2557, 0
  store ptr %2558, ptr %19, align 8
  %2559 = extractvalue { ptr, i32 } %2557, 1
  store i32 %2559, ptr %20, align 4
  br label %3127

2560:                                             ; preds = %2551
  %2561 = load ptr, ptr %210, align 8, !tbaa !5
  %2562 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2561, i32 0, i32 1
  %2563 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %2562)
          to label %2564 unwind label %2556

2564:                                             ; preds = %2560
  br i1 %2563, label %2565, label %3123

2565:                                             ; preds = %2564
  br label %2566

2566:                                             ; preds = %2565
  %2567 = load ptr, ptr %210, align 8, !tbaa !5
  %2568 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2567, i32 0, i32 0
  %2569 = getelementptr inbounds %"class.HIR::Path", ptr %2568, i32 0, i32 0
  %2570 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2569)
          to label %2571 unwind label %2556

2571:                                             ; preds = %2566
  br i1 %2570, label %2593, label %2572

2572:                                             ; preds = %2571
  call void @llvm.lifetime.start.p0(i64 8, ptr %211) #0
  %2573 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull align 8 dereferenceable(8) %2573)
          to label %2574 unwind label %2580

2574:                                             ; preds = %2572
  call void @llvm.lifetime.start.p0(i64 8, ptr %213) #0
  %2575 = getelementptr inbounds %class.anon.397, ptr %213, i32 0, i32 0
  %2576 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2576, ptr %2575, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %212, ptr noundef nonnull align 8 dereferenceable(8) %213) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef %212)
          to label %2577 unwind label %2584

2577:                                             ; preds = %2574
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  %2578 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2578, ptr noundef @.str)
          to label %2579 unwind label %2589

2579:                                             ; preds = %2577
  invoke void @__cxa_throw(ptr %2578, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %3405 unwind label %2556

2580:                                             ; preds = %2572
  %2581 = landingpad { ptr, i32 }
          cleanup
  %2582 = extractvalue { ptr, i32 } %2581, 0
  store ptr %2582, ptr %19, align 8
  %2583 = extractvalue { ptr, i32 } %2581, 1
  store i32 %2583, ptr %20, align 4
  br label %2588

2584:                                             ; preds = %2574
  %2585 = landingpad { ptr, i32 }
          cleanup
  %2586 = extractvalue { ptr, i32 } %2585, 0
  store ptr %2586, ptr %19, align 8
  %2587 = extractvalue { ptr, i32 } %2585, 1
  store i32 %2587, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %212) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %213) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %211) #0
  br label %2588

2588:                                             ; preds = %2584, %2580
  call void @llvm.lifetime.end.p0(i64 8, ptr %211) #0
  br label %3127

2589:                                             ; preds = %2577
  %2590 = landingpad { ptr, i32 }
          cleanup
  %2591 = extractvalue { ptr, i32 } %2590, 0
  store ptr %2591, ptr %19, align 8
  %2592 = extractvalue { ptr, i32 } %2590, 1
  store i32 %2592, ptr %20, align 4
  call void @__cxa_free_exception(ptr %2578) #0
  br label %3127

2593:                                             ; preds = %2571
  br label %2594

2594:                                             ; preds = %2593
  br label %2595

2595:                                             ; preds = %2594
  call void @llvm.lifetime.start.p0(i64 8, ptr %214) #0
  %2596 = load ptr, ptr %210, align 8, !tbaa !5
  %2597 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2596, i32 0, i32 0
  %2598 = getelementptr inbounds %"class.HIR::Path", ptr %2597, i32 0, i32 0
  %2599 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2598)
          to label %2600 unwind label %2624

2600:                                             ; preds = %2595
  store ptr %2599, ptr %214, align 8, !tbaa !5
  br label %2601

2601:                                             ; preds = %2600
  %2602 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2603 unwind label %2624

2603:                                             ; preds = %2601
  br i1 %2602, label %2604, label %2628

2604:                                             ; preds = %2603
  %2605 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %2606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2605, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %2607 unwind label %2624

2607:                                             ; preds = %2604
  %2608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2606, ptr noundef @.str.11)
          to label %2609 unwind label %2624

2609:                                             ; preds = %2607
  %2610 = load ptr, ptr %214, align 8, !tbaa !5
  %2611 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2610, i32 0, i32 2
  %2612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %2608, ptr noundef nonnull align 8 dereferenceable(8) %2611)
          to label %2613 unwind label %2624

2613:                                             ; preds = %2609
  %2614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2612, ptr noundef @.str.12)
          to label %2615 unwind label %2624

2615:                                             ; preds = %2613
  %2616 = load ptr, ptr %214, align 8, !tbaa !5
  %2617 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2616, i32 0, i32 1
  %2618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %2614, ptr noundef nonnull align 8 dereferenceable(32) %2617)
          to label %2619 unwind label %2624

2619:                                             ; preds = %2615
  %2620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2618, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2621 unwind label %2624

2621:                                             ; preds = %2619
  %2622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2620, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2623 unwind label %2624

2623:                                             ; preds = %2621
  br label %2628

2624:                                             ; preds = %2621, %2619, %2615, %2613, %2609, %2607, %2604, %2601, %2595
  %2625 = landingpad { ptr, i32 }
          cleanup
  %2626 = extractvalue { ptr, i32 } %2625, 0
  store ptr %2626, ptr %19, align 8
  %2627 = extractvalue { ptr, i32 } %2625, 1
  store i32 %2627, ptr %20, align 4
  br label %3122

2628:                                             ; preds = %2623, %2603
  br label %2629

2629:                                             ; preds = %2628
  br label %2630

2630:                                             ; preds = %2629
  call void @llvm.lifetime.start.p0(i64 8, ptr %215) #0
  %2631 = getelementptr inbounds i8, ptr %270, i64 8
  %2632 = getelementptr inbounds %struct.TraitResolveCommon, ptr %2631, i32 0, i32 0
  %2633 = load ptr, ptr %2632, align 8, !tbaa !48
  %2634 = load ptr, ptr %10, align 8, !tbaa !5
  %2635 = load ptr, ptr %214, align 8, !tbaa !5
  %2636 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2635, i32 0, i32 1
  %2637 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2636, i32 0, i32 0
  %2638 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %2633, ptr noundef nonnull align 8 dereferenceable(8) %2634, ptr noundef nonnull align 8 dereferenceable(8) %2637)
          to label %2639 unwind label %2656

2639:                                             ; preds = %2630
  store ptr %2638, ptr %215, align 8, !tbaa !5
  br label %2640

2640:                                             ; preds = %2639
  %2641 = load ptr, ptr %215, align 8, !tbaa !5
  %2642 = getelementptr inbounds %"class.HIR::Trait", ptr %2641, i32 0, i32 4
  %2643 = load ptr, ptr %214, align 8, !tbaa !5
  %2644 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2643, i32 0, i32 2
  %2645 = invoke noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2642, ptr noundef nonnull align 8 dereferenceable(8) %2644)
          to label %2646 unwind label %2656

2646:                                             ; preds = %2640
  %2647 = icmp ne i64 %2645, 0
  br i1 %2647, label %2673, label %2648

2648:                                             ; preds = %2646
  call void @llvm.lifetime.start.p0(i64 8, ptr %216) #0
  %2649 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef nonnull align 8 dereferenceable(8) %2649)
          to label %2650 unwind label %2660

2650:                                             ; preds = %2648
  call void @llvm.lifetime.start.p0(i64 8, ptr %218) #0
  %2651 = getelementptr inbounds %class.anon.398, ptr %218, i32 0, i32 0
  %2652 = load ptr, ptr %214, align 8, !tbaa !5
  store ptr %2652, ptr %2651, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %217, ptr noundef nonnull align 8 dereferenceable(8) %218) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef %217)
          to label %2653 unwind label %2664

2653:                                             ; preds = %2650
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #0
  %2654 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2654, ptr noundef @.str)
          to label %2655 unwind label %2669

2655:                                             ; preds = %2653
  invoke void @__cxa_throw(ptr %2654, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %3405 unwind label %2656

2656:                                             ; preds = %2655, %2640, %2630
  %2657 = landingpad { ptr, i32 }
          cleanup
  %2658 = extractvalue { ptr, i32 } %2657, 0
  store ptr %2658, ptr %19, align 8
  %2659 = extractvalue { ptr, i32 } %2657, 1
  store i32 %2659, ptr %20, align 4
  br label %3121

2660:                                             ; preds = %2648
  %2661 = landingpad { ptr, i32 }
          cleanup
  %2662 = extractvalue { ptr, i32 } %2661, 0
  store ptr %2662, ptr %19, align 8
  %2663 = extractvalue { ptr, i32 } %2661, 1
  store i32 %2663, ptr %20, align 4
  br label %2668

2664:                                             ; preds = %2650
  %2665 = landingpad { ptr, i32 }
          cleanup
  %2666 = extractvalue { ptr, i32 } %2665, 0
  store ptr %2666, ptr %19, align 8
  %2667 = extractvalue { ptr, i32 } %2665, 1
  store i32 %2667, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %217) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %218) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %216) #0
  br label %2668

2668:                                             ; preds = %2664, %2660
  call void @llvm.lifetime.end.p0(i64 8, ptr %216) #0
  br label %3121

2669:                                             ; preds = %2653
  %2670 = landingpad { ptr, i32 }
          cleanup
  %2671 = extractvalue { ptr, i32 } %2670, 0
  store ptr %2671, ptr %19, align 8
  %2672 = extractvalue { ptr, i32 } %2670, 1
  store i32 %2672, ptr %20, align 4
  call void @__cxa_free_exception(ptr %2654) #0
  br label %3121

2673:                                             ; preds = %2646
  br label %2674

2674:                                             ; preds = %2673
  br label %2675

2675:                                             ; preds = %2674
  call void @llvm.lifetime.start.p0(i64 8, ptr %219) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %220) #0
  %2676 = load ptr, ptr %215, align 8, !tbaa !5
  %2677 = getelementptr inbounds %"class.HIR::Trait", ptr %2676, i32 0, i32 4
  %2678 = load ptr, ptr %214, align 8, !tbaa !5
  %2679 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2678, i32 0, i32 2
  %2680 = invoke ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE4findERS8_(ptr noundef nonnull align 8 dereferenceable(56) %2677, ptr noundef nonnull align 8 dereferenceable(8) %2679)
          to label %2681 unwind label %2713

2681:                                             ; preds = %2675
  %2682 = getelementptr inbounds %"struct.std::__detail::_Node_const_iterator", ptr %220, i32 0, i32 0
  %2683 = getelementptr inbounds %"struct.std::__detail::_Node_iterator_base", ptr %2682, i32 0, i32 0
  store ptr %2680, ptr %2683, align 8
  %2684 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %220) #0
  %2685 = getelementptr inbounds %"struct.std::pair.399", ptr %2684, i32 0, i32 1
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #0
  store ptr %2685, ptr %219, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %221) #0
  %2686 = load ptr, ptr %214, align 8, !tbaa !5
  %2687 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2686, i32 0, i32 0
  %2688 = load ptr, ptr %214, align 8, !tbaa !5
  %2689 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2688, i32 0, i32 1
  %2690 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2689, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %221, ptr noundef %2687, ptr noundef %2690, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %2691 unwind label %2717

2691:                                             ; preds = %2681
  call void @llvm.lifetime.start.p0(i64 56, ptr %222) #0
  %2692 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 0
  %2693 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %2693, ptr %2692, align 8, !tbaa !5
  %2694 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 1
  store ptr %221, ptr %2694, align 8, !tbaa !5
  %2695 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 2
  store ptr %270, ptr %2695, align 8, !tbaa !163
  %2696 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 3
  %2697 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %2697, ptr %2696, align 8, !tbaa !5
  %2698 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 4
  store ptr %12, ptr %2698, align 8, !tbaa !5
  %2699 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 5
  store ptr %5, ptr %2699, align 8, !tbaa !5
  %2700 = getelementptr inbounds %class.anon.406, ptr %222, i32 0, i32 6
  %2701 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %2701, ptr %2700, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %223) #0
  %2702 = load ptr, ptr %219, align 8, !tbaa !5
  %2703 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %2702, i32 0, i32 3
  store ptr %2703, ptr %223, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %224) #0
  %2704 = load ptr, ptr %223, align 8, !tbaa !5
  %2705 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2704) #0
  %2706 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %224, i32 0, i32 0
  store ptr %2705, ptr %2706, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %225) #0
  %2707 = load ptr, ptr %223, align 8, !tbaa !5
  %2708 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2707) #0
  %2709 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %225, i32 0, i32 0
  store ptr %2708, ptr %2709, align 8
  br label %2710

2710:                                             ; preds = %2735, %2691
  %2711 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(8) %225) #0
  br i1 %2711, label %2721, label %2712

2712:                                             ; preds = %2710
  store i32 88, ptr %23, align 4
  br label %2737

2713:                                             ; preds = %2675
  %2714 = landingpad { ptr, i32 }
          cleanup
  %2715 = extractvalue { ptr, i32 } %2714, 0
  store ptr %2715, ptr %19, align 8
  %2716 = extractvalue { ptr, i32 } %2714, 1
  store i32 %2716, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %220) #0
  br label %3120

2717:                                             ; preds = %2681
  %2718 = landingpad { ptr, i32 }
          cleanup
  %2719 = extractvalue { ptr, i32 } %2718, 0
  store ptr %2719, ptr %19, align 8
  %2720 = extractvalue { ptr, i32 } %2718, 1
  store i32 %2720, ptr %20, align 4
  br label %3119

2721:                                             ; preds = %2710
  call void @llvm.lifetime.start.p0(i64 8, ptr %226) #0
  %2722 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %224) #0
  store ptr %2722, ptr %226, align 8, !tbaa !5
  %2723 = load ptr, ptr %226, align 8, !tbaa !5
  %2724 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %222, ptr noundef nonnull align 8 dereferenceable(144) %2723)
          to label %2725 unwind label %2727

2725:                                             ; preds = %2721
  br i1 %2724, label %2726, label %2731

2726:                                             ; preds = %2725
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2732

2727:                                             ; preds = %2721
  %2728 = landingpad { ptr, i32 }
          cleanup
  %2729 = extractvalue { ptr, i32 } %2728, 0
  store ptr %2729, ptr %19, align 8
  %2730 = extractvalue { ptr, i32 } %2728, 1
  store i32 %2730, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  br label %3118

2731:                                             ; preds = %2725
  store i32 0, ptr %23, align 4
  br label %2732

2732:                                             ; preds = %2731, %2726
  call void @llvm.lifetime.end.p0(i64 8, ptr %226) #0
  %2733 = load i32, ptr %23, align 4
  switch i32 %2733, label %2737 [
    i32 0, label %2734
  ]

2734:                                             ; preds = %2732
  br label %2735

2735:                                             ; preds = %2734
  %2736 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %224) #0
  br label %2710

2737:                                             ; preds = %2732, %2712
  call void @llvm.lifetime.end.p0(i64 8, ptr %225) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %224) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %223) #0
  %2738 = load i32, ptr %23, align 4
  switch i32 %2738, label %3115 [
    i32 88, label %2739
  ]

2739:                                             ; preds = %2737
  call void @llvm.lifetime.start.p0(i64 8, ptr %227) #0
  %2740 = load ptr, ptr %215, align 8, !tbaa !5
  %2741 = getelementptr inbounds %"class.HIR::Trait", ptr %2740, i32 0, i32 0
  %2742 = getelementptr inbounds %"class.HIR::GenericParams", ptr %2741, i32 0, i32 3
  store ptr %2742, ptr %227, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %228) #0
  %2743 = load ptr, ptr %227, align 8, !tbaa !5
  %2744 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2743) #0
  %2745 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %228, i32 0, i32 0
  store ptr %2744, ptr %2745, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %229) #0
  %2746 = load ptr, ptr %227, align 8, !tbaa !5
  %2747 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2746) #0
  %2748 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %229, i32 0, i32 0
  store ptr %2747, ptr %2748, align 8
  br label %2749

2749:                                             ; preds = %2874, %2739
  %2750 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %228, ptr noundef nonnull align 8 dereferenceable(8) %229) #0
  br i1 %2750, label %2752, label %2751

2751:                                             ; preds = %2749
  store i32 90, ptr %23, align 4
  br label %2878

2752:                                             ; preds = %2749
  call void @llvm.lifetime.start.p0(i64 8, ptr %230) #0
  %2753 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %228) #0
  store ptr %2753, ptr %230, align 8, !tbaa !5
  %2754 = load ptr, ptr %230, align 8, !tbaa !5
  %2755 = invoke noundef zeroext i1 @_ZNK3HIR12GenericBound13is_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %2754)
          to label %2756 unwind label %2758

2756:                                             ; preds = %2752
  br i1 %2755, label %2762, label %2757

2757:                                             ; preds = %2756
  store i32 91, ptr %23, align 4
  br label %2871

2758:                                             ; preds = %2752
  %2759 = landingpad { ptr, i32 }
          cleanup
  %2760 = extractvalue { ptr, i32 } %2759, 0
  store ptr %2760, ptr %19, align 8
  %2761 = extractvalue { ptr, i32 } %2759, 1
  store i32 %2761, ptr %20, align 4
  br label %2877

2762:                                             ; preds = %2756
  call void @llvm.lifetime.start.p0(i64 8, ptr %231) #0
  %2763 = load ptr, ptr %230, align 8, !tbaa !5
  %2764 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %2763)
          to label %2765 unwind label %2783

2765:                                             ; preds = %2762
  store ptr %2764, ptr %231, align 8, !tbaa !5
  br label %2766

2766:                                             ; preds = %2765
  %2767 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2768 unwind label %2783

2768:                                             ; preds = %2766
  br i1 %2767, label %2769, label %2787

2769:                                             ; preds = %2768
  %2770 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %2771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2770, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %2772 unwind label %2783

2772:                                             ; preds = %2769
  %2773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2771, ptr noundef @.str.13)
          to label %2774 unwind label %2783

2774:                                             ; preds = %2772
  %2775 = load ptr, ptr %231, align 8, !tbaa !5
  %2776 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %2775, i32 0, i32 1
  %2777 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2773, ptr noundef nonnull align 8 dereferenceable(8) %2776)
          to label %2778 unwind label %2783

2778:                                             ; preds = %2774
  %2779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2777, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2780 unwind label %2783

2780:                                             ; preds = %2778
  %2781 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2779, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2782 unwind label %2783

2782:                                             ; preds = %2780
  br label %2787

2783:                                             ; preds = %2860, %2803, %2801, %2797, %2793, %2789, %2780, %2778, %2774, %2772, %2769, %2766, %2762
  %2784 = landingpad { ptr, i32 }
          cleanup
  %2785 = extractvalue { ptr, i32 } %2784, 0
  store ptr %2785, ptr %19, align 8
  %2786 = extractvalue { ptr, i32 } %2784, 1
  store i32 %2786, ptr %20, align 4
  br label %2876

2787:                                             ; preds = %2782, %2768
  br label %2788

2788:                                             ; preds = %2787
  br label %2789

2789:                                             ; preds = %2788
  %2790 = load ptr, ptr %231, align 8, !tbaa !5
  %2791 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %2790, i32 0, i32 1
  %2792 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2791)
          to label %2793 unwind label %2783

2793:                                             ; preds = %2789
  %2794 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2792)
          to label %2795 unwind label %2783

2795:                                             ; preds = %2793
  br i1 %2794, label %2797, label %2796

2796:                                             ; preds = %2795
  store i32 91, ptr %23, align 4
  br label %2868

2797:                                             ; preds = %2795
  %2798 = load ptr, ptr %231, align 8, !tbaa !5
  %2799 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %2798, i32 0, i32 1
  %2800 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2799)
          to label %2801 unwind label %2783

2801:                                             ; preds = %2797
  %2802 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2800)
          to label %2803 unwind label %2783

2803:                                             ; preds = %2801
  %2804 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2802, i32 0, i32 0
  %2805 = getelementptr inbounds %"class.HIR::Path", ptr %2804, i32 0, i32 0
  %2806 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2805)
          to label %2807 unwind label %2783

2807:                                             ; preds = %2803
  br i1 %2806, label %2809, label %2808

2808:                                             ; preds = %2807
  store i32 91, ptr %23, align 4
  br label %2868

2809:                                             ; preds = %2807
  call void @llvm.lifetime.start.p0(i64 8, ptr %232) #0
  %2810 = load ptr, ptr %231, align 8, !tbaa !5
  %2811 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %2810, i32 0, i32 1
  %2812 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2811)
          to label %2813 unwind label %2826

2813:                                             ; preds = %2809
  %2814 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2812)
          to label %2815 unwind label %2826

2815:                                             ; preds = %2813
  %2816 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2814, i32 0, i32 0
  %2817 = getelementptr inbounds %"class.HIR::Path", ptr %2816, i32 0, i32 0
  %2818 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2817)
          to label %2819 unwind label %2826

2819:                                             ; preds = %2815
  store ptr %2818, ptr %232, align 8, !tbaa !5
  %2820 = load ptr, ptr %232, align 8, !tbaa !5
  %2821 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2820, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %233) #0
  invoke void @_ZN3HIR7TypeRef8new_selfEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %233)
          to label %2822 unwind label %2830

2822:                                             ; preds = %2819
  %2823 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2821, ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %2824 unwind label %2834

2824:                                             ; preds = %2822
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  br i1 %2823, label %2825, label %2839

2825:                                             ; preds = %2824
  store i32 91, ptr %23, align 4
  br label %2858

2826:                                             ; preds = %2849, %2839, %2815, %2813, %2809
  %2827 = landingpad { ptr, i32 }
          cleanup
  %2828 = extractvalue { ptr, i32 } %2827, 0
  store ptr %2828, ptr %19, align 8
  %2829 = extractvalue { ptr, i32 } %2827, 1
  store i32 %2829, ptr %20, align 4
  br label %2866

2830:                                             ; preds = %2819
  %2831 = landingpad { ptr, i32 }
          cleanup
  %2832 = extractvalue { ptr, i32 } %2831, 0
  store ptr %2832, ptr %19, align 8
  %2833 = extractvalue { ptr, i32 } %2831, 1
  store i32 %2833, ptr %20, align 4
  br label %2838

2834:                                             ; preds = %2822
  %2835 = landingpad { ptr, i32 }
          cleanup
  %2836 = extractvalue { ptr, i32 } %2835, 0
  store ptr %2836, ptr %19, align 8
  %2837 = extractvalue { ptr, i32 } %2835, 1
  store i32 %2837, ptr %20, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %233) #0
  br label %2838

2838:                                             ; preds = %2834, %2830
  call void @llvm.lifetime.end.p0(i64 8, ptr %233) #0
  br label %2866

2839:                                             ; preds = %2824
  %2840 = load ptr, ptr %232, align 8, !tbaa !5
  %2841 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2840, i32 0, i32 1
  %2842 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2841, i32 0, i32 0
  %2843 = load ptr, ptr %214, align 8, !tbaa !5
  %2844 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2843, i32 0, i32 1
  %2845 = getelementptr inbounds %"class.HIR::GenericPath", ptr %2844, i32 0, i32 0
  %2846 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2842, ptr noundef nonnull align 8 dereferenceable(8) %2845)
          to label %2847 unwind label %2826

2847:                                             ; preds = %2839
  br i1 %2846, label %2848, label %2849

2848:                                             ; preds = %2847
  store i32 91, ptr %23, align 4
  br label %2858

2849:                                             ; preds = %2847
  %2850 = load ptr, ptr %232, align 8, !tbaa !5
  %2851 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2850, i32 0, i32 2
  %2852 = load ptr, ptr %214, align 8, !tbaa !5
  %2853 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2852, i32 0, i32 2
  %2854 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %2851, ptr noundef nonnull align 8 dereferenceable(8) %2853)
          to label %2855 unwind label %2826

2855:                                             ; preds = %2849
  br i1 %2854, label %2856, label %2857

2856:                                             ; preds = %2855
  store i32 91, ptr %23, align 4
  br label %2858

2857:                                             ; preds = %2855
  store i32 0, ptr %23, align 4
  br label %2858

2858:                                             ; preds = %2857, %2856, %2848, %2825
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #0
  %2859 = load i32, ptr %23, align 4
  switch i32 %2859, label %2868 [
    i32 0, label %2860
  ]

2860:                                             ; preds = %2858
  %2861 = load ptr, ptr %231, align 8, !tbaa !5
  %2862 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %2861, i32 0, i32 2
  %2863 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %222, ptr noundef nonnull align 8 dereferenceable(144) %2862)
          to label %2864 unwind label %2783

2864:                                             ; preds = %2860
  br i1 %2863, label %2865, label %2867

2865:                                             ; preds = %2864
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %2868

2866:                                             ; preds = %2838, %2826
  call void @llvm.lifetime.end.p0(i64 8, ptr %232) #0
  br label %2876

2867:                                             ; preds = %2864
  store i32 0, ptr %23, align 4
  br label %2868

2868:                                             ; preds = %2867, %2865, %2858, %2808, %2796
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #0
  %2869 = load i32, ptr %23, align 4
  switch i32 %2869, label %2871 [
    i32 0, label %2870
  ]

2870:                                             ; preds = %2868
  store i32 0, ptr %23, align 4
  br label %2871

2871:                                             ; preds = %2870, %2868, %2757
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  %2872 = load i32, ptr %23, align 4
  switch i32 %2872, label %2878 [
    i32 0, label %2873
    i32 91, label %2874
  ]

2873:                                             ; preds = %2871
  br label %2874

2874:                                             ; preds = %2873, %2871
  %2875 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %228) #0
  br label %2749

2876:                                             ; preds = %2866, %2783
  call void @llvm.lifetime.end.p0(i64 8, ptr %231) #0
  br label %2877

2877:                                             ; preds = %2876, %2758
  call void @llvm.lifetime.end.p0(i64 8, ptr %230) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #0
  br label %3118

2878:                                             ; preds = %2871, %2751
  call void @llvm.lifetime.end.p0(i64 8, ptr %229) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %228) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %227) #0
  %2879 = load i32, ptr %23, align 4
  switch i32 %2879, label %3115 [
    i32 90, label %2880
  ]

2880:                                             ; preds = %2878
  call void @llvm.lifetime.start.p0(i64 24, ptr %234) #0
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %235) #0
  %2881 = load ptr, ptr %214, align 8, !tbaa !5
  store ptr %2881, ptr %235, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %234, ptr noundef nonnull align 8 dereferenceable(8) %235)
          to label %2882 unwind label %2894

2882:                                             ; preds = %2880
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %236) #0
  %2883 = load ptr, ptr %214, align 8, !tbaa !5
  %2884 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2883, i32 0, i32 0
  store ptr %2884, ptr %236, align 8, !tbaa !5
  br label %2885

2885:                                             ; preds = %2882
  call void @llvm.lifetime.start.p0(i64 8, ptr %237) #0
  %2886 = load ptr, ptr %236, align 8, !tbaa !5
  %2887 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2886)
          to label %2888 unwind label %2898

2888:                                             ; preds = %2885
  %2889 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2887)
          to label %2890 unwind label %2898

2890:                                             ; preds = %2888
  store ptr %2889, ptr %237, align 8, !tbaa !5
  %2891 = load ptr, ptr %237, align 8, !tbaa !5
  %2892 = icmp ne ptr %2891, null
  br i1 %2892, label %2902, label %2893

2893:                                             ; preds = %2890
  store i32 95, ptr %23, align 4
  br label %2919

2894:                                             ; preds = %2880
  %2895 = landingpad { ptr, i32 }
          cleanup
  %2896 = extractvalue { ptr, i32 } %2895, 0
  store ptr %2896, ptr %19, align 8
  %2897 = extractvalue { ptr, i32 } %2895, 1
  store i32 %2897, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %235) #0
  br label %3107

2898:                                             ; preds = %2888, %2885
  %2899 = landingpad { ptr, i32 }
          cleanup
  %2900 = extractvalue { ptr, i32 } %2899, 0
  store ptr %2900, ptr %19, align 8
  %2901 = extractvalue { ptr, i32 } %2899, 1
  store i32 %2901, ptr %20, align 4
  br label %2920

2902:                                             ; preds = %2890
  call void @llvm.lifetime.start.p0(i64 8, ptr %238) #0
  %2903 = load ptr, ptr %237, align 8, !tbaa !5
  %2904 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2903, i32 0, i32 0
  %2905 = getelementptr inbounds %"class.HIR::Path", ptr %2904, i32 0, i32 0
  %2906 = invoke noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %2905)
          to label %2907 unwind label %2914

2907:                                             ; preds = %2902
  store ptr %2906, ptr %238, align 8, !tbaa !5
  %2908 = load ptr, ptr %238, align 8, !tbaa !5
  %2909 = icmp ne ptr %2908, null
  br i1 %2909, label %2910, label %2918

2910:                                             ; preds = %2907
  invoke void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %234, ptr noundef nonnull align 8 dereferenceable(8) %238)
          to label %2911 unwind label %2914

2911:                                             ; preds = %2910
  %2912 = load ptr, ptr %238, align 8, !tbaa !5
  %2913 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2912, i32 0, i32 0
  store ptr %2913, ptr %236, align 8, !tbaa !5
  br label %2918

2914:                                             ; preds = %2910, %2902
  %2915 = landingpad { ptr, i32 }
          cleanup
  %2916 = extractvalue { ptr, i32 } %2915, 0
  store ptr %2916, ptr %19, align 8
  %2917 = extractvalue { ptr, i32 } %2915, 1
  store i32 %2917, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  br label %2920

2918:                                             ; preds = %2911, %2907
  call void @llvm.lifetime.end.p0(i64 8, ptr %238) #0
  store i32 95, ptr %23, align 4
  br label %2919

2919:                                             ; preds = %2918, %2893
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #0
  br label %2921

2920:                                             ; preds = %2914, %2898
  call void @llvm.lifetime.end.p0(i64 8, ptr %237) #0
  br label %3106

2921:                                             ; preds = %2919
  call void @llvm.lifetime.start.p0(i64 8, ptr %239) #0
  %2922 = load ptr, ptr %236, align 8, !tbaa !5
  %2923 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2922)
          to label %2924 unwind label %2946

2924:                                             ; preds = %2921
  %2925 = invoke noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %2923)
          to label %2926 unwind label %2946

2926:                                             ; preds = %2924
  store ptr %2925, ptr %239, align 8, !tbaa !5
  %2927 = load ptr, ptr %239, align 8, !tbaa !5
  %2928 = icmp ne ptr %2927, null
  br i1 %2928, label %2929, label %3085

2929:                                             ; preds = %2926
  br label %2930

2930:                                             ; preds = %2929
  %2931 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2932 unwind label %2946

2932:                                             ; preds = %2930
  br i1 %2931, label %2933, label %2950

2933:                                             ; preds = %2932
  %2934 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %2935 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2934, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %2936 unwind label %2946

2936:                                             ; preds = %2933
  %2937 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2935, ptr noundef @.str.14)
          to label %2938 unwind label %2946

2938:                                             ; preds = %2936
  %2939 = load ptr, ptr %236, align 8, !tbaa !5
  %2940 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2937, ptr noundef nonnull align 8 dereferenceable(8) %2939)
          to label %2941 unwind label %2946

2941:                                             ; preds = %2938
  %2942 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2940, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2943 unwind label %2946

2943:                                             ; preds = %2941
  %2944 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2942, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2945 unwind label %2946

2945:                                             ; preds = %2943
  br label %2950

2946:                                             ; preds = %2943, %2941, %2938, %2936, %2933, %2930, %2924, %2921
  %2947 = landingpad { ptr, i32 }
          cleanup
  %2948 = extractvalue { ptr, i32 } %2947, 0
  store ptr %2948, ptr %19, align 8
  %2949 = extractvalue { ptr, i32 } %2947, 1
  store i32 %2949, ptr %20, align 4
  br label %3105

2950:                                             ; preds = %2945, %2932
  br label %2951

2951:                                             ; preds = %2950
  br label %2952

2952:                                             ; preds = %2951
  %2953 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  %2954 = xor i1 %2953, true
  br i1 %2954, label %2955, label %2956

2955:                                             ; preds = %2952
  br label %2958

2956:                                             ; preds = %2952
  call void @__assert_fail(ptr noundef @.str.15, ptr noundef @.str.5, i32 noundef 536, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #11
  unreachable

2957:                                             ; No predecessors!
  br label %2958

2958:                                             ; preds = %2957, %2955
  call void @llvm.lifetime.start.p0(i64 8, ptr %240) #0
  %2959 = load ptr, ptr %239, align 8, !tbaa !5
  %2960 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %2959, i32 0, i32 1
  store ptr %2960, ptr %240, align 8, !tbaa !5
  br label %2961

2961:                                             ; preds = %3048, %2958
  call void @llvm.lifetime.start.p0(i64 8, ptr %241) #0
  %2962 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  %2963 = load ptr, ptr %2962, align 8, !tbaa !5
  store ptr %2963, ptr %241, align 8, !tbaa !5
  br label %2964

2964:                                             ; preds = %2961
  %2965 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2966 unwind label %2987

2966:                                             ; preds = %2964
  br i1 %2965, label %2967, label %2991

2967:                                             ; preds = %2966
  %2968 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %2969 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2968, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %2970 unwind label %2987

2970:                                             ; preds = %2967
  %2971 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2969, ptr noundef @.str.14)
          to label %2972 unwind label %2987

2972:                                             ; preds = %2970
  %2973 = load ptr, ptr %241, align 8, !tbaa !5
  %2974 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2973, i32 0, i32 1
  %2975 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %2971, ptr noundef nonnull align 8 dereferenceable(32) %2974)
          to label %2976 unwind label %2987

2976:                                             ; preds = %2972
  %2977 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2975, ptr noundef @.str.16)
          to label %2978 unwind label %2987

2978:                                             ; preds = %2976
  %2979 = load ptr, ptr %241, align 8, !tbaa !5
  %2980 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2979, i32 0, i32 2
  %2981 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %2977, ptr noundef nonnull align 8 dereferenceable(8) %2980)
          to label %2982 unwind label %2987

2982:                                             ; preds = %2978
  %2983 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2981, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2984 unwind label %2987

2984:                                             ; preds = %2982
  %2985 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2983, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2986 unwind label %2987

2986:                                             ; preds = %2984
  br label %2991

2987:                                             ; preds = %2984, %2982, %2978, %2976, %2972, %2970, %2967, %2964
  %2988 = landingpad { ptr, i32 }
          cleanup
  %2989 = extractvalue { ptr, i32 } %2988, 0
  store ptr %2989, ptr %19, align 8
  %2990 = extractvalue { ptr, i32 } %2988, 1
  store i32 %2990, ptr %20, align 4
  br label %3050

2991:                                             ; preds = %2986, %2966
  br label %2992

2992:                                             ; preds = %2991
  br label %2993

2993:                                             ; preds = %2992
  call void @llvm.lifetime.start.p0(i64 8, ptr %242) #0
  store ptr null, ptr %242, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %243) #0
  %2994 = load ptr, ptr %240, align 8, !tbaa !5
  store ptr %2994, ptr %243, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %244) #0
  %2995 = load ptr, ptr %243, align 8, !tbaa !5
  %2996 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %2995) #0
  %2997 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %244, i32 0, i32 0
  store ptr %2996, ptr %2997, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %245) #0
  %2998 = load ptr, ptr %243, align 8, !tbaa !5
  %2999 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %2998) #0
  %3000 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %245, i32 0, i32 0
  store ptr %2999, ptr %3000, align 8
  br label %3001

3001:                                             ; preds = %3022, %2993
  %3002 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(8) %245) #0
  br i1 %3002, label %3004, label %3003

3003:                                             ; preds = %3001
  store i32 102, ptr %23, align 4
  br label %3024

3004:                                             ; preds = %3001
  call void @llvm.lifetime.start.p0(i64 8, ptr %246) #0
  %3005 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #0
  store ptr %3005, ptr %246, align 8, !tbaa !5
  %3006 = load ptr, ptr %246, align 8, !tbaa !5
  %3007 = getelementptr inbounds %"class.HIR::TraitPath", ptr %3006, i32 0, i32 1
  %3008 = load ptr, ptr %241, align 8, !tbaa !5
  %3009 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3008, i32 0, i32 1
  %3010 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %3007, ptr noundef nonnull align 8 dereferenceable(32) %3009)
          to label %3011 unwind label %3014

3011:                                             ; preds = %3004
  br i1 %3010, label %3012, label %3018

3012:                                             ; preds = %3011
  %3013 = load ptr, ptr %246, align 8, !tbaa !5
  store ptr %3013, ptr %242, align 8, !tbaa !5
  store i32 102, ptr %23, align 4
  br label %3019

3014:                                             ; preds = %3004
  %3015 = landingpad { ptr, i32 }
          cleanup
  %3016 = extractvalue { ptr, i32 } %3015, 0
  store ptr %3016, ptr %19, align 8
  %3017 = extractvalue { ptr, i32 } %3015, 1
  store i32 %3017, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #0
  br label %3049

3018:                                             ; preds = %3011
  store i32 0, ptr %23, align 4
  br label %3019

3019:                                             ; preds = %3018, %3012
  call void @llvm.lifetime.end.p0(i64 8, ptr %246) #0
  %3020 = load i32, ptr %23, align 4
  switch i32 %3020, label %3024 [
    i32 0, label %3021
  ]

3021:                                             ; preds = %3019
  br label %3022

3022:                                             ; preds = %3021
  %3023 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %244) #0
  br label %3001

3024:                                             ; preds = %3019, %3003
  call void @llvm.lifetime.end.p0(i64 8, ptr %245) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %244) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %243) #0
  br label %3025

3025:                                             ; preds = %3024
  %3026 = load ptr, ptr %242, align 8, !tbaa !5
  %3027 = icmp ne ptr %3026, null
  br i1 %3027, label %3028, label %3029

3028:                                             ; preds = %3025
  br label %3031

3029:                                             ; preds = %3025
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.5, i32 noundef 550, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #11
  unreachable

3030:                                             ; No predecessors!
  br label %3031

3031:                                             ; preds = %3030, %3028
  %3032 = load ptr, ptr %242, align 8, !tbaa !5
  %3033 = getelementptr inbounds %"class.HIR::TraitPath", ptr %3032, i32 0, i32 3
  %3034 = load ptr, ptr %241, align 8, !tbaa !5
  %3035 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %3034, i32 0, i32 2
  %3036 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE2atERS7_(ptr noundef nonnull align 8 dereferenceable(48) %3033, ptr noundef nonnull align 8 dereferenceable(8) %3035)
          to label %3037 unwind label %3041

3037:                                             ; preds = %3031
  %3038 = getelementptr inbounds %"struct.HIR::TraitPath::AtyBound", ptr %3036, i32 0, i32 1
  store ptr %3038, ptr %240, align 8, !tbaa !5
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  %3039 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  br i1 %3039, label %3040, label %3045

3040:                                             ; preds = %3037
  store i32 98, ptr %23, align 4
  br label %3046

3041:                                             ; preds = %3031
  %3042 = landingpad { ptr, i32 }
          cleanup
  %3043 = extractvalue { ptr, i32 } %3042, 0
  store ptr %3043, ptr %19, align 8
  %3044 = extractvalue { ptr, i32 } %3042, 1
  store i32 %3044, ptr %20, align 4
  br label %3049

3045:                                             ; preds = %3037
  store i32 0, ptr %23, align 4
  br label %3046

3046:                                             ; preds = %3045, %3040
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  %3047 = load i32, ptr %23, align 4
  switch i32 %3047, label %3405 [
    i32 0, label %3048
    i32 98, label %3051
  ]

3048:                                             ; preds = %3046
  br label %2961, !llvm.loop !165

3049:                                             ; preds = %3041, %3014
  call void @llvm.lifetime.end.p0(i64 8, ptr %242) #0
  br label %3050

3050:                                             ; preds = %3049, %2987
  call void @llvm.lifetime.end.p0(i64 8, ptr %241) #0
  br label %3084

3051:                                             ; preds = %3046
  call void @llvm.lifetime.start.p0(i64 8, ptr %247) #0
  %3052 = load ptr, ptr %240, align 8, !tbaa !5
  store ptr %3052, ptr %247, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %248) #0
  %3053 = load ptr, ptr %247, align 8, !tbaa !5
  %3054 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %3053) #0
  %3055 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %248, i32 0, i32 0
  store ptr %3054, ptr %3055, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %249) #0
  %3056 = load ptr, ptr %247, align 8, !tbaa !5
  %3057 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %3056) #0
  %3058 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %249, i32 0, i32 0
  store ptr %3057, ptr %3058, align 8
  br label %3059

3059:                                             ; preds = %3076, %3051
  %3060 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull align 8 dereferenceable(8) %249) #0
  br i1 %3060, label %3062, label %3061

3061:                                             ; preds = %3059
  store i32 104, ptr %23, align 4
  br label %3078

3062:                                             ; preds = %3059
  call void @llvm.lifetime.start.p0(i64 8, ptr %250) #0
  %3063 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %248) #0
  store ptr %3063, ptr %250, align 8, !tbaa !5
  %3064 = load ptr, ptr %250, align 8, !tbaa !5
  %3065 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %222, ptr noundef nonnull align 8 dereferenceable(144) %3064)
          to label %3066 unwind label %3068

3066:                                             ; preds = %3062
  br i1 %3065, label %3067, label %3072

3067:                                             ; preds = %3066
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %3073

3068:                                             ; preds = %3062
  %3069 = landingpad { ptr, i32 }
          cleanup
  %3070 = extractvalue { ptr, i32 } %3069, 0
  store ptr %3070, ptr %19, align 8
  %3071 = extractvalue { ptr, i32 } %3069, 1
  store i32 %3071, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #0
  br label %3084

3072:                                             ; preds = %3066
  store i32 0, ptr %23, align 4
  br label %3073

3073:                                             ; preds = %3072, %3067
  call void @llvm.lifetime.end.p0(i64 8, ptr %250) #0
  %3074 = load i32, ptr %23, align 4
  switch i32 %3074, label %3078 [
    i32 0, label %3075
  ]

3075:                                             ; preds = %3073
  br label %3076

3076:                                             ; preds = %3075
  %3077 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %248) #0
  br label %3059

3078:                                             ; preds = %3073, %3061
  call void @llvm.lifetime.end.p0(i64 8, ptr %249) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %248) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %247) #0
  %3079 = load i32, ptr %23, align 4
  switch i32 %3079, label %3081 [
    i32 104, label %3080
  ]

3080:                                             ; preds = %3078
  store i32 0, ptr %23, align 4
  br label %3081

3081:                                             ; preds = %3080, %3078
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #0
  %3082 = load i32, ptr %23, align 4
  switch i32 %3082, label %3086 [
    i32 0, label %3083
  ]

3083:                                             ; preds = %3081
  br label %3085

3084:                                             ; preds = %3068, %3050
  call void @llvm.lifetime.end.p0(i64 8, ptr %240) #0
  br label %3105

3085:                                             ; preds = %3083, %2926
  store i32 0, ptr %23, align 4
  br label %3086

3086:                                             ; preds = %3085, %3081
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  %3087 = load i32, ptr %23, align 4
  switch i32 %3087, label %3089 [
    i32 0, label %3088
  ]

3088:                                             ; preds = %3086
  store i32 0, ptr %23, align 4
  br label %3089

3089:                                             ; preds = %3088, %3086
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %234) #0
  %3090 = load i32, ptr %23, align 4
  switch i32 %3090, label %3115 [
    i32 0, label %3091
  ]

3091:                                             ; preds = %3089
  br label %3092

3092:                                             ; preds = %3091
  %3093 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3094 unwind label %3108

3094:                                             ; preds = %3092
  br i1 %3093, label %3095, label %3112

3095:                                             ; preds = %3094
  %3096 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %3097 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3096, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %3098 unwind label %3108

3098:                                             ; preds = %3095
  %3099 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3097, ptr noundef @.str.18)
          to label %3100 unwind label %3108

3100:                                             ; preds = %3098
  %3101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3099, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3102 unwind label %3108

3102:                                             ; preds = %3100
  %3103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3101, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3104 unwind label %3108

3104:                                             ; preds = %3102
  br label %3112

3105:                                             ; preds = %3084, %2946
  call void @llvm.lifetime.end.p0(i64 8, ptr %239) #0
  br label %3106

3106:                                             ; preds = %3105, %2920
  call void @llvm.lifetime.end.p0(i64 8, ptr %236) #0
  br label %3107

3107:                                             ; preds = %3106, %2894
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %234) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %234) #0
  br label %3118

3108:                                             ; preds = %3102, %3100, %3098, %3095, %3092
  %3109 = landingpad { ptr, i32 }
          cleanup
  %3110 = extractvalue { ptr, i32 } %3109, 0
  store ptr %3110, ptr %19, align 8
  %3111 = extractvalue { ptr, i32 } %3109, 1
  store i32 %3111, ptr %20, align 4
  br label %3118

3112:                                             ; preds = %3104, %3094
  br label %3113

3113:                                             ; preds = %3112
  br label %3114

3114:                                             ; preds = %3113
  store i32 0, ptr %23, align 4
  br label %3115

3115:                                             ; preds = %3114, %3089, %2878, %2737
  call void @llvm.lifetime.end.p0(i64 56, ptr %222) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %221) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %221) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #0
  %3116 = load i32, ptr %23, align 4
  switch i32 %3116, label %3125 [
    i32 0, label %3117
  ]

3117:                                             ; preds = %3115
  br label %3123

3118:                                             ; preds = %3108, %3107, %2877, %2727
  call void @llvm.lifetime.end.p0(i64 56, ptr %222) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %221) #0
  br label %3119

3119:                                             ; preds = %3118, %2717
  call void @llvm.lifetime.end.p0(i64 128, ptr %221) #0
  br label %3120

3120:                                             ; preds = %3119, %2713
  call void @llvm.lifetime.end.p0(i64 8, ptr %219) #0
  br label %3121

3121:                                             ; preds = %3120, %2669, %2668, %2656
  call void @llvm.lifetime.end.p0(i64 8, ptr %215) #0
  br label %3122

3122:                                             ; preds = %3121, %2624
  call void @llvm.lifetime.end.p0(i64 8, ptr %214) #0
  br label %3127

3123:                                             ; preds = %3117, %2564
  br label %3124

3124:                                             ; preds = %3123
  store i8 0, ptr %209, align 1, !tbaa !9
  br label %2551, !llvm.loop !166

3125:                                             ; preds = %3115, %2555
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  %3126 = load i32, ptr %23, align 4
  switch i32 %3126, label %3130 [
    i32 79, label %3128
  ]

3127:                                             ; preds = %3122, %2589, %2588, %2556
  call void @llvm.lifetime.end.p0(i64 8, ptr %210) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #0
  br label %3137

3128:                                             ; preds = %3125
  br label %3129

3129:                                             ; preds = %3128
  store i8 0, ptr %209, align 1, !tbaa !9
  br label %2543, !llvm.loop !167

3130:                                             ; preds = %3125, %2546
  call void @llvm.lifetime.end.p0(i64 1, ptr %209) #0
  %3131 = load i32, ptr %23, align 4
  switch i32 %3131, label %3135 [
    i32 76, label %3132
  ]

3132:                                             ; preds = %3130
  br label %3133

3133:                                             ; preds = %3132, %2541, %2403, %2231, %2066, %1856, %1616, %1350, %1288
  br label %3134

3134:                                             ; preds = %3133
  store i8 0, ptr %97, align 1, !tbaa !9
  br label %1275, !llvm.loop !168

3135:                                             ; preds = %3130, %2539, %2401, %2229, %2064, %1854, %1614, %1348, %1278
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  %3136 = load i32, ptr %23, align 4
  switch i32 %3136, label %3140 [
    i32 10, label %3138
  ]

3137:                                             ; preds = %3127, %2536, %2398, %2226, %2061, %1851, %1611, %1345, %1279
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #0
  br label %3398

3138:                                             ; preds = %3135
  br label %3139

3139:                                             ; preds = %3138
  store i8 0, ptr %97, align 1, !tbaa !9
  br label %1267, !llvm.loop !169

3140:                                             ; preds = %3135, %1270
  call void @llvm.lifetime.end.p0(i64 1, ptr %97) #0
  %3141 = load i32, ptr %23, align 4
  switch i32 %3141, label %3396 [
    i32 7, label %3142
  ]

3142:                                             ; preds = %3140
  call void @llvm.lifetime.start.p0(i64 1, ptr %251) #0
  %3143 = getelementptr inbounds i8, ptr %270, i64 8
  %3144 = getelementptr inbounds %struct.TraitResolveCommon, ptr %3143, i32 0, i32 0
  %3145 = load ptr, ptr %3144, align 8, !tbaa !48
  %3146 = load ptr, ptr %10, align 8, !tbaa !5
  %3147 = load ptr, ptr %11, align 8, !tbaa !5
  %3148 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %3145, ptr noundef nonnull align 8 dereferenceable(8) %3146, ptr noundef nonnull align 8 dereferenceable(8) %3147)
          to label %3149 unwind label %3178

3149:                                             ; preds = %3142
  %3150 = getelementptr inbounds %"class.HIR::Trait", ptr %3148, i32 0, i32 3
  %3151 = load i8, ptr %3150, align 8, !tbaa !170, !range !12, !noundef !13
  %3152 = trunc i8 %3151 to i1
  br i1 %3152, label %3153, label %3301

3153:                                             ; preds = %3149
  call void @llvm.lifetime.start.p0(i64 1, ptr %252) #0
  store i8 0, ptr %252, align 1, !tbaa !9
  %3154 = getelementptr inbounds i8, ptr %270, i64 8
  %3155 = getelementptr inbounds %struct.TraitResolveCommon, ptr %3154, i32 0, i32 0
  %3156 = load ptr, ptr %3155, align 8, !tbaa !48
  %3157 = load ptr, ptr %11, align 8, !tbaa !5
  %3158 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %254) #0
  %3159 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 0
  store ptr %270, ptr %3159, align 8, !tbaa !187
  %3160 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 1
  %3161 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %3161, ptr %3160, align 8, !tbaa !5
  %3162 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 2
  %3163 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %3163, ptr %3162, align 8, !tbaa !5
  %3164 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 3
  store ptr %12, ptr %3164, align 8, !tbaa !5
  %3165 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 4
  %3166 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %3166, ptr %3165, align 8, !tbaa !5
  %3167 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 5
  store ptr %5, ptr %3167, align 8, !tbaa !5
  %3168 = getelementptr inbounds %class.anon.416, ptr %254, i32 0, i32 6
  store ptr %252, ptr %3168, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %253, ptr noundef nonnull align 8 dereferenceable(56) %254)
          to label %3169 unwind label %3182

3169:                                             ; preds = %3153
  %3170 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %3156, ptr noundef nonnull align 8 dereferenceable(8) %3157, ptr noundef nonnull align 8 dereferenceable(8) %3158, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %253)
          to label %3171 unwind label %3186

3171:                                             ; preds = %3169
  %3172 = zext i1 %3170 to i8
  store i8 %3172, ptr %251, align 1, !tbaa !9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %254) #0
  %3173 = load i8, ptr %251, align 1, !tbaa !9, !range !12, !noundef !13
  %3174 = trunc i8 %3173 to i1
  br i1 %3174, label %3175, label %3191

3175:                                             ; preds = %3171
  %3176 = load i8, ptr %252, align 1, !tbaa !9, !range !12, !noundef !13
  %3177 = trunc i8 %3176 to i1
  store i1 %3177, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %3296

3178:                                             ; preds = %3389, %3386, %3376, %3374, %3372, %3369, %3366, %3357, %3320, %3318, %3315, %3313, %3310, %3308, %3305, %3302, %3142
  %3179 = landingpad { ptr, i32 }
          cleanup
  %3180 = extractvalue { ptr, i32 } %3179, 0
  store ptr %3180, ptr %19, align 8
  %3181 = extractvalue { ptr, i32 } %3179, 1
  store i32 %3181, ptr %20, align 4
  br label %3395

3182:                                             ; preds = %3153
  %3183 = landingpad { ptr, i32 }
          cleanup
  %3184 = extractvalue { ptr, i32 } %3183, 0
  store ptr %3184, ptr %19, align 8
  %3185 = extractvalue { ptr, i32 } %3183, 1
  store i32 %3185, ptr %20, align 4
  br label %3190

3186:                                             ; preds = %3169
  %3187 = landingpad { ptr, i32 }
          cleanup
  %3188 = extractvalue { ptr, i32 } %3187, 0
  store ptr %3188, ptr %19, align 8
  %3189 = extractvalue { ptr, i32 } %3187, 1
  store i32 %3189, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %253) #0
  br label %3190

3190:                                             ; preds = %3186, %3182
  call void @llvm.lifetime.end.p0(i64 56, ptr %254) #0
  br label %3300

3191:                                             ; preds = %3171
  %3192 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack acquire, align 8
  %3193 = icmp eq i8 %3192, 0
  br i1 %3193, label %3194, label %3199, !prof !11

3194:                                             ; preds = %3191
  %3195 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #0
  %3196 = icmp ne i32 %3195, 0
  br i1 %3196, label %3197, label %3199

3197:                                             ; preds = %3194
  call void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #0
  %3198 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EED2Ev, ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #0
  br label %3199

3199:                                             ; preds = %3197, %3194, %3191
  call void @llvm.lifetime.start.p0(i64 8, ptr %255) #0
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack, ptr %255, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %256) #0
  %3200 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #0
  %3201 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.422", ptr %256, i32 0, i32 0
  store ptr %3200, ptr %3201, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %257) #0
  %3202 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #0
  %3203 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.422", ptr %257, i32 0, i32 0
  store ptr %3202, ptr %3203, align 8
  br label %3204

3204:                                             ; preds = %3257, %3199
  %3205 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull align 8 dereferenceable(8) %257) #0
  br i1 %3205, label %3207, label %3206

3206:                                             ; preds = %3204
  store i32 108, ptr %23, align 4
  br label %3259

3207:                                             ; preds = %3204
  call void @llvm.lifetime.start.p0(i64 8, ptr %258) #0
  %3208 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %256) #0
  store ptr %3208, ptr %258, align 8, !tbaa !5
  %3209 = load ptr, ptr %258, align 8, !tbaa !5
  %3210 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %3209) #0
  %3211 = load ptr, ptr %3210, align 8, !tbaa !5
  %3212 = load ptr, ptr %11, align 8, !tbaa !5
  %3213 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3211, ptr noundef nonnull align 8 dereferenceable(8) %3212)
          to label %3214 unwind label %3216

3214:                                             ; preds = %3207
  br i1 %3213, label %3215, label %3220

3215:                                             ; preds = %3214
  store i32 109, ptr %23, align 4
  br label %3254

3216:                                             ; preds = %3244, %3236, %3228, %3207
  %3217 = landingpad { ptr, i32 }
          cleanup
  %3218 = extractvalue { ptr, i32 } %3217, 0
  store ptr %3218, ptr %19, align 8
  %3219 = extractvalue { ptr, i32 } %3217, 1
  store i32 %3219, ptr %20, align 4
  br label %3256

3220:                                             ; preds = %3214
  %3221 = load ptr, ptr %258, align 8, !tbaa !5
  %3222 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %3221) #0
  %3223 = load ptr, ptr %3222, align 8, !tbaa !5
  %3224 = icmp ne ptr %3223, null
  br i1 %3224, label %3225, label %3236

3225:                                             ; preds = %3220
  %3226 = load ptr, ptr %12, align 8, !tbaa !5
  %3227 = icmp ne ptr %3226, null
  br i1 %3227, label %3228, label %3236

3228:                                             ; preds = %3225
  %3229 = load ptr, ptr %258, align 8, !tbaa !5
  %3230 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %3229) #0
  %3231 = load ptr, ptr %3230, align 8, !tbaa !5
  %3232 = load ptr, ptr %12, align 8, !tbaa !5
  %3233 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %3231, ptr noundef nonnull align 8 dereferenceable(24) %3232)
          to label %3234 unwind label %3216

3234:                                             ; preds = %3228
  br i1 %3233, label %3235, label %3236

3235:                                             ; preds = %3234
  store i32 109, ptr %23, align 4
  br label %3254

3236:                                             ; preds = %3234, %3225, %3220
  %3237 = load ptr, ptr %258, align 8, !tbaa !5
  %3238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm2EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %3237) #0
  %3239 = load ptr, ptr %3238, align 8, !tbaa !5
  %3240 = load ptr, ptr %13, align 8, !tbaa !5
  %3241 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %3239, ptr noundef nonnull align 8 dereferenceable(8) %3240)
          to label %3242 unwind label %3216

3242:                                             ; preds = %3236
  br i1 %3241, label %3243, label %3244

3243:                                             ; preds = %3242
  store i32 109, ptr %23, align 4
  br label %3254

3244:                                             ; preds = %3242
  %3245 = load ptr, ptr %13, align 8, !tbaa !5
  %3246 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %259, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %3245, ptr noundef %3246, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %3247 unwind label %3216

3247:                                             ; preds = %3244
  %3248 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %259, i1 noundef zeroext false)
          to label %3249 unwind label %3250

3249:                                             ; preds = %3247
  store i1 %3248, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %259) #0
  store i32 1, ptr %23, align 4
  br label %3254

3250:                                             ; preds = %3247
  %3251 = landingpad { ptr, i32 }
          cleanup
  %3252 = extractvalue { ptr, i32 } %3251, 0
  store ptr %3252, ptr %19, align 8
  %3253 = extractvalue { ptr, i32 } %3251, 1
  store i32 %3253, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %259) #0
  br label %3256

3254:                                             ; preds = %3249, %3243, %3235, %3215
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #0
  %3255 = load i32, ptr %23, align 4
  switch i32 %3255, label %3259 [
    i32 109, label %3257
  ]

3256:                                             ; preds = %3250, %3216
  call void @llvm.lifetime.end.p0(i64 8, ptr %258) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #0
  br label %3300

3257:                                             ; preds = %3254
  %3258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %256) #0
  br label %3204

3259:                                             ; preds = %3254, %3206
  call void @llvm.lifetime.end.p0(i64 8, ptr %257) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %256) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %255) #0
  %3260 = load i32, ptr %23, align 4
  switch i32 %3260, label %3296 [
    i32 108, label %3261
  ]

3261:                                             ; preds = %3259
  call void @llvm.lifetime.start.p0(i64 24, ptr %260) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %261) #0
  %3262 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %3262, ptr %261, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %262) #0
  %3263 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %3263, ptr %262, align 8, !tbaa !5
  invoke void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind writable sret(%"class.std::tuple.423") align 8 %260, ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %262)
          to label %3264 unwind label %3282

3264:                                             ; preds = %3261
  invoke void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE9push_backEOSB_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack, ptr noundef nonnull align 8 dereferenceable(24) %260)
          to label %3265 unwind label %3282

3265:                                             ; preds = %3264
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %260) #0
  call void @llvm.lifetime.start.p0(i64 1, ptr %263) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %264) #0
  %3266 = load ptr, ptr %10, align 8, !tbaa !5
  %3267 = load ptr, ptr %11, align 8, !tbaa !5
  %3268 = load ptr, ptr %12, align 8, !tbaa !5
  %3269 = load ptr, ptr %13, align 8, !tbaa !5
  %3270 = invoke noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %3266, ptr noundef nonnull align 8 dereferenceable(8) %3267, ptr noundef %3268, ptr noundef nonnull align 8 dereferenceable(8) %3269)
          to label %3271 unwind label %3286

3271:                                             ; preds = %3265
  store i32 %3270, ptr %264, align 4, !tbaa !189
  %3272 = load i32, ptr %264, align 4, !tbaa !189
  %3273 = icmp ne i32 %3272, 2
  br i1 %3273, label %3274, label %3294

3274:                                             ; preds = %3271
  %3275 = load ptr, ptr %13, align 8, !tbaa !5
  %3276 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %265, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef %3275, ptr noundef %3276, ptr noundef @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %3277 unwind label %3286

3277:                                             ; preds = %3274
  %3278 = load i32, ptr %264, align 4, !tbaa !189
  %3279 = icmp eq i32 %3278, 1
  %3280 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %265, i1 noundef zeroext %3279)
          to label %3281 unwind label %3290

3281:                                             ; preds = %3277
  store i1 %3280, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %265) #0
  store i32 1, ptr %23, align 4
  br label %3295

3282:                                             ; preds = %3264, %3261
  %3283 = landingpad { ptr, i32 }
          cleanup
  %3284 = extractvalue { ptr, i32 } %3283, 0
  store ptr %3284, ptr %19, align 8
  %3285 = extractvalue { ptr, i32 } %3283, 1
  store i32 %3285, ptr %20, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %262) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %261) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %260) #0
  br label %3300

3286:                                             ; preds = %3274, %3265
  %3287 = landingpad { ptr, i32 }
          cleanup
  %3288 = extractvalue { ptr, i32 } %3287, 0
  store ptr %3288, ptr %19, align 8
  %3289 = extractvalue { ptr, i32 } %3287, 1
  store i32 %3289, ptr %20, align 4
  br label %3299

3290:                                             ; preds = %3277
  %3291 = landingpad { ptr, i32 }
          cleanup
  %3292 = extractvalue { ptr, i32 } %3291, 0
  store ptr %3292, ptr %19, align 8
  %3293 = extractvalue { ptr, i32 } %3291, 1
  store i32 %3293, ptr %20, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %265) #0
  br label %3299

3294:                                             ; preds = %3271
  store i32 0, ptr %23, align 4
  br label %3295

3295:                                             ; preds = %3294, %3281
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #0
  call void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #0
  br label %3296

3296:                                             ; preds = %3295, %3259, %3175
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #0
  %3297 = load i32, ptr %23, align 4
  switch i32 %3297, label %3394 [
    i32 0, label %3298
  ]

3298:                                             ; preds = %3296
  br label %3357

3299:                                             ; preds = %3290, %3286
  call void @llvm.lifetime.end.p0(i64 4, ptr %264) #0
  call void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %263) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %263) #0
  br label %3300

3300:                                             ; preds = %3299, %3282, %3256, %3190
  call void @llvm.lifetime.end.p0(i64 1, ptr %252) #0
  br label %3395

3301:                                             ; preds = %3149
  br label %3302

3302:                                             ; preds = %3301
  %3303 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3304 unwind label %3178

3304:                                             ; preds = %3302
  br i1 %3303, label %3305, label %3323

3305:                                             ; preds = %3304
  %3306 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %3307 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3306, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %3308 unwind label %3178

3308:                                             ; preds = %3305
  %3309 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3307, ptr noundef @.str.19)
          to label %3310 unwind label %3178

3310:                                             ; preds = %3308
  %3311 = load ptr, ptr %11, align 8, !tbaa !5
  %3312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %3309, ptr noundef nonnull align 8 dereferenceable(8) %3311)
          to label %3313 unwind label %3178

3313:                                             ; preds = %3310
  %3314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3312, ptr noundef @.str.20)
          to label %3315 unwind label %3178

3315:                                             ; preds = %3313
  %3316 = load ptr, ptr %13, align 8, !tbaa !5
  %3317 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %3314, ptr noundef nonnull align 8 dereferenceable(8) %3316)
          to label %3318 unwind label %3178

3318:                                             ; preds = %3315
  %3319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3317, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3320 unwind label %3178

3320:                                             ; preds = %3318
  %3321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3319, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3322 unwind label %3178

3322:                                             ; preds = %3320
  br label %3323

3323:                                             ; preds = %3322, %3304
  br label %3324

3324:                                             ; preds = %3323
  br label %3325

3325:                                             ; preds = %3324
  %3326 = getelementptr inbounds i8, ptr %270, i64 8
  %3327 = getelementptr inbounds %struct.TraitResolveCommon, ptr %3326, i32 0, i32 0
  %3328 = load ptr, ptr %3327, align 8, !tbaa !48
  %3329 = load ptr, ptr %11, align 8, !tbaa !5
  %3330 = load ptr, ptr %13, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %267) #0
  %3331 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 0
  store ptr %270, ptr %3331, align 8, !tbaa !191
  %3332 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 1
  %3333 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %3333, ptr %3332, align 8, !tbaa !5
  %3334 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 2
  %3335 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %3335, ptr %3334, align 8, !tbaa !5
  %3336 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 3
  store ptr %12, ptr %3336, align 8, !tbaa !5
  %3337 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 4
  %3338 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %3338, ptr %3337, align 8, !tbaa !5
  %3339 = getelementptr inbounds %class.anon.433, ptr %267, i32 0, i32 5
  store ptr %5, ptr %3339, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %266, ptr noundef nonnull align 8 dereferenceable(48) %267)
          to label %3340 unwind label %3347

3340:                                             ; preds = %3325
  %3341 = invoke noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %3328, ptr noundef nonnull align 8 dereferenceable(8) %3329, ptr noundef nonnull align 8 dereferenceable(8) %3330, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %266)
          to label %3342 unwind label %3351

3342:                                             ; preds = %3340
  %3343 = zext i1 %3341 to i8
  store i8 %3343, ptr %251, align 1, !tbaa !9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %267) #0
  %3344 = load i8, ptr %251, align 1, !tbaa !9, !range !12, !noundef !13
  %3345 = trunc i8 %3344 to i1
  br i1 %3345, label %3346, label %3356

3346:                                             ; preds = %3342
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %3394

3347:                                             ; preds = %3325
  %3348 = landingpad { ptr, i32 }
          cleanup
  %3349 = extractvalue { ptr, i32 } %3348, 0
  store ptr %3349, ptr %19, align 8
  %3350 = extractvalue { ptr, i32 } %3348, 1
  store i32 %3350, ptr %20, align 4
  br label %3355

3351:                                             ; preds = %3340
  %3352 = landingpad { ptr, i32 }
          cleanup
  %3353 = extractvalue { ptr, i32 } %3352, 0
  store ptr %3353, ptr %19, align 8
  %3354 = extractvalue { ptr, i32 } %3352, 1
  store i32 %3354, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %266) #0
  br label %3355

3355:                                             ; preds = %3351, %3347
  call void @llvm.lifetime.end.p0(i64 48, ptr %267) #0
  br label %3395

3356:                                             ; preds = %3342
  br label %3357

3357:                                             ; preds = %3356, %3298
  %3358 = load ptr, ptr %10, align 8, !tbaa !5
  %3359 = load ptr, ptr %11, align 8, !tbaa !5
  %3360 = load ptr, ptr %12, align 8, !tbaa !5
  %3361 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefbEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(32) %268, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %3362 unwind label %3178

3362:                                             ; preds = %3357
  %3363 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %270, ptr noundef nonnull align 8 dereferenceable(8) %3358, ptr noundef nonnull align 8 dereferenceable(8) %3359, ptr noundef %3360, ptr noundef nonnull align 8 dereferenceable(8) %3361, ptr noundef %268)
          to label %3364 unwind label %3379

3364:                                             ; preds = %3362
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #0
  br i1 %3363, label %3365, label %3386

3365:                                             ; preds = %3364
  br label %3366

3366:                                             ; preds = %3365
  %3367 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %3368 unwind label %3178

3368:                                             ; preds = %3366
  br i1 %3367, label %3369, label %3383

3369:                                             ; preds = %3368
  %3370 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %3371 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %3370, ptr noundef @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %3372 unwind label %3178

3372:                                             ; preds = %3369
  %3373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %3371, ptr noundef @.str.21)
          to label %3374 unwind label %3178

3374:                                             ; preds = %3372
  %3375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %3373, ptr noundef @_ZSt3decRSt8ios_base)
          to label %3376 unwind label %3178

3376:                                             ; preds = %3374
  %3377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %3375, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %3378 unwind label %3178

3378:                                             ; preds = %3376
  br label %3383

3379:                                             ; preds = %3362
  %3380 = landingpad { ptr, i32 }
          cleanup
  %3381 = extractvalue { ptr, i32 } %3380, 0
  store ptr %3381, ptr %19, align 8
  %3382 = extractvalue { ptr, i32 } %3380, 1
  store i32 %3382, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %268) #0
  br label %3395

3383:                                             ; preds = %3378, %3368
  br label %3384

3384:                                             ; preds = %3383
  br label %3385

3385:                                             ; preds = %3384
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %3394

3386:                                             ; preds = %3364
  %3387 = load ptr, ptr %13, align 8, !tbaa !5
  %3388 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3387)
          to label %3389 unwind label %3178

3389:                                             ; preds = %3386
  %3390 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %3388)
          to label %3391 unwind label %3178

3391:                                             ; preds = %3389
  br i1 %3390, label %3392, label %3393

3392:                                             ; preds = %3391
  br label %3393

3393:                                             ; preds = %3392, %3391
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %3394

3394:                                             ; preds = %3393, %3385, %3346, %3296
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #0
  br label %3396

3395:                                             ; preds = %3379, %3355, %3300, %3178
  call void @llvm.lifetime.end.p0(i64 1, ptr %251) #0
  br label %3398

3396:                                             ; preds = %3394, %3140, %1235, %1208, %1167, %1155, %1022, %920, %872, %862, %699, %634, %525, %486, %424, %402, %322
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #0
  %3397 = load i1, ptr %8, align 1
  ret i1 %3397

3398:                                             ; preds = %3395, %3137, %1262, %1261, %1236, %1168, %1158, %1023, %996, %873, %863, %830, %807, %784, %772, %700, %693, %637, %526, %489, %455, %454, %425, %403, %335, %331, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #0
  br label %3399

3399:                                             ; preds = %3398, %323
  call void @llvm.lifetime.end.p0(i64 40, ptr %16) #0
  br label %3400

3400:                                             ; preds = %3399
  %3401 = load ptr, ptr %19, align 8
  %3402 = load i32, ptr %20, align 4
  %3403 = insertvalue { ptr, i32 } poison, ptr %3401, 0
  %3404 = insertvalue { ptr, i32 } %3403, i32 %3402, 1
  resume { ptr, i32 } %3404

3405:                                             ; preds = %3046, %2655, %2579, %1133, %445
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() #3

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

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

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

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

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

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

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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 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)) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

declare void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, i32 noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.97") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48)) #6 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) #8 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.97") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) #1

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

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

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

declare void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #3

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) unnamed_addr #3

declare void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_3vEEOT_"(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 ptr @_ZNK3HIR8TypeData11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(184)) #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)) #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H11get_root_tyESC_(ptr noundef nonnull align 8 dereferenceable(8)) #1 align 2

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

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

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

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

declare noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(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 @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

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

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

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

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

declare void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(96)) #3

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef) #3

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.264") align 8, ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(40)) #1

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #3

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) #1 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 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)) #6 align 2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #3

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(144)) #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind noalias writable sret(%"class.std::tuple.423") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(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)) #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 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)) #3

declare noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(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) #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!"branch_weights", i32 1, i32 1048575}
!12 = !{i8 0, i8 2}
!13 = !{}
!14 = !{!15, !15, i64 0}
!15 = !{!"_ZTS13TargetVersion", !7, i64 0}
!16 = !{!17, !35, i64 100}
!17 = !{!"_ZTSN3HIR4EnumE", !18, i64 0, !10, i64 96, !35, i64 100, !36, i64 104, !38, i64 144}
!18 = !{!"_ZTSN3HIR13GenericParamsE", !19, i64 0, !23, i64 24, !27, i64 48, !31, i64 72}
!19 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSN3HIR4Enum4ReprE", !7, i64 0}
!36 = !{!"_ZTSN3HIR4Enum5ClassE", !37, i64 0, !7, i64 8}
!37 = !{!"_ZTSN3HIR4Enum5Class3TagE", !7, i64 0}
!38 = !{!"_ZTSN3HIR13TraitMarkingsE", !10, i64 0, !10, i64 1, !10, i64 2, !39, i64 8}
!39 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !42, i64 0, !44, i64 8}
!42 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !43, i64 0}
!43 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!44 = !{!"_ZTSSt15_Rb_tree_header", !45, i64 0, !47, i64 32}
!45 = !{!"_ZTSSt18_Rb_tree_node_base", !46, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!46 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!47 = !{!"long", !7, i64 0}
!48 = !{!49, !6, i64 0}
!49 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !50, i64 24, !55, i64 72, !61, i64 104, !61, i64 112, !61, i64 120, !61, i64 128, !61, i64 136, !61, i64 144, !61, i64 152, !61, i64 160, !61, i64 168, !61, i64 176, !61, i64 184, !61, i64 192, !61, i64 200, !61, i64 208}
!50 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !51, i64 0}
!51 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !52, i64 0}
!52 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !53, i64 0, !44, i64 8}
!53 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !54, i64 0}
!54 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!55 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !56, i64 0, !60, i64 24}
!56 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!60 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!61 = !{!"_ZTSN3HIR10SimplePathE", !62, i64 0}
!62 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!63 = !{!64, !64, i64 0}
!64 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!65 = !{!66, !72, i64 208}
!66 = !{!"_ZTSN3HIR6StructE", !18, i64 0, !67, i64 96, !68, i64 104, !70, i64 136, !70, i64 140, !38, i64 144, !71, i64 200, !75, i64 248}
!67 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!68 = !{!"_ZTSN3HIR6Struct4DataE", !69, i64 0, !7, i64 8}
!69 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!70 = !{!"int", !7, i64 0}
!71 = !{!"_ZTSN3HIR14StructMarkingsE", !10, i64 0, !70, i64 4, !72, i64 8, !70, i64 12, !73, i64 16, !70, i64 20, !70, i64 24, !10, i64 28, !10, i64 29, !74, i64 32}
!72 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!73 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!74 = !{!"_ZTS4U128", !47, i64 0, !47, i64 8}
!75 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!76 = !{!66, !70, i64 204}
!77 = !{!78, !70, i64 8}
!78 = !{!"_ZTSN3HIR10GenericRefE", !79, i64 0, !70, i64 8}
!79 = !{!"_ZTS8RcString", !6, i64 0}
!80 = distinct !{!80, !81}
!81 = !{!"llvm.loop.mustprogress"}
!82 = distinct !{!82, !81}
!83 = !{!70, !70, i64 0}
!84 = distinct !{!84, !81}
!85 = distinct !{!85, !81}
!86 = distinct !{!86, !81}
!87 = distinct !{!87, !81}
!88 = distinct !{!88, !81}
!89 = distinct !{!89, !81}
!90 = distinct !{!90, !81}
!91 = distinct !{!91, !81}
!92 = !{!93, !6, i64 0}
!93 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!94 = distinct !{!94, !81}
!95 = !{!96, !111, i64 76}
!96 = !{!"_ZTSN3HIR16ExprNode_ClosureE", !97, i64 0, !101, i64 32, !99, i64 56, !105, i64 64, !10, i64 72, !111, i64 76, !10, i64 80, !112, i64 88, !121, i64 136, !6, i64 144, !122, i64 152, !122, i64 184, !127, i64 216}
!97 = !{!"_ZTSN3HIR8ExprNodeE", !98, i64 8, !99, i64 16, !100, i64 24}
!98 = !{!"_ZTS4Span", !6, i64 0}
!99 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!100 = !{!"_ZTSN3HIR10ValueUsageE", !7, i64 0}
!101 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !102, i64 0}
!102 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !104, i64 0}
!104 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!105 = !{!"_ZTSSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EE", !106, i64 0}
!106 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR8ExprNodeESt14default_deleteIS1_ELb1ELb1EE", !107, i64 0}
!107 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR8ExprNodeESt14default_deleteIS1_EE", !108, i64 0}
!108 = !{!"_ZTSSt5tupleIJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !109, i64 0}
!109 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !110, i64 0}
!110 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR8ExprNodeELb0EE", !6, i64 0}
!111 = !{!"_ZTSN3HIR16ExprNode_Closure5ClassE", !7, i64 0}
!112 = !{!"_ZTSN3HIR16ExprNode_Closure8AvuCacheE", !113, i64 0, !117, i64 24}
!113 = !{!"_ZTSSt6vectorIjSaIjEE", !114, i64 0}
!114 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !115, i64 0}
!115 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !116, i64 0}
!116 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!117 = !{!"_ZTSSt6vectorIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !118, i64 0}
!118 = !{!"_ZTSSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !119, i64 0}
!119 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE12_Vector_implE", !120, i64 0}
!120 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!121 = !{!"_ZTSN3HIR11LifetimeRefE", !70, i64 0}
!122 = !{!"_ZTSN3HIR11GenericPathE", !61, i64 0, !123, i64 8}
!123 = !{!"_ZTSN3HIR10PathParamsE", !124, i64 0, !125, i64 8, !126, i64 16}
!124 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!125 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!126 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!127 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !128, i64 0}
!128 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !129, i64 0}
!129 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !130, i64 0}
!130 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!131 = distinct !{!131, !81}
!132 = distinct !{!132, !81}
!133 = !{!134, !6, i64 0}
!134 = !{!"_ZTSN3HIR8TypeData14Data_GeneratorE", !6, i64 0}
!135 = distinct !{!135, !81}
!136 = distinct !{!136, !81}
!137 = !{!138, !6, i64 136}
!138 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !139, i64 0, !154, i64 144, !121, i64 168}
!139 = !{!"_ZTSN3HIR9TraitPathE", !140, i64 0, !122, i64 8, !146, i64 40, !151, i64 88, !6, i64 136}
!140 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !141, i64 0}
!141 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !142, i64 0}
!142 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !143, i64 0}
!143 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !144, i64 0}
!144 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !145, i64 0}
!145 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!146 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !147, i64 0}
!147 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !148, i64 0}
!148 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !149, i64 0, !44, i64 8}
!149 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !150, i64 0}
!150 = !{!"_ZTSSt4lessI8RcStringE"}
!151 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !152, i64 0}
!152 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !153, i64 0}
!153 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !149, i64 0, !44, i64 8}
!154 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !155, i64 0}
!155 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !156, i64 0}
!156 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !157, i64 0}
!157 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!158 = distinct !{!158, !81}
!159 = distinct !{!159, !81}
!160 = !{!139, !6, i64 136}
!161 = distinct !{!161, !81}
!162 = distinct !{!162, !81}
!163 = !{!164, !6, i64 16}
!164 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE3$_8", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!165 = distinct !{!165, !81}
!166 = distinct !{!166, !81}
!167 = distinct !{!167, !81}
!168 = distinct !{!168, !81}
!169 = distinct !{!169, !81}
!170 = !{!171, !10, i64 128}
!171 = !{!"_ZTSN3HIR5TraitE", !18, i64 0, !121, i64 96, !172, i64 104, !10, i64 128, !176, i64 136, !181, i64 192, !183, i64 248, !185, i64 304, !70, i64 360, !172, i64 368, !61, i64 392}
!172 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !173, i64 0}
!173 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !174, i64 0}
!174 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !175, i64 0}
!175 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!176 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !177, i64 0}
!177 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !47, i64 8, !178, i64 16, !47, i64 24, !179, i64 32, !6, i64 48}
!178 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!179 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !180, i64 0, !47, i64 8}
!180 = !{!"float", !7, i64 0}
!181 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !182, i64 0}
!182 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !47, i64 8, !178, i64 16, !47, i64 24, !179, i64 32, !6, i64 48}
!183 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !184, i64 0}
!184 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !47, i64 8, !178, i64 16, !47, i64 24, !179, i64 32, !6, i64 48}
!185 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !186, i64 0}
!186 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !47, i64 8, !178, i64 16, !47, i64 24, !179, i64 32, !6, i64 48}
!187 = !{!188, !6, i64 0}
!188 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE3$_9", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!189 = !{!190, !190, i64 0}
!190 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!191 = !{!192, !6, i64 0}
!192 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE4$_10", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


; 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::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 }
%"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.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.RcString = type { ptr }
%"class.std::vector.417" = type { %"struct.std::_Vector_base.418" }
%"struct.std::_Vector_base.418" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%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 = type { ptr, ptr, ptr }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = 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::TypeRef" = type { ptr }
%struct.Span = type { ptr }
%class.anon.80 = type { i8 }
%"struct.std::pair.97" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = 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.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 }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.262 = type { ptr, ptr, ptr }
%class.anon.263 = type { ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.264" = type { ptr, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.75" }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"class.std::function.336" = type { %"class.std::_Function_base", ptr }
%class.anon.394 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%class.anon.396 = type { ptr, ptr, ptr, ptr }
%class.anon.397 = type { ptr }
%class.anon.398 = type { ptr }
%"struct.std::__detail::_Node_const_iterator" = type { %"struct.std::__detail::_Node_iterator_base" }
%"struct.std::__detail::_Node_iterator_base" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%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.anon.406 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"class.std::vector.408" = type { %"struct.std::_Vector_base.409" }
%"struct.std::_Vector_base.409" = type { %"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::Path::Data::Data_UfcsKnown *, std::allocator<const HIR::Path::Data::Data_UfcsKnown *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.413" = type { %"class.std::_Function_base", ptr }
%class.anon.416 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.422" = type { ptr }
%"class.std::tuple.423" = type { %"struct.std::_Tuple_impl.424" }
%"struct.std::_Tuple_impl.424" = type { %"struct.std::_Tuple_impl.425", %"struct.std::_Head_base.429" }
%"struct.std::_Tuple_impl.425" = type { %"struct.std::_Tuple_impl.426", %"struct.std::_Head_base.428" }
%"struct.std::_Tuple_impl.426" = type { %"struct.std::_Head_base.427" }
%"struct.std::_Head_base.427" = type { ptr }
%"struct.std::_Head_base.428" = type { ptr }
%"struct.std::_Head_base.429" = type { ptr }
%struct.Guard = type { i8 }
%"class.std::function.430" = type { %"class.std::_Function_base", ptr }
%class.anon.433 = type { ptr, ptr, ptr, ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb = external hidden unnamed_addr constant [10 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls = external hidden global %"class.HIR::GenericParams", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc = external hidden global i64, align 8
@gTargetVersion = external local_unnamed_addr global i32, align 4
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.1 = external hidden unnamed_addr constant [13 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice = external hidden global %"class.std::map", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice = external hidden global i64, align 8
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata = external hidden global %class.RcString, align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata = external hidden global i64, align 8
@.str.2 = external hidden unnamed_addr constant [9 x i8], align 1
@.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
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb = external hidden unnamed_addr constant [155 x i8], align 1
@.str.6 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.9 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [7 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.11 = external hidden unnamed_addr constant [34 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.14 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.18 = external hidden unnamed_addr constant [33 x i8], align 1
@_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack = external hidden global %"class.std::vector.417", align 8
@_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack = external hidden global i64, align 8
@.str.19 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.21 = external hidden unnamed_addr constant [8 x i8], align 1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5, i1 noundef zeroext %6) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca %class.TraceLog, align 8
  %10 = alloca %"class.std::function.0", align 8
  %11 = alloca %class.anon, align 8
  %12 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %13 = alloca %struct.ImplRef, align 8
  %14 = alloca %struct.ImplRef, align 8
  %15 = alloca %struct.ImplRef, align 8
  %16 = alloca %struct.Span, align 8
  %17 = alloca %"class.std::function.0", align 8
  %18 = alloca %class.anon.80, align 1
  %19 = alloca %struct.ImplRef, align 8
  %20 = alloca %struct.ImplRef, align 8
  %21 = alloca %"class.HIR::TypeRef", align 8
  %22 = alloca %"class.std::map", align 8
  %23 = alloca %"struct.std::pair.97", align 8
  %24 = alloca %class.RcString, align 8
  %25 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %26 = alloca %"struct.HIR::SimplePath", align 8
  %27 = alloca %struct.ImplRef, align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"struct.HIR::PathParams", align 8
  %30 = alloca %"class.std::map", align 8
  %31 = alloca %"struct.std::pair.97", align 8
  %32 = alloca %class.RcString, align 8
  %33 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %34 = alloca %"struct.HIR::SimplePath", align 8
  %35 = alloca %struct.ImplRef, align 8
  %36 = alloca %class.RcString, align 8
  %37 = alloca %"struct.std::pair.97", align 8
  %38 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %39 = alloca %"struct.HIR::SimplePath", align 8
  %40 = alloca %"struct.std::pair.97", align 8
  %41 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %42 = alloca %"struct.HIR::SimplePath", align 8
  %43 = alloca %struct.ImplRef, align 8
  %44 = alloca %struct.ImplRef, align 8
  %45 = alloca %"class.std::map", align 8
  %46 = alloca %"struct.std::pair.97", align 8
  %47 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %48 = alloca %"struct.HIR::SimplePath", align 8
  %49 = alloca %"class.HIR::Path", align 8
  %50 = alloca %"class.HIR::GenericPath", align 8
  %51 = alloca %"struct.HIR::SimplePath", align 8
  %52 = alloca %"struct.HIR::PathParams", align 8
  %53 = alloca %"class.HIR::TypeRef", align 8
  %54 = alloca %"class.HIR::TypePathBinding", align 8
  %55 = alloca %struct.ImplRef, align 8
  %56 = alloca %"class.HIR::TypeRef", align 8
  %57 = alloca %"struct.HIR::PathParams", align 8
  %58 = alloca %"class.std::map", align 8
  %59 = alloca %struct.ImplRef, align 8
  %60 = alloca %struct.ImplRef, align 8
  %61 = alloca %"class.std::function", align 8
  %62 = alloca %class.anon.262, align 8
  %63 = alloca %struct.ImplRef, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %struct.Span, align 8
  %66 = alloca %"class.std::function.0", align 8
  %67 = alloca %class.anon.263, align 8
  %68 = alloca %struct.ImplRef, align 8
  %69 = alloca %struct.ImplRef, align 8
  %70 = alloca %"class.HIR::TypeRef", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %struct.ImplRef, align 8
  %73 = alloca %struct.ImplRef, align 8
  %74 = alloca %"class.HIR::TypeRef", align 8
  %75 = alloca %"struct.HIR::PathParams", align 8
  %76 = alloca %"class.std::map", align 8
  %77 = alloca %"class.std::vector.75", align 8
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca %"struct.HIR::PathParams", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.std::vector.75", align 8
  %82 = alloca %"class.std::map", align 8
  %83 = alloca %"struct.std::pair.264", align 8
  %84 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %85 = alloca %"struct.HIR::SimplePath", align 8
  %86 = alloca %"struct.HIR::PathParams", align 8
  %87 = alloca %struct.ImplRef, align 8
  %88 = alloca %"class.HIR::GenericParams", align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"struct.HIR::PathParams", align 8
  %91 = alloca %"class.std::map", align 8
  %92 = alloca %struct.ImplRef, align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"struct.HIR::PathParams", align 8
  %95 = alloca %"class.std::map", align 8
  %96 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %97 = alloca %"class.std::vector.75", align 8
  %98 = alloca %"class.HIR::TypeRef", align 8
  %99 = alloca %"struct.HIR::PathParams", align 8
  %100 = alloca %"class.HIR::TypeRef", align 8
  %101 = alloca %"class.std::vector.75", align 8
  %102 = alloca %"class.std::map", align 8
  %103 = alloca %"struct.std::pair.264", align 8
  %104 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %105 = alloca %"struct.HIR::SimplePath", align 8
  %106 = alloca %"struct.HIR::PathParams", align 8
  %107 = alloca %struct.ImplRef, align 8
  %108 = alloca %"class.HIR::GenericParams", align 8
  %109 = alloca %"class.HIR::TypeRef", align 8
  %110 = alloca %"struct.HIR::PathParams", align 8
  %111 = alloca %"class.std::map", align 8
  %112 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %113 = alloca %"class.std::map", align 8
  %114 = alloca %"struct.std::pair.264", align 8
  %115 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %116 = alloca %"struct.HIR::SimplePath", align 8
  %117 = alloca %"struct.HIR::PathParams", align 8
  %118 = alloca %struct.ImplRef, align 8
  %119 = alloca %"class.HIR::TypeRef", align 8
  %120 = alloca %"struct.HIR::PathParams", align 8
  %121 = alloca %"class.std::map", align 8
  %122 = alloca %"class.std::map", align 8
  %123 = alloca %"struct.std::pair.264", align 8
  %124 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %125 = alloca %"struct.HIR::SimplePath", align 8
  %126 = alloca %"struct.std::pair.264", align 8
  %127 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %128 = alloca %"struct.HIR::SimplePath", align 8
  %129 = alloca %"struct.HIR::PathParams", align 8
  %130 = alloca %"class.HIR::TypeRef", align 8
  %131 = alloca %struct.ImplRef, align 8
  %132 = alloca %"class.HIR::TypeRef", align 8
  %133 = alloca %"struct.HIR::PathParams", align 8
  %134 = alloca %"class.std::map", align 8
  %135 = alloca %struct.ImplRef, align 8
  %136 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %137 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %138 = alloca %struct.ImplRef, align 8
  %139 = alloca i8, align 1
  %140 = alloca %"class.std::function.336", align 8
  %141 = alloca %class.anon.394, align 8
  %142 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %143 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %144 = alloca %struct.ImplRef, align 8
  %145 = alloca i8, align 1
  %146 = alloca %"class.std::function.336", align 8
  %147 = alloca %class.anon.396, align 8
  %148 = alloca %struct.Span, align 8
  %149 = alloca %"class.std::function.0", align 8
  %150 = alloca %class.anon.397, align 8
  %151 = alloca %struct.Span, align 8
  %152 = alloca %"class.std::function.0", align 8
  %153 = alloca %class.anon.398, align 8
  %154 = alloca %"struct.std::__detail::_Node_const_iterator", align 8
  %155 = alloca %struct.MonomorphStatePtr, align 8
  %156 = alloca %class.anon.406, align 8
  %157 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %158 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %159 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %160 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %161 = alloca %"class.HIR::TypeRef", align 8
  %162 = alloca %"class.std::vector.408", align 8
  %163 = alloca ptr, align 8
  %164 = alloca ptr, align 8
  %165 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %166 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %167 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %168 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %169 = alloca i8, align 1
  %170 = alloca %"class.std::function.413", align 8
  %171 = alloca %class.anon.416, align 8
  %172 = alloca %"class.__gnu_cxx::__normal_iterator.422", align 8
  %173 = alloca %"class.__gnu_cxx::__normal_iterator.422", align 8
  %174 = alloca %struct.ImplRef, align 8
  %175 = alloca %"class.std::tuple.423", align 8
  %176 = alloca ptr, align 8
  %177 = alloca ptr, align 8
  %178 = alloca %struct.Guard, align 1
  %179 = alloca %struct.ImplRef, align 8
  %180 = alloca %"class.std::function.430", align 8
  %181 = alloca %class.anon.433, align 8
  %182 = alloca %"class.std::function", align 8
  store ptr %3, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %9) #10
  %183 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %184 = select i1 %183, ptr @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #10
  store ptr %2, ptr %11, align 8, !tbaa !5
  %185 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %8, ptr %185, align 8, !tbaa !5
  %186 = getelementptr inbounds i8, ptr %11, i64 16
  store ptr %4, ptr %186, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(24) %11)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %9, ptr noundef %184, ptr noundef nonnull %10)
          to label %187 unwind label %222

187:                                              ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #10
  store i64 0, ptr %12, align 8
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #10
  %188 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls acquire, align 8
  %189 = icmp eq i8 %188, 0
  br i1 %189, label %190, label %194, !prof !9

190:                                              ; preds = %187
  %191 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #10
  %.not = icmp eq i32 %191, 0
  br i1 %.not, label %194, label %192

192:                                              ; preds = %190
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #10
  %193 = call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR13GenericParamsD2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls) #10
  br label %194

194:                                              ; preds = %192, %190, %187
  %195 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params acquire, align 8
  %196 = icmp eq i8 %195, 0
  br i1 %196, label %197, label %202, !prof !9

197:                                              ; preds = %194
  %198 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #10
  %.not768 = icmp eq i32 %198, 0
  br i1 %.not768, label %202, label %199

199:                                              ; preds = %197
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params)
          to label %200 unwind label %224

200:                                              ; preds = %199
  %201 = call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR10PathParamsD2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #10
  br label %202

202:                                              ; preds = %200, %197, %194
  %203 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc acquire, align 8
  %204 = icmp eq i8 %203, 0
  br i1 %204, label %205, label %209, !prof !9

205:                                              ; preds = %202
  %206 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #10
  %.not769 = icmp eq i32 %206, 0
  br i1 %.not769, label %209, label %207

207:                                              ; preds = %205
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #10
  %208 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc) #10
  br label %209

209:                                              ; preds = %207, %205, %202
  br i1 %6, label %.thread989, label %210

210:                                              ; preds = %209
  %211 = getelementptr inbounds i8, ptr %0, i64 8
  %212 = getelementptr inbounds i8, ptr %0, i64 112
  %213 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %212)
          to label %214 unwind label %226

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

215:                                              ; preds = %214
  %216 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %217 unwind label %226

217:                                              ; preds = %215
  br i1 %216, label %218, label %.thread989

218:                                              ; preds = %217
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %13, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %219 unwind label %226

219:                                              ; preds = %218
  %220 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %13, i1 noundef zeroext false)
          to label %221 unwind label %228

221:                                              ; preds = %219
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  br label %.thread997

222:                                              ; preds = %7
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #10
  br label %1697

224:                                              ; preds = %199
  %225 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params) #10
  br label %1696

226:                                              ; preds = %720, %688, %610, %527, %521, %517, %434, %425, %332, %317, %292, %282, %276, %273, %269, %263, %260, %255, %233, %218, %215, %210
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %1696

228:                                              ; preds = %219
  %229 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  br label %1696

230:                                              ; preds = %214
  %231 = load i32, ptr @gTargetVersion, align 4, !tbaa !10
  %232 = icmp sgt i32 %231, 0
  br i1 %232, label %233, label %269

233:                                              ; preds = %230
  %234 = getelementptr inbounds i8, ptr %0, i64 120
  %235 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %236 unwind label %226

236:                                              ; preds = %233
  br i1 %235, label %237, label %269

237:                                              ; preds = %236
  %238 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %239 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %238)
  br i1 %239, label %260, label %240

240:                                              ; preds = %237
  %241 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %242 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %241)
  br i1 %242, label %260, label %243

243:                                              ; preds = %240
  %244 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %245 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %244)
  br i1 %245, label %260, label %246

246:                                              ; preds = %243
  %247 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %248 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %247)
  br i1 %248, label %260, label %249

249:                                              ; preds = %246
  %250 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %251 = call noundef zeroext i1 @_ZNK3HIR8TypeData16is_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %250)
  br i1 %251, label %260, label %252

252:                                              ; preds = %249
  %253 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %254 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %253)
  br i1 %254, label %255, label %.thread989

255:                                              ; preds = %252
  %256 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %257 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %256)
  %258 = invoke noundef zeroext i1 @_ZNK3HIR13TypeData_Path10is_closureEv(ptr noundef nonnull align 8 dereferenceable(112) %257)
          to label %259 unwind label %226

259:                                              ; preds = %255
  br i1 %258, label %260, label %.thread989

260:                                              ; preds = %259, %249, %246, %243, %240, %237
  %261 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_cloneERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %262 unwind label %226

262:                                              ; preds = %260
  br i1 %261, label %263, label %.thread989

263:                                              ; preds = %262
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %14, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %264 unwind label %226

264:                                              ; preds = %263
  %265 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %14, i1 noundef zeroext false)
          to label %266 unwind label %267

266:                                              ; preds = %264
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %14) #10
  br label %.thread997

267:                                              ; preds = %264
  %268 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %14) #10
  br label %1696

269:                                              ; preds = %236, %230
  %270 = getelementptr inbounds i8, ptr %0, i64 136
  %271 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %270)
          to label %272 unwind label %226

272:                                              ; preds = %269
  br i1 %271, label %273, label %282

273:                                              ; preds = %272
  %274 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %275 unwind label %226

275:                                              ; preds = %273
  br i1 %274, label %276, label %.thread989

276:                                              ; preds = %275
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %15, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %277 unwind label %226

277:                                              ; preds = %276
  %278 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %15, i1 noundef zeroext false)
          to label %279 unwind label %280

279:                                              ; preds = %277
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #10
  br label %.thread997

280:                                              ; preds = %277
  %281 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #10
  br label %1696

282:                                              ; preds = %272
  %283 = getelementptr inbounds i8, ptr %0, i64 144
  %284 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %283)
          to label %285 unwind label %226

285:                                              ; preds = %282
  br i1 %284, label %286, label %314

286:                                              ; preds = %285
  %287 = load ptr, ptr %8, align 8, !tbaa !5
  %.not820 = icmp eq ptr %287, null
  br i1 %.not820, label %288, label %300

288:                                              ; preds = %286
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %289 unwind label %293

289:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %18) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull %17)
          to label %290 unwind label %295

290:                                              ; preds = %289
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  %291 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %291, ptr noundef nonnull @.str)
          to label %292 unwind label %298

292:                                              ; preds = %290
  invoke void @__cxa_throw(ptr nonnull %291, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1698 unwind label %226

293:                                              ; preds = %288
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %289
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %18) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #10
  br label %297

297:                                              ; preds = %295, %293
  %.pn821 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #10
  br label %1696

298:                                              ; preds = %290
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %291) #10
  br label %1696

300:                                              ; preds = %286
  %301 = getelementptr inbounds i8, ptr %287, i64 8
  %302 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %301, i64 noundef 0)
          to label %303 unwind label %310

303:                                              ; preds = %300
  %304 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %302, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %305 unwind label %310

305:                                              ; preds = %303
  br i1 %304, label %306, label %.thread989

306:                                              ; preds = %305
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %19, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %307, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %308 unwind label %310

308:                                              ; preds = %306
  %309 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %19, i1 noundef zeroext false)
          to label %.thread unwind label %312

.thread:                                          ; preds = %308
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #10
  br label %.thread997

310:                                              ; preds = %306, %303, %300
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %1696

312:                                              ; preds = %308
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %19) #10
  br label %1696

314:                                              ; preds = %285
  %315 = load i32, ptr @gTargetVersion, align 4, !tbaa !10
  %316 = icmp sgt i32 %315, 2
  br i1 %316, label %317, label %.thread989

317:                                              ; preds = %314
  %318 = getelementptr inbounds i8, ptr %0, i64 200
  %319 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %320 unwind label %226

320:                                              ; preds = %317
  br i1 %319, label %321, label %432

321:                                              ; preds = %320
  %322 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %323 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %322)
  br i1 %323, label %332, label %324

324:                                              ; preds = %321
  %325 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %326 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %325)
  br i1 %326, label %327, label %339

327:                                              ; preds = %324
  %328 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %329 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %328)
  %330 = getelementptr inbounds i8, ptr %329, i64 88
  %331 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %330)
  br i1 %331, label %332, label %339

332:                                              ; preds = %327, %321
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %20, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %333, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %334 unwind label %226

334:                                              ; preds = %332
  %335 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %20, i1 noundef zeroext false)
          to label %336 unwind label %337

336:                                              ; preds = %334
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #10
  br label %.thread997

337:                                              ; preds = %334
  %338 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #10
  br label %1696

339:                                              ; preds = %327, %324
  %340 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %341 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %340)
  br i1 %341, label %342, label %.thread987

342:                                              ; preds = %339
  %343 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %344 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %343)
  %345 = getelementptr inbounds i8, ptr %344, i64 88
  %346 = call noundef ptr @_ZNK3HIR15TypePathBinding8opt_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %345)
  %.not803 = icmp eq ptr %346, null
  br i1 %.not803, label %.thread987, label %347

347:                                              ; preds = %342
  %348 = load ptr, ptr %346, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #10
  %349 = getelementptr inbounds i8, ptr %348, i64 100
  %350 = load i32, ptr %349, align 4, !tbaa !12
  invoke void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %21, i32 noundef %350)
          to label %351 unwind label %363

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %22) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %23) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #10
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %24, ptr noundef nonnull @.str.1)
          to label %352 unwind label %365

352:                                              ; preds = %351
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %25) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %353 unwind label %367

353:                                              ; preds = %352
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull %26)
          to label %354 unwind label %369

354:                                              ; preds = %353
  %355 = getelementptr inbounds i8, ptr %25, i64 32
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %355, ptr noundef nonnull align 8 dereferenceable(8) %21)
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.97") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(40) %25)
          to label %356 unwind label %371

356:                                              ; preds = %354
  %357 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %22, ptr noundef nonnull align 8 dereferenceable(48) %23)
          to label %358 unwind label %373

358:                                              ; preds = %356
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %25) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %359 unwind label %379

359:                                              ; preds = %358
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %360 unwind label %381

360:                                              ; preds = %359
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) %22) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30)
          to label %361 unwind label %383

361:                                              ; preds = %360
  %362 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %27, i1 noundef zeroext false)
          to label %391 unwind label %385

363:                                              ; preds = %347
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %390

365:                                              ; preds = %351
  %366 = landingpad { ptr, i32 }
          cleanup
  br label %378

367:                                              ; preds = %352
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %377

369:                                              ; preds = %353
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %376

371:                                              ; preds = %354
  %372 = landingpad { ptr, i32 }
          cleanup
  br label %375

373:                                              ; preds = %356
  %374 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %23) #10
  br label %375

375:                                              ; preds = %373, %371
  %.pn804 = phi { ptr, i32 } [ %374, %373 ], [ %372, %371 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %25) #10
  br label %376

376:                                              ; preds = %375, %369
  %.pn804.pn = phi { ptr, i32 } [ %.pn804, %375 ], [ %370, %369 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #10
  br label %377

377:                                              ; preds = %376, %367
  %.pn804.pn.pn = phi { ptr, i32 } [ %.pn804.pn, %376 ], [ %368, %367 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %25) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br label %378

378:                                              ; preds = %377, %365
  %.pn804.pn.pn.pn = phi { ptr, i32 } [ %.pn804.pn.pn, %377 ], [ %366, %365 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %23) #10
  br label %389

379:                                              ; preds = %358
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %389

381:                                              ; preds = %359
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %388

383:                                              ; preds = %360
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %387

385:                                              ; preds = %361
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #10
  br label %387

387:                                              ; preds = %385, %383
  %.pn809 = phi { ptr, i32 } [ %386, %385 ], [ %384, %383 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  br label %388

388:                                              ; preds = %387, %381
  %.pn809.pn = phi { ptr, i32 } [ %.pn809, %387 ], [ %382, %381 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br label %389

389:                                              ; preds = %388, %379, %378
  %.pn809.pn.pn = phi { ptr, i32 } [ %.pn809.pn, %388 ], [ %380, %379 ], [ %.pn804.pn.pn.pn, %378 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  br label %390

390:                                              ; preds = %389, %363
  %.pn809.pn.pn.pn = phi { ptr, i32 } [ %.pn809.pn.pn, %389 ], [ %364, %363 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %1696

391:                                              ; preds = %361
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %22) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %22) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #10
  br label %.thread997

.thread987:                                       ; preds = %342, %339
  %392 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit acquire, align 8
  %393 = icmp eq i8 %392, 0
  br i1 %393, label %394, label %398, !prof !9

394:                                              ; preds = %.thread987
  %395 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #10
  %.not814 = icmp eq i32 %395, 0
  br i1 %.not814, label %398, label %396

396:                                              ; preds = %394
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #10
  %397 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #10
  br label %398

398:                                              ; preds = %396, %394, %.thread987
  %399 = call noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit) #10
  br i1 %399, label %400, label %425

400:                                              ; preds = %398
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #10
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %32, ptr noundef nonnull @.str.1)
          to label %401 unwind label %409

401:                                              ; preds = %400
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %33) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %402 unwind label %411

402:                                              ; preds = %401
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull %34)
          to label %403 unwind label %413

403:                                              ; preds = %402
  %404 = getelementptr inbounds i8, ptr %33, i64 32
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %404)
          to label %405 unwind label %415

405:                                              ; preds = %403
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.97") align 8 %31, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %406 unwind label %417

406:                                              ; preds = %405
  %407 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit, ptr noundef nonnull align 8 dereferenceable(48) %31)
          to label %408 unwind label %419

408:                                              ; preds = %406
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %33) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  br label %425

409:                                              ; preds = %400
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %424

411:                                              ; preds = %401
  %412 = landingpad { ptr, i32 }
          cleanup
  br label %423

413:                                              ; preds = %402
  %414 = landingpad { ptr, i32 }
          cleanup
  br label %422

415:                                              ; preds = %403
  %416 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %422

417:                                              ; preds = %405
  %418 = landingpad { ptr, i32 }
          cleanup
  br label %421

419:                                              ; preds = %406
  %420 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  br label %421

421:                                              ; preds = %419, %417
  %.pn815 = phi { ptr, i32 } [ %420, %419 ], [ %418, %417 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #10
  br label %422

422:                                              ; preds = %421, %415, %413
  %.pn815.pn = phi { ptr, i32 } [ %.pn815, %421 ], [ %416, %415 ], [ %414, %413 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br label %423

423:                                              ; preds = %422, %411
  %.pn815.pn.pn = phi { ptr, i32 } [ %.pn815.pn, %422 ], [ %412, %411 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %33) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br label %424

424:                                              ; preds = %423, %409
  %.pn815.pn.pn.pn = phi { ptr, i32 } [ %.pn815.pn.pn, %423 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  br label %1696

425:                                              ; preds = %408, %398
  %426 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %35, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %426, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit)
          to label %427 unwind label %226

427:                                              ; preds = %425
  %428 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %35, i1 noundef zeroext false)
          to label %429 unwind label %430

429:                                              ; preds = %427
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %35) #10
  br label %.thread997

430:                                              ; preds = %427
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %35) #10
  br label %1696

432:                                              ; preds = %320
  %.pr = load i32, ptr @gTargetVersion, align 4, !tbaa !10
  %433 = icmp sgt i32 %.pr, 2
  br i1 %433, label %434, label %.thread989

434:                                              ; preds = %432
  %435 = getelementptr inbounds i8, ptr %0, i64 208
  %436 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %437 unwind label %226

437:                                              ; preds = %434
  br i1 %436, label %438, label %.thread989

438:                                              ; preds = %437
  %439 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0 acquire, align 8
  %440 = icmp eq i8 %439, 0
  br i1 %440, label %441, label %445, !prof !9

441:                                              ; preds = %438
  %442 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #10
  %.not770 = icmp eq i32 %442, 0
  br i1 %.not770, label %445, label %443

443:                                              ; preds = %441
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #10
  %444 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #10
  br label %445

445:                                              ; preds = %443, %441, %438
  %446 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice acquire, align 8
  %447 = icmp eq i8 %446, 0
  br i1 %447, label %448, label %452, !prof !9

448:                                              ; preds = %445
  %449 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #10
  %.not771 = icmp eq i32 %449, 0
  br i1 %.not771, label %452, label %450

450:                                              ; preds = %448
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #10
  %451 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice) #10
  br label %452

452:                                              ; preds = %450, %448, %445
  %453 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata acquire, align 8
  %454 = icmp eq i8 %453, 0
  br i1 %454, label %455, label %459, !prof !9

455:                                              ; preds = %452
  %456 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata) #10
  %.not772 = icmp eq i32 %456, 0
  br i1 %.not772, label %459, label %457

457:                                              ; preds = %455
  call void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata)
  %458 = call i32 @__cxa_atexit(ptr nonnull @_ZN8RcStringD1Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata) #10
  br label %459

459:                                              ; preds = %457, %455, %452
  %460 = call noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0) #10
  br i1 %460, label %461, label %506

461:                                              ; preds = %459
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #10
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %36, ptr noundef nonnull @.str.2)
          to label %462 unwind label %478

462:                                              ; preds = %461
  %463 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(8) %36)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %37) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %38) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %464 unwind label %480

464:                                              ; preds = %462
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull %39)
          to label %465 unwind label %482

465:                                              ; preds = %464
  %466 = getelementptr inbounds i8, ptr %38, i64 32
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %466)
          to label %467 unwind label %484

467:                                              ; preds = %465
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.97") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %38)
          to label %468 unwind label %486

468:                                              ; preds = %467
  %469 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0, ptr noundef nonnull align 8 dereferenceable(48) %37)
          to label %470 unwind label %488

470:                                              ; preds = %468
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %40) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %41) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %471 unwind label %493

471:                                              ; preds = %470
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull %42)
          to label %472 unwind label %495

472:                                              ; preds = %471
  %473 = getelementptr inbounds i8, ptr %41, i64 32
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %473, i32 noundef 0)
          to label %474 unwind label %497

474:                                              ; preds = %472
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.97") align 8 %40, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %41)
          to label %475 unwind label %499

475:                                              ; preds = %474
  %476 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice, ptr noundef nonnull align 8 dereferenceable(48) %40)
          to label %477 unwind label %501

477:                                              ; preds = %475
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %40) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %40) #10
  br label %506

478:                                              ; preds = %461
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #10
  br label %1696

480:                                              ; preds = %462
  %481 = landingpad { ptr, i32 }
          cleanup
  br label %492

482:                                              ; preds = %464
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %491

484:                                              ; preds = %465
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #10
  br label %491

486:                                              ; preds = %467
  %487 = landingpad { ptr, i32 }
          cleanup
  br label %490

488:                                              ; preds = %468
  %489 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %37) #10
  br label %490

490:                                              ; preds = %488, %486
  %.pn = phi { ptr, i32 } [ %489, %488 ], [ %487, %486 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #10
  br label %491

491:                                              ; preds = %490, %484, %482
  %.pn.pn = phi { ptr, i32 } [ %.pn, %490 ], [ %485, %484 ], [ %483, %482 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  br label %492

492:                                              ; preds = %491, %480
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %491 ], [ %481, %480 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %37) #10
  br label %1696

493:                                              ; preds = %470
  %494 = landingpad { ptr, i32 }
          cleanup
  br label %505

495:                                              ; preds = %471
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %504

497:                                              ; preds = %472
  %498 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #10
  br label %504

499:                                              ; preds = %474
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %503

501:                                              ; preds = %475
  %502 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %40) #10
  br label %503

503:                                              ; preds = %501, %499
  %.pn776 = phi { ptr, i32 } [ %502, %501 ], [ %500, %499 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #10
  br label %504

504:                                              ; preds = %503, %497, %495
  %.pn776.pn = phi { ptr, i32 } [ %.pn776, %503 ], [ %498, %497 ], [ %496, %495 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #10
  br label %505

505:                                              ; preds = %504, %493
  %.pn776.pn.pn = phi { ptr, i32 } [ %.pn776.pn, %504 ], [ %494, %493 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %40) #10
  br label %1696

506:                                              ; preds = %477, %459
  %507 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %508 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %507)
  br i1 %508, label %517, label %509

509:                                              ; preds = %506
  %510 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %511 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %510)
  br i1 %511, label %512, label %533

512:                                              ; preds = %509
  %513 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %514 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %513)
  %515 = getelementptr inbounds i8, ptr %514, i64 88
  %516 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %515)
  br i1 %516, label %517, label %533

517:                                              ; preds = %512, %506
  %518 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %519 unwind label %226

519:                                              ; preds = %517
  %520 = load ptr, ptr %8, align 8, !tbaa !5
  br i1 %518, label %521, label %527

521:                                              ; preds = %519
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %43, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %520, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %522 unwind label %226

522:                                              ; preds = %521
  %523 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %43, i1 noundef zeroext false)
          to label %524 unwind label %525

524:                                              ; preds = %522
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %43) #10
  br label %.thread997

525:                                              ; preds = %522
  %526 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %43) #10
  br label %1696

527:                                              ; preds = %519
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %44, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %520, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %528 unwind label %226

528:                                              ; preds = %527
  %529 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %44, i1 noundef zeroext false)
          to label %530 unwind label %531

530:                                              ; preds = %528
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %44) #10
  br label %.thread997

531:                                              ; preds = %528
  %532 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %44) #10
  br label %1696

533:                                              ; preds = %512, %509
  %534 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %535 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %534)
  br i1 %535, label %536, label %599

536:                                              ; preds = %533
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %45) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %46) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %47) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %435)
          to label %537 unwind label %559

537:                                              ; preds = %536
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull %48)
          to label %538 unwind label %561

538:                                              ; preds = %537
  %539 = getelementptr inbounds i8, ptr %47, i64 32
  %540 = getelementptr inbounds i8, ptr %0, i64 216
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %540)
          to label %541 unwind label %.thread990

541:                                              ; preds = %538
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %53, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %542 unwind label %.thread994

542:                                              ; preds = %541
  invoke void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull %53)
          to label %543 unwind label %565

543:                                              ; preds = %542
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %50, ptr noundef nonnull %51, ptr noundef nonnull %52)
          to label %544 unwind label %567

544:                                              ; preds = %543
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %49, ptr noundef nonnull %50)
          to label %545 unwind label %569

545:                                              ; preds = %544
  %546 = load ptr, ptr %211, align 8, !tbaa !45
  %547 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %546, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %540)
          to label %548 unwind label %571

548:                                              ; preds = %545
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %54, ptr noundef nonnull %547)
          to label %549 unwind label %571

549:                                              ; preds = %548
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %539, ptr noundef nonnull %49, ptr noundef nonnull %54)
          to label %550 unwind label %573

550:                                              ; preds = %549
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.97") align 8 %46, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE13name_Metadata, ptr noundef nonnull align 8 dereferenceable(40) %47)
          to label %551 unwind label %575

551:                                              ; preds = %550
  %552 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %45, ptr noundef nonnull align 8 dereferenceable(48) %46)
          to label %553 unwind label %577

553:                                              ; preds = %551
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #10
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %46) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %554 unwind label %588

554:                                              ; preds = %553
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %57)
          to label %555 unwind label %590

555:                                              ; preds = %554
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %58, ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %55, ptr noundef nonnull %56, ptr noundef nonnull %57, ptr noundef nonnull %58)
          to label %556 unwind label %592

556:                                              ; preds = %555
  %557 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %55, i1 noundef zeroext false)
          to label %558 unwind label %594

558:                                              ; preds = %556
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %55) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #10
  br label %.thread997

559:                                              ; preds = %536
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %587

561:                                              ; preds = %537
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %586

.thread990:                                       ; preds = %538
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %585

.thread994:                                       ; preds = %541
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  br label %585

565:                                              ; preds = %542
  %566 = landingpad { ptr, i32 }
          cleanup
  br label %584

567:                                              ; preds = %543
  %568 = landingpad { ptr, i32 }
          cleanup
  br label %583

569:                                              ; preds = %544
  %570 = landingpad { ptr, i32 }
          cleanup
  br label %582

571:                                              ; preds = %548, %545
  %572 = landingpad { ptr, i32 }
          cleanup
  br label %581

573:                                              ; preds = %549
  %574 = landingpad { ptr, i32 }
          cleanup
  br label %580

575:                                              ; preds = %550
  %576 = landingpad { ptr, i32 }
          cleanup
  br label %579

577:                                              ; preds = %551
  %578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #10
  br label %579

579:                                              ; preds = %577, %575
  %.pn788 = phi { ptr, i32 } [ %578, %577 ], [ %576, %575 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #10
  br label %580

580:                                              ; preds = %579, %573
  %.0714 = phi i1 [ false, %579 ], [ true, %573 ]
  %.pn788.pn = phi { ptr, i32 } [ %.pn788, %579 ], [ %574, %573 ]
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %54) #10
  br label %581

581:                                              ; preds = %580, %571
  %.1715 = phi i1 [ %.0714, %580 ], [ true, %571 ]
  %.pn788.pn.pn = phi { ptr, i32 } [ %.pn788.pn, %580 ], [ %572, %571 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %49) #10
  br label %582

582:                                              ; preds = %581, %569
  %.2716 = phi i1 [ %.1715, %581 ], [ true, %569 ]
  %.pn788.pn.pn.pn = phi { ptr, i32 } [ %.pn788.pn.pn, %581 ], [ %570, %569 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #10
  br label %583

583:                                              ; preds = %582, %567
  %.3717 = phi i1 [ %.2716, %582 ], [ true, %567 ]
  %.pn788.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn788.pn.pn.pn, %582 ], [ %568, %567 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #10
  br label %584

584:                                              ; preds = %565, %583
  %.4718 = phi i1 [ %.3717, %583 ], [ true, %565 ]
  %.pn788.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn788.pn.pn.pn.pn, %583 ], [ %566, %565 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #10
  br i1 %.4718, label %585, label %586

585:                                              ; preds = %.thread994, %.thread990, %584
  %.pn788.pn.pn.pn.pn.pn.pn.pn993 = phi { ptr, i32 } [ %563, %.thread990 ], [ %.pn788.pn.pn.pn.pn.pn, %584 ], [ %564, %.thread994 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #10
  br label %586

586:                                              ; preds = %584, %585, %561
  %.pn788.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn788.pn.pn.pn.pn.pn.pn.pn993, %585 ], [ %.pn788.pn.pn.pn.pn.pn, %584 ], [ %562, %561 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #10
  br label %587

587:                                              ; preds = %586, %559
  %.pn788.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn788.pn.pn.pn.pn.pn.pn.pn.pn, %586 ], [ %560, %559 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %47) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %46) #10
  br label %598

588:                                              ; preds = %553
  %589 = landingpad { ptr, i32 }
          cleanup
  br label %598

590:                                              ; preds = %554
  %591 = landingpad { ptr, i32 }
          cleanup
  br label %597

592:                                              ; preds = %555
  %593 = landingpad { ptr, i32 }
          cleanup
  br label %596

594:                                              ; preds = %556
  %595 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %55) #10
  br label %596

596:                                              ; preds = %594, %592
  %.pn799 = phi { ptr, i32 } [ %595, %594 ], [ %593, %592 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #10
  br label %597

597:                                              ; preds = %596, %590
  %.pn799.pn = phi { ptr, i32 } [ %.pn799, %596 ], [ %591, %590 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #10
  br label %598

598:                                              ; preds = %597, %588, %587
  %.pn799.pn.pn = phi { ptr, i32 } [ %.pn799.pn, %597 ], [ %589, %588 ], [ %.pn788.pn.pn.pn.pn.pn.pn.pn.pn.pn, %587 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #10
  br label %1696

599:                                              ; preds = %533
  %600 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %601 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %600)
  br i1 %601, label %610, label %602

602:                                              ; preds = %599
  %603 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %604 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %603)
  br i1 %604, label %605, label %617

605:                                              ; preds = %602
  %606 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %607 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %606)
  %608 = load i32, ptr %607, align 4, !tbaa !60
  %609 = icmp eq i32 %608, 16
  br i1 %609, label %610, label %617

610:                                              ; preds = %605, %599
  %611 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %59, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %611, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice)
          to label %612 unwind label %226

612:                                              ; preds = %610
  %613 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %59, i1 noundef zeroext false)
          to label %614 unwind label %615

614:                                              ; preds = %612
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #10
  br label %.thread997

615:                                              ; preds = %612
  %616 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #10
  br label %1696

617:                                              ; preds = %605, %602
  %618 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %619 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %618)
  br i1 %619, label %620, label %688

620:                                              ; preds = %617
  %621 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %622 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %621)
  %623 = getelementptr inbounds i8, ptr %622, i64 88
  %624 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %623)
  br i1 %624, label %625, label %688

625:                                              ; preds = %620
  %626 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %627 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %626)
  %628 = getelementptr inbounds i8, ptr %627, i64 88
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %628)
  %630 = load ptr, ptr %629, align 8, !tbaa !5
  %631 = getelementptr inbounds i8, ptr %630, i64 208
  %632 = load i32, ptr %631, align 8, !tbaa !62
  switch i32 %632, label %688 [
    i32 0, label %635
    i32 1, label %642
    i32 2, label %665
    i32 3, label %672
  ]

633:                                              ; preds = %665, %635
  %634 = landingpad { ptr, i32 }
          cleanup
  br label %1696

635:                                              ; preds = %625
  %636 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %60, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %636, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %637 unwind label %633

637:                                              ; preds = %635
  %638 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %60, i1 noundef zeroext false)
          to label %639 unwind label %640

639:                                              ; preds = %637
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #10
  br label %.thread997

640:                                              ; preds = %637
  %641 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #10
  br label %1696

642:                                              ; preds = %625
  %643 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %644 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %643)
  %645 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %644)
  %646 = getelementptr inbounds i8, ptr %645, i64 16
  %647 = getelementptr inbounds i8, ptr %630, i64 204
  %648 = load i32, ptr %647, align 4, !tbaa !73
  %649 = zext i32 %648 to i64
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %646, i64 noundef %649)
          to label %651 unwind label %658

651:                                              ; preds = %642
  %652 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %62) #10
  store ptr %5, ptr %62, align 8, !tbaa !5
  %653 = getelementptr inbounds i8, ptr %62, i64 8
  store ptr %4, ptr %653, align 8, !tbaa !5
  %654 = getelementptr inbounds i8, ptr %62, i64 16
  store ptr %8, ptr %654, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES2_bE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(24) %62)
          to label %655 unwind label %660

655:                                              ; preds = %651
  %656 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %652, ptr noundef nonnull align 8 dereferenceable(8) %650, ptr noundef nonnull %61, i1 noundef zeroext false)
          to label %657 unwind label %662

657:                                              ; preds = %655
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #10
  br label %.thread997

658:                                              ; preds = %642
  %659 = landingpad { ptr, i32 }
          cleanup
  br label %1696

660:                                              ; preds = %651
  %661 = landingpad { ptr, i32 }
          cleanup
  br label %664

662:                                              ; preds = %655
  %663 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #10
  br label %664

664:                                              ; preds = %662, %660
  %.pn784 = phi { ptr, i32 } [ %663, %662 ], [ %661, %660 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %62) #10
  br label %1696

665:                                              ; preds = %625
  %666 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %63, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %666, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11assoc_slice)
          to label %667 unwind label %633

667:                                              ; preds = %665
  %668 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %63, i1 noundef zeroext false)
          to label %669 unwind label %670

669:                                              ; preds = %667
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #10
  br label %.thread997

670:                                              ; preds = %667
  %671 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #10
  br label %1696

672:                                              ; preds = %625
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #10
  store ptr @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %673 unwind label %678

673:                                              ; preds = %672
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #10
  store ptr %64, ptr %67, align 8, !tbaa !5
  %674 = getelementptr inbounds i8, ptr %67, i64 8
  store ptr %4, ptr %674, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 8 dereferenceable(16) %67) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull %66)
          to label %675 unwind label %680

675:                                              ; preds = %673
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #10
  %676 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %676, ptr noundef nonnull @.str.3)
          to label %677 unwind label %683

677:                                              ; preds = %675
  invoke void @__cxa_throw(ptr nonnull %676, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1698 unwind label %685

678:                                              ; preds = %672
  %679 = landingpad { ptr, i32 }
          cleanup
  br label %682

680:                                              ; preds = %673
  %681 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %682

682:                                              ; preds = %680, %678
  %.pn780 = phi { ptr, i32 } [ %681, %680 ], [ %679, %678 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #10
  br label %687

683:                                              ; preds = %675
  %684 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %676) #10
  br label %687

685:                                              ; preds = %677
  %686 = landingpad { ptr, i32 }
          cleanup
  br label %687

687:                                              ; preds = %685, %683, %682
  %.pn782 = phi { ptr, i32 } [ %686, %685 ], [ %684, %683 ], [ %.pn780, %682 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #10
  br label %1696

688:                                              ; preds = %625, %617, %620
  %689 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %68, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %689, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10assoc_unit_0)
          to label %690 unwind label %226

690:                                              ; preds = %688
  %691 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %68, i1 noundef zeroext false)
          to label %692 unwind label %693

692:                                              ; preds = %690
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %68) #10
  br label %.thread997

693:                                              ; preds = %690
  %694 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %68) #10
  br label %1696

.thread989:                                       ; preds = %314, %305, %217, %275, %437, %432, %252, %259, %262, %209
  %695 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %696 = call noundef ptr @_ZNK3HIR8TypeData11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %695)
  %.not825 = icmp eq ptr %696, null
  br i1 %.not825, label %710, label %697

697:                                              ; preds = %.thread989
  %698 = getelementptr inbounds i8, ptr %696, i64 8
  %699 = load i32, ptr %698, align 8, !tbaa !74
  %.mask = and i32 %699, -256
  %700 = icmp eq i32 %.mask, 512
  br i1 %700, label %701, label %710

701:                                              ; preds = %697
  %702 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %69, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %702, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %703 unwind label %705

703:                                              ; preds = %701
  %704 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %69, i1 noundef zeroext false)
          to label %709 unwind label %707

705:                                              ; preds = %701
  %706 = landingpad { ptr, i32 }
          cleanup
  br label %1696

707:                                              ; preds = %703
  %708 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %69) #10
  br label %1696

709:                                              ; preds = %703
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %69) #10
  br label %.thread997

710:                                              ; preds = %697, %.thread989
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %711 unwind label %725

711:                                              ; preds = %710
  %712 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %713 unwind label %727

713:                                              ; preds = %711
  br i1 %712, label %714, label %.critedge

714:                                              ; preds = %713
  %715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H11get_root_tyESC_(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %716 unwind label %727

716:                                              ; preds = %714
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %717 unwind label %729

717:                                              ; preds = %716
  %718 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %715, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %719 unwind label %731

719:                                              ; preds = %717
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #10
  br i1 %718, label %720, label %.lr.ph1781

.critedge:                                        ; preds = %713
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #10
  br label %.lr.ph1781

720:                                              ; preds = %719
  %721 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %72, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %721, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %722 unwind label %226

722:                                              ; preds = %720
  %723 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %72, i1 noundef zeroext false)
          to label %724 unwind label %736

724:                                              ; preds = %722
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %72) #10
  br label %.thread997

725:                                              ; preds = %710
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %735

727:                                              ; preds = %714, %711
  %728 = landingpad { ptr, i32 }
          cleanup
  br label %734

729:                                              ; preds = %716
  %730 = landingpad { ptr, i32 }
          cleanup
  br label %733

731:                                              ; preds = %717
  %732 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %733

733:                                              ; preds = %729, %731
  %.pn828 = phi { ptr, i32 } [ %732, %731 ], [ %730, %729 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #10
  br label %734

734:                                              ; preds = %733, %727
  %.pn828.pn = phi { ptr, i32 } [ %.pn828, %733 ], [ %728, %727 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #10
  br label %735

735:                                              ; preds = %734, %725
  %.pn828.pn.pn = phi { ptr, i32 } [ %.pn828.pn, %734 ], [ %726, %725 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #10
  br label %1696

736:                                              ; preds = %722
  %737 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %72) #10
  br label %1696

.loopexit1258:                                    ; preds = %1034, %922, %902, %.lr.ph1781, %.preheader1243.split.split, %777, %.preheader1250.split.split, %1121, %..loopexit1230_crit_edge, %..loopexit1236_crit_edge, %.lr.ph1424, %.thread1134
  %738 = load ptr, ptr %740, align 8, !tbaa !45
  %739 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %738, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1555 unwind label %1573

.lr.ph1781:                                       ; preds = %.critedge, %719
  %740 = getelementptr inbounds i8, ptr %0, i64 8
  %741 = getelementptr inbounds i8, ptr %156, i64 8
  %742 = getelementptr inbounds i8, ptr %156, i64 16
  %743 = getelementptr inbounds i8, ptr %156, i64 24
  %744 = getelementptr inbounds i8, ptr %156, i64 32
  %745 = getelementptr inbounds i8, ptr %156, i64 40
  %746 = getelementptr inbounds i8, ptr %156, i64 48
  %747 = getelementptr inbounds i8, ptr %147, i64 8
  %748 = getelementptr inbounds i8, ptr %147, i64 16
  %749 = getelementptr inbounds i8, ptr %147, i64 24
  %750 = getelementptr inbounds i8, ptr %141, i64 8
  %751 = getelementptr inbounds i8, ptr %141, i64 16
  %752 = getelementptr inbounds i8, ptr %141, i64 24
  %753 = getelementptr inbounds i8, ptr %0, i64 192
  %754 = getelementptr inbounds i8, ptr %0, i64 152
  %755 = getelementptr inbounds i8, ptr %0, i64 160
  %756 = getelementptr inbounds i8, ptr %0, i64 168
  %757 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %758 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  switch i32 %758, label %.loopexit1258 [
    i32 0, label %771
    i32 10, label %.preheader1243.split.split
    i32 14, label %.preheader1244.split
    i32 13, label %.preheader1246.split
    i32 15, label %.preheader1248.split
    i32 16, label %.preheader1250.split.split
    i32 6, label %.lr.ph1438
    i32 7, label %.lr.ph1432
    i32 4, label %.lr.ph1424
  ]

.preheader1250.split.split:                       ; preds = %.lr.ph1781
  %759 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %760 = load i32, ptr @gTargetVersion, align 4
  %761 = icmp sgt i32 %760, 1
  br i1 %761, label %1119, label %.loopexit1258

.preheader1248.split:                             ; preds = %.lr.ph1781
  %762 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %763 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %1028 unwind label %.loopexit1224.split

.preheader1246.split:                             ; preds = %.lr.ph1781
  %764 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %765 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %916 unwind label %.split1569

.preheader1244.split:                             ; preds = %.lr.ph1781
  %766 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %767 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %791 unwind label %.loopexit1217.split

.preheader1243.split.split:                       ; preds = %.lr.ph1781
  %768 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %769 = load i32, ptr @gTargetVersion, align 4
  %770 = icmp sgt i32 %769, 3
  br i1 %770, label %772, label %.loopexit1258

771:                                              ; preds = %.lr.ph1781
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 197, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #12
  unreachable

.loopexit1211.split:                              ; preds = %772, %775
  %lpad.loopexit1213 = landingpad { ptr, i32 }
          cleanup
  br label %1696

.loopexit.split-lp1212:                           ; preds = %.split1719
  %lpad.loopexit.split-lp1214 = landingpad { ptr, i32 }
          cleanup
  br label %1696

772:                                              ; preds = %.preheader1243.split.split
  %773 = load ptr, ptr %740, align 8, !tbaa !45
  %774 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %773, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.6)
          to label %775 unwind label %.loopexit1211.split

775:                                              ; preds = %772
  %776 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %774)
          to label %777 unwind label %.loopexit1211.split

777:                                              ; preds = %775
  br i1 %776, label %.split1719, label %.loopexit1258

.split1719:                                       ; preds = %777
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %74, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %778 unwind label %.loopexit.split-lp1212

778:                                              ; preds = %.split1719
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %75)
          to label %779 unwind label %782

779:                                              ; preds = %778
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %76, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %76) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %73, ptr noundef nonnull %74, ptr noundef nonnull %75, ptr noundef nonnull %76)
          to label %780 unwind label %784

780:                                              ; preds = %779
  %781 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %73, i1 noundef zeroext false)
          to label %790 unwind label %786

782:                                              ; preds = %778
  %783 = landingpad { ptr, i32 }
          cleanup
  br label %789

784:                                              ; preds = %779
  %785 = landingpad { ptr, i32 }
          cleanup
  br label %788

786:                                              ; preds = %780
  %787 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %73) #10
  br label %788

788:                                              ; preds = %786, %784
  %.pn955 = phi { ptr, i32 } [ %787, %786 ], [ %785, %784 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %76) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #10
  br label %789

789:                                              ; preds = %788, %782
  %.pn955.pn = phi { ptr, i32 } [ %.pn955, %788 ], [ %783, %782 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  br label %1696

790:                                              ; preds = %780
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %73) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %76) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  br label %.thread997

.loopexit1217.split:                              ; preds = %.preheader1244.split, %792, %795, %897, %900
  %lpad.loopexit1883 = landingpad { ptr, i32 }
          cleanup
  br label %1696

.loopexit.split-lp1218:                           ; preds = %.split1642
  %lpad.loopexit.split-lp1220 = landingpad { ptr, i32 }
          cleanup
  br label %1696

791:                                              ; preds = %.preheader1244.split
  br i1 %767, label %.split1639, label %792

792:                                              ; preds = %791
  %793 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %755)
          to label %794 unwind label %.loopexit1217.split

794:                                              ; preds = %792
  br i1 %793, label %.split1639, label %795

795:                                              ; preds = %794
  %796 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %797 unwind label %.loopexit1217.split

797:                                              ; preds = %795
  br i1 %796, label %.split1639, label %897

.split1639:                                       ; preds = %791, %794, %797
  %.pre1890 = load ptr, ptr %8, align 8, !tbaa !5
  %.not932 = icmp eq ptr %.pre1890, null
  br i1 %.not932, label %822, label %798

798:                                              ; preds = %.split1639
  %799 = getelementptr inbounds i8, ptr %.pre1890, i64 8
  %800 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %799, i64 noundef 0)
          to label %801 unwind label %808

801:                                              ; preds = %798
  %802 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %800)
  %803 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %802)
  %804 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %803) #10
  %805 = getelementptr inbounds i8, ptr %766, i64 120
  %806 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %805) #10
  %.not933 = icmp eq i64 %804, %806
  br i1 %.not933, label %.preheader, label %.thread997

.preheader:                                       ; preds = %801
  %807 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %803) #10
  %.not9361798.not = icmp eq i64 %807, 0
  br i1 %.not9361798.not, label %.loopexit, label %.lr.ph1800

808:                                              ; preds = %798
  %809 = landingpad { ptr, i32 }
          cleanup
  br label %1696

810:                                              ; preds = %818
  %811 = add i32 %.07351799, 1
  %812 = zext i32 %811 to i64
  %813 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %803) #10
  %.not936 = icmp ugt i64 %813, %812
  br i1 %.not936, label %.lr.ph1800, label %.loopexit, !llvm.loop !77

.lr.ph1800:                                       ; preds = %.preheader, %810
  %814 = phi i64 [ %812, %810 ], [ 0, %.preheader ]
  %.07351799 = phi i32 [ %811, %810 ], [ 0, %.preheader ]
  %815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %803, i64 noundef %814) #10
  %816 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %805, i64 noundef %814) #10
  %817 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %815, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %816, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %818 unwind label %820

818:                                              ; preds = %.lr.ph1800
  %819 = icmp eq i32 %817, 2
  br i1 %819, label %.thread997, label %810

820:                                              ; preds = %.lr.ph1800
  %821 = landingpad { ptr, i32 }
          cleanup
  br label %1696

822:                                              ; preds = %.split1639
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %8, align 8, !tbaa !5
  br label %.loopexit

.loopexit:                                        ; preds = %810, %.preheader, %822
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %77) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  %823 = getelementptr inbounds i8, ptr %766, i64 120
  %824 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #10
  %.not1810 = icmp eq i64 %824, 0
  br i1 %.not1810, label %._crit_edge1804, label %.lr.ph1803

._crit_edge1804:                                  ; preds = %828, %.loopexit
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %79) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %838 unwind label %857

.lr.ph1803:                                       ; preds = %.loopexit, %828
  %825 = phi i64 [ %830, %828 ], [ 0, %.loopexit ]
  %.07361801 = phi i32 [ %829, %828 ], [ 0, %.loopexit ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #10
  %826 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %823, i64 noundef %825) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %78, ptr noundef nonnull align 8 dereferenceable(8) %826)
          to label %827 unwind label %833

827:                                              ; preds = %.lr.ph1803
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %77, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %828 unwind label %835

828:                                              ; preds = %827
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #10
  %829 = add i32 %.07361801, 1
  %830 = zext i32 %829 to i64
  %831 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %823) #10
  %832 = icmp ugt i64 %831, %830
  br i1 %832, label %.lr.ph1803, label %._crit_edge1804, !llvm.loop !79

833:                                              ; preds = %.lr.ph1803
  %834 = landingpad { ptr, i32 }
          cleanup
  br label %837

835:                                              ; preds = %827
  %836 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #10
  br label %837

837:                                              ; preds = %835, %833
  %.pn951 = phi { ptr, i32 } [ %836, %835 ], [ %834, %833 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #10
  br label %896

838:                                              ; preds = %._crit_edge1804
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %81, ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull %81)
          to label %839 unwind label %859

839:                                              ; preds = %838
  %840 = getelementptr inbounds i8, ptr %79, i64 8
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %840, ptr noundef nonnull %80)
          to label %841 unwind label %861

841:                                              ; preds = %839
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %82) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %82) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %83) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %84) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %842 unwind label %864

842:                                              ; preds = %841
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %86, ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %843 unwind label %866

843:                                              ; preds = %842
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %84, ptr noundef nonnull %85, ptr noundef nonnull %86)
          to label %844 unwind label %868

844:                                              ; preds = %843
  %845 = getelementptr inbounds i8, ptr %84, i64 32
  %846 = getelementptr inbounds i8, ptr %766, i64 112
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %845, ptr noundef nonnull align 8 dereferenceable(8) %846)
          to label %847 unwind label %870

847:                                              ; preds = %844
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.264") align 8 %83, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %84)
          to label %848 unwind label %872

848:                                              ; preds = %847
  %849 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %82, ptr noundef nonnull align 8 dereferenceable(48) %83)
          to label %850 unwind label %874

850:                                              ; preds = %848
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %84) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %84) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %83) #10
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %88, ptr noundef nonnull align 8 dereferenceable(96) %766)
          to label %851 unwind label %880

851:                                              ; preds = %850
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %89, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %852 unwind label %882

852:                                              ; preds = %851
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %90, ptr noundef nonnull align 8 dereferenceable(24) %79)
          to label %853 unwind label %884

853:                                              ; preds = %852
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %91, ptr noundef nonnull align 8 dereferenceable(48) %82) #10
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %87, ptr noundef nonnull %88, ptr noundef nonnull %89, ptr noundef nonnull %90, ptr noundef nonnull %91)
          to label %854 unwind label %886

854:                                              ; preds = %853
  %855 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %87, i1 noundef zeroext false)
          to label %856 unwind label %888

856:                                              ; preds = %854
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %88) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %82) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %82) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) #10
  br label %.thread997

857:                                              ; preds = %._crit_edge1804
  %858 = landingpad { ptr, i32 }
          cleanup
  br label %895

859:                                              ; preds = %838
  %860 = landingpad { ptr, i32 }
          cleanup
  br label %863

861:                                              ; preds = %839
  %862 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #10
  br label %863

863:                                              ; preds = %861, %859
  %.pn937 = phi { ptr, i32 } [ %862, %861 ], [ %860, %859 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %81) #10
  br label %894

864:                                              ; preds = %841
  %865 = landingpad { ptr, i32 }
          cleanup
  br label %879

866:                                              ; preds = %842
  %867 = landingpad { ptr, i32 }
          cleanup
  br label %878

868:                                              ; preds = %843
  %869 = landingpad { ptr, i32 }
          cleanup
  br label %877

870:                                              ; preds = %844
  %871 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %84) #10
  br label %877

872:                                              ; preds = %847
  %873 = landingpad { ptr, i32 }
          cleanup
  br label %876

874:                                              ; preds = %848
  %875 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #10
  br label %876

876:                                              ; preds = %874, %872
  %.pn939 = phi { ptr, i32 } [ %875, %874 ], [ %873, %872 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %84) #10
  br label %877

877:                                              ; preds = %876, %870, %868
  %.pn939.pn = phi { ptr, i32 } [ %.pn939, %876 ], [ %871, %870 ], [ %869, %868 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %86) #10
  br label %878

878:                                              ; preds = %877, %866
  %.pn939.pn.pn = phi { ptr, i32 } [ %.pn939.pn, %877 ], [ %867, %866 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #10
  br label %879

879:                                              ; preds = %878, %864
  %.pn939.pn.pn.pn = phi { ptr, i32 } [ %.pn939.pn.pn, %878 ], [ %865, %864 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %84) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %83) #10
  br label %893

880:                                              ; preds = %850
  %881 = landingpad { ptr, i32 }
          cleanup
  br label %893

882:                                              ; preds = %851
  %883 = landingpad { ptr, i32 }
          cleanup
  br label %892

884:                                              ; preds = %852
  %885 = landingpad { ptr, i32 }
          cleanup
  br label %891

886:                                              ; preds = %853
  %887 = landingpad { ptr, i32 }
          cleanup
  br label %890

888:                                              ; preds = %854
  %889 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #10
  br label %890

890:                                              ; preds = %888, %886
  %.pn944 = phi { ptr, i32 } [ %889, %888 ], [ %887, %886 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #10
  br label %891

891:                                              ; preds = %890, %884
  %.pn944.pn = phi { ptr, i32 } [ %.pn944, %890 ], [ %885, %884 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  br label %892

892:                                              ; preds = %891, %882
  %.pn944.pn.pn = phi { ptr, i32 } [ %.pn944.pn, %891 ], [ %883, %882 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %88) #10
  br label %893

893:                                              ; preds = %892, %880, %879
  %.pn944.pn.pn.pn = phi { ptr, i32 } [ %.pn944.pn.pn, %892 ], [ %881, %880 ], [ %.pn939.pn.pn.pn, %879 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %82) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %82) #10
  br label %894

894:                                              ; preds = %893, %863
  %.pn944.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn944.pn.pn.pn, %893 ], [ %.pn937, %863 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #10
  br label %895

895:                                              ; preds = %894, %857
  %.pn944.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn944.pn.pn.pn.pn, %894 ], [ %858, %857 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %79) #10
  br label %896

896:                                              ; preds = %895, %837
  %.pn951.pn = phi { ptr, i32 } [ %.pn951, %837 ], [ %.pn944.pn.pn.pn.pn.pn, %895 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %77) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %77) #10
  br label %1696

897:                                              ; preds = %797
  %898 = load ptr, ptr %740, align 8, !tbaa !45
  %899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944) %898, ptr noundef nonnull @.str.8)
          to label %900 unwind label %.loopexit1217.split

900:                                              ; preds = %897
  %901 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %899)
          to label %902 unwind label %.loopexit1217.split

902:                                              ; preds = %900
  br i1 %901, label %.split1642, label %.loopexit1258, !llvm.loop !80

.split1642:                                       ; preds = %902
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %93, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %903 unwind label %.loopexit.split-lp1218

903:                                              ; preds = %.split1642
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %94)
          to label %904 unwind label %908

904:                                              ; preds = %903
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %95, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %95) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %92, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef nonnull %95)
          to label %905 unwind label %910

905:                                              ; preds = %904
  %906 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %92, i1 noundef zeroext false)
          to label %907 unwind label %912

907:                                              ; preds = %905
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %92) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %95) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %.thread997

908:                                              ; preds = %903
  %909 = landingpad { ptr, i32 }
          cleanup
  br label %915

910:                                              ; preds = %904
  %911 = landingpad { ptr, i32 }
          cleanup
  br label %914

912:                                              ; preds = %905
  %913 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %92) #10
  br label %914

914:                                              ; preds = %912, %910
  %.pn929 = phi { ptr, i32 } [ %913, %912 ], [ %911, %910 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %95) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %94) #10
  br label %915

915:                                              ; preds = %914, %908
  %.pn929.pn = phi { ptr, i32 } [ %.pn929, %914 ], [ %909, %908 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %1696

.split1569:                                       ; preds = %920, %917, %.preheader1246.split
  %lpad.loopexit1876 = landingpad { ptr, i32 }
          cleanup
  br label %1696

916:                                              ; preds = %.preheader1246.split
  br i1 %765, label %.split1572, label %917

917:                                              ; preds = %916
  %918 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %755)
          to label %919 unwind label %.split1569

919:                                              ; preds = %917
  br i1 %918, label %.split1572, label %920

920:                                              ; preds = %919
  %921 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %922 unwind label %.split1569

922:                                              ; preds = %920
  br i1 %921, label %.split1572, label %.loopexit1258, !llvm.loop !81

.split1572:                                       ; preds = %916, %919, %922
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %96) #10
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %96, ptr noundef nonnull align 8 dereferenceable(112) %764, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %923 unwind label %935

923:                                              ; preds = %.split1572
  %924 = load ptr, ptr %8, align 8, !tbaa !5
  %.not904 = icmp eq ptr %924, null
  br i1 %.not904, label %951, label %925

925:                                              ; preds = %923
  %926 = getelementptr inbounds i8, ptr %924, i64 8
  %927 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %926, i64 noundef 0)
          to label %928 unwind label %937

928:                                              ; preds = %925
  %929 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %927)
  %930 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %929)
  %931 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %930) #10
  %932 = getelementptr inbounds i8, ptr %96, i64 120
  %933 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %932) #10
  %.not905 = icmp eq i64 %931, %933
  br i1 %.not905, label %.preheader1194, label %.thread1029

.preheader1194:                                   ; preds = %928
  %934 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %930) #10
  %.not9081791.not = icmp eq i64 %934, 0
  br i1 %.not9081791.not, label %.loopexit1195, label %.lr.ph1793

935:                                              ; preds = %.split1572
  %936 = landingpad { ptr, i32 }
          cleanup
  br label %1027

937:                                              ; preds = %925
  %938 = landingpad { ptr, i32 }
          cleanup
  br label %1026

939:                                              ; preds = %947
  %940 = add i32 %.07391792, 1
  %941 = zext i32 %940 to i64
  %942 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %930) #10
  %.not908 = icmp ugt i64 %942, %941
  br i1 %.not908, label %.lr.ph1793, label %.loopexit1195, !llvm.loop !82

.lr.ph1793:                                       ; preds = %.preheader1194, %939
  %943 = phi i64 [ %941, %939 ], [ 0, %.preheader1194 ]
  %.07391792 = phi i32 [ %940, %939 ], [ 0, %.preheader1194 ]
  %944 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %930, i64 noundef %943) #10
  %945 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %932, i64 noundef %943) #10
  %946 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %944, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %945, ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %947 unwind label %949

947:                                              ; preds = %.lr.ph1793
  %948 = icmp eq i32 %946, 2
  br i1 %948, label %.thread1029, label %939

949:                                              ; preds = %.lr.ph1793
  %950 = landingpad { ptr, i32 }
          cleanup
  br label %1026

951:                                              ; preds = %923
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %8, align 8, !tbaa !5
  br label %.loopexit1195

.loopexit1195:                                    ; preds = %939, %.preheader1194, %951
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %97) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  %952 = getelementptr inbounds i8, ptr %96, i64 120
  %953 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %952) #10
  %.not1809 = icmp eq i64 %953, 0
  br i1 %.not1809, label %._crit_edge1797, label %.lr.ph1796

._crit_edge1797:                                  ; preds = %957, %.loopexit1195
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %99) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %967 unwind label %986

.lr.ph1796:                                       ; preds = %.loopexit1195, %957
  %954 = phi i64 [ %959, %957 ], [ 0, %.loopexit1195 ]
  %.07401794 = phi i32 [ %958, %957 ], [ 0, %.loopexit1195 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #10
  %955 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %952, i64 noundef %954) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %98, ptr noundef nonnull align 8 dereferenceable(8) %955)
          to label %956 unwind label %962

956:                                              ; preds = %.lr.ph1796
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef nonnull align 8 dereferenceable(8) %98)
          to label %957 unwind label %964

957:                                              ; preds = %956
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #10
  %958 = add i32 %.07401794, 1
  %959 = zext i32 %958 to i64
  %960 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %952) #10
  %961 = icmp ugt i64 %960, %959
  br i1 %961, label %.lr.ph1796, label %._crit_edge1797, !llvm.loop !83

962:                                              ; preds = %.lr.ph1796
  %963 = landingpad { ptr, i32 }
          cleanup
  br label %966

964:                                              ; preds = %956
  %965 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  br label %966

966:                                              ; preds = %964, %962
  %.pn923 = phi { ptr, i32 } [ %965, %964 ], [ %963, %962 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #10
  br label %1025

967:                                              ; preds = %._crit_edge1797
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %101, ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  invoke void @_ZN3HIR7TypeRef9new_tupleESt6vectorIS0_SaIS0_EE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %100, ptr noundef nonnull %101)
          to label %968 unwind label %988

968:                                              ; preds = %967
  %969 = getelementptr inbounds i8, ptr %99, i64 8
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %969, ptr noundef nonnull %100)
          to label %970 unwind label %990

970:                                              ; preds = %968
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %102) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %103) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %104) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %971 unwind label %993

971:                                              ; preds = %970
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %106, ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %972 unwind label %995

972:                                              ; preds = %971
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %104, ptr noundef nonnull %105, ptr noundef nonnull %106)
          to label %973 unwind label %997

973:                                              ; preds = %972
  %974 = getelementptr inbounds i8, ptr %104, i64 32
  %975 = getelementptr inbounds i8, ptr %96, i64 112
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %974, ptr noundef nonnull align 8 dereferenceable(8) %975)
          to label %976 unwind label %999

976:                                              ; preds = %973
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.264") align 8 %103, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %104)
          to label %977 unwind label %1001

977:                                              ; preds = %976
  %978 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %102, ptr noundef nonnull align 8 dereferenceable(48) %103)
          to label %979 unwind label %1003

979:                                              ; preds = %977
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %104) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #10
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %108, ptr noundef nonnull align 8 dereferenceable(96) %96)
          to label %980 unwind label %1009

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

981:                                              ; preds = %980
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %110, ptr noundef nonnull align 8 dereferenceable(24) %99)
          to label %982 unwind label %1013

982:                                              ; preds = %981
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %111, ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %107, ptr noundef nonnull %108, ptr noundef nonnull %109, ptr noundef nonnull %110, ptr noundef nonnull %111)
          to label %983 unwind label %1015

983:                                              ; preds = %982
  %984 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %107, i1 noundef zeroext false)
          to label %985 unwind label %1017

985:                                              ; preds = %983
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %107) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %111) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %108) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %102) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #10
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %97) #10
  br label %.thread1029

986:                                              ; preds = %._crit_edge1797
  %987 = landingpad { ptr, i32 }
          cleanup
  br label %1024

988:                                              ; preds = %967
  %989 = landingpad { ptr, i32 }
          cleanup
  br label %992

990:                                              ; preds = %968
  %991 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #10
  br label %992

992:                                              ; preds = %990, %988
  %.pn909 = phi { ptr, i32 } [ %991, %990 ], [ %989, %988 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %101) #10
  br label %1023

993:                                              ; preds = %970
  %994 = landingpad { ptr, i32 }
          cleanup
  br label %1008

995:                                              ; preds = %971
  %996 = landingpad { ptr, i32 }
          cleanup
  br label %1007

997:                                              ; preds = %972
  %998 = landingpad { ptr, i32 }
          cleanup
  br label %1006

999:                                              ; preds = %973
  %1000 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %104) #10
  br label %1006

1001:                                             ; preds = %976
  %1002 = landingpad { ptr, i32 }
          cleanup
  br label %1005

1003:                                             ; preds = %977
  %1004 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %103) #10
  br label %1005

1005:                                             ; preds = %1003, %1001
  %.pn911 = phi { ptr, i32 } [ %1004, %1003 ], [ %1002, %1001 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %104) #10
  br label %1006

1006:                                             ; preds = %1005, %999, %997
  %.pn911.pn = phi { ptr, i32 } [ %.pn911, %1005 ], [ %1000, %999 ], [ %998, %997 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %106) #10
  br label %1007

1007:                                             ; preds = %1006, %995
  %.pn911.pn.pn = phi { ptr, i32 } [ %.pn911.pn, %1006 ], [ %996, %995 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  br label %1008

1008:                                             ; preds = %1007, %993
  %.pn911.pn.pn.pn = phi { ptr, i32 } [ %.pn911.pn.pn, %1007 ], [ %994, %993 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %104) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %103) #10
  br label %1022

1009:                                             ; preds = %979
  %1010 = landingpad { ptr, i32 }
          cleanup
  br label %1022

1011:                                             ; preds = %980
  %1012 = landingpad { ptr, i32 }
          cleanup
  br label %1021

1013:                                             ; preds = %981
  %1014 = landingpad { ptr, i32 }
          cleanup
  br label %1020

1015:                                             ; preds = %982
  %1016 = landingpad { ptr, i32 }
          cleanup
  br label %1019

1017:                                             ; preds = %983
  %1018 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %107) #10
  br label %1019

1019:                                             ; preds = %1017, %1015
  %.pn916 = phi { ptr, i32 } [ %1018, %1017 ], [ %1016, %1015 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %111) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %110) #10
  br label %1020

1020:                                             ; preds = %1019, %1013
  %.pn916.pn = phi { ptr, i32 } [ %.pn916, %1019 ], [ %1014, %1013 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #10
  br label %1021

1021:                                             ; preds = %1020, %1011
  %.pn916.pn.pn = phi { ptr, i32 } [ %.pn916.pn, %1020 ], [ %1012, %1011 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %108) #10
  br label %1022

1022:                                             ; preds = %1021, %1009, %1008
  %.pn916.pn.pn.pn = phi { ptr, i32 } [ %.pn916.pn.pn, %1021 ], [ %1010, %1009 ], [ %.pn911.pn.pn.pn, %1008 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %102) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %102) #10
  br label %1023

1023:                                             ; preds = %1022, %992
  %.pn916.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn916.pn.pn.pn, %1022 ], [ %.pn909, %992 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %99) #10
  br label %1024

1024:                                             ; preds = %1023, %986
  %.pn916.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn916.pn.pn.pn.pn, %1023 ], [ %987, %986 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %99) #10
  br label %1025

1025:                                             ; preds = %1024, %966
  %.pn923.pn = phi { ptr, i32 } [ %.pn923, %966 ], [ %.pn916.pn.pn.pn.pn.pn, %1024 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %97) #10
  br label %1026

1026:                                             ; preds = %937, %949, %1025
  %.pn923.pn.pn = phi { ptr, i32 } [ %.pn923.pn, %1025 ], [ %950, %949 ], [ %938, %937 ]
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %96) #10
  br label %1027

1027:                                             ; preds = %1026, %935
  %.pn923.pn.pn.pn = phi { ptr, i32 } [ %.pn923.pn.pn, %1026 ], [ %936, %935 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %96) #10
  br label %1696

.thread1029:                                      ; preds = %947, %928, %985
  %.18 = phi i1 [ %984, %985 ], [ false, %928 ], [ false, %947 ]
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %96) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %96) #10
  br label %.thread997

.loopexit1224.split:                              ; preds = %.preheader1248.split, %1029, %1032
  %lpad.loopexit1871 = landingpad { ptr, i32 }
          cleanup
  br label %1696

.loopexit.split-lp1225:                           ; preds = %1067, %1070
  %lpad.loopexit.split-lp1227 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1028:                                             ; preds = %.preheader1248.split
  br i1 %763, label %.split1503, label %1029

1029:                                             ; preds = %1028
  %1030 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %755)
          to label %1031 unwind label %.loopexit1224.split

1031:                                             ; preds = %1029
  br i1 %1030, label %.split1503, label %1032

1032:                                             ; preds = %1031
  %1033 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %1034 unwind label %.loopexit1224.split

1034:                                             ; preds = %1032
  br i1 %1033, label %.split1503, label %.loopexit1258, !llvm.loop !84

.split1503:                                       ; preds = %1028, %1031, %1034
  %.pre = load ptr, ptr %8, align 8, !tbaa !5
  %.not889 = icmp eq ptr %.pre, null
  br i1 %.not889, label %1063, label %1035

1035:                                             ; preds = %.split1503
  %1036 = getelementptr inbounds i8, ptr %.pre, i64 8
  %1037 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1036, i64 noundef 0)
          to label %1038 unwind label %1046

1038:                                             ; preds = %1035
  %1039 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1037)
  %1040 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1039)
  %1041 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1040) #10
  %1042 = load ptr, ptr %762, align 8, !tbaa !85
  %1043 = getelementptr inbounds i8, ptr %1042, i64 32
  %1044 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1043) #10
  %.not890 = icmp eq i64 %1041, %1044
  br i1 %.not890, label %.preheader1196, label %.thread997

.preheader1196:                                   ; preds = %1038
  %1045 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1040) #10
  %.not8931788.not = icmp eq i64 %1045, 0
  br i1 %.not8931788.not, label %.loopexit1197, label %.lr.ph1790

1046:                                             ; preds = %1035
  %1047 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1048:                                             ; preds = %1059
  %1049 = add i32 %.07431789, 1
  %1050 = zext i32 %1049 to i64
  %1051 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1040) #10
  %.not893 = icmp ugt i64 %1051, %1050
  br i1 %.not893, label %.lr.ph1790, label %.loopexit1197, !llvm.loop !87

.lr.ph1790:                                       ; preds = %.preheader1196, %1048
  %1052 = phi i64 [ %1050, %1048 ], [ 0, %.preheader1196 ]
  %.07431789 = phi i32 [ %1049, %1048 ], [ 0, %.preheader1196 ]
  %1053 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1040, i64 noundef %1052) #10
  %1054 = load ptr, ptr %762, align 8, !tbaa !85
  %1055 = getelementptr inbounds i8, ptr %1054, i64 32
  %1056 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1055, i64 noundef %1052) #10
  %1057 = getelementptr inbounds i8, ptr %1056, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %112) #10
  store i64 0, ptr %112, align 8
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #10
  %1058 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1053, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %1057, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %1059 unwind label %1061

1059:                                             ; preds = %.lr.ph1790
  %1060 = icmp eq i32 %1058, 2
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #10
  br i1 %1060, label %.thread997, label %1048

1061:                                             ; preds = %.lr.ph1790
  %1062 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %112) #10
  br label %1696

1063:                                             ; preds = %.split1503
  store ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE11null_params, ptr %8, align 8, !tbaa !5
  br label %.loopexit1197

.loopexit1197:                                    ; preds = %1048, %.preheader1196, %1063
  %1064 = load ptr, ptr %762, align 8, !tbaa !85
  %1065 = getelementptr inbounds i8, ptr %1064, i64 76
  %1066 = load i32, ptr %1065, align 4, !tbaa !88
  switch i32 %1066, label %1073 [
    i32 3, label %1070
    i32 4, label %1067
  ]

1067:                                             ; preds = %.loopexit1197
  %1068 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %755)
          to label %1069 unwind label %.loopexit.split-lp1225

1069:                                             ; preds = %1067
  br i1 %1068, label %.thread997, label %1070

1070:                                             ; preds = %1069, %.loopexit1197
  %1071 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %754)
          to label %1072 unwind label %.loopexit.split-lp1225

1072:                                             ; preds = %1070
  br i1 %1071, label %.thread997, label %1073

1073:                                             ; preds = %1072, %.loopexit1197
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %113) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %114) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %115) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(8) %756)
          to label %1074 unwind label %1091

1074:                                             ; preds = %1073
  %1075 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %117, ptr noundef nonnull align 8 dereferenceable(24) %1075)
          to label %1076 unwind label %1093

1076:                                             ; preds = %1074
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull %116, ptr noundef nonnull %117)
          to label %1077 unwind label %1095

1077:                                             ; preds = %1076
  %1078 = getelementptr inbounds i8, ptr %115, i64 32
  %1079 = load ptr, ptr %762, align 8, !tbaa !85
  %1080 = getelementptr inbounds i8, ptr %1079, i64 56
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1078, ptr noundef nonnull align 8 dereferenceable(8) %1080)
          to label %1081 unwind label %1097

1081:                                             ; preds = %1077
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.264") align 8 %114, ptr noundef nonnull align 1 dereferenceable(7) @.str.7, ptr noundef nonnull align 8 dereferenceable(40) %115)
          to label %1082 unwind label %1099

1082:                                             ; preds = %1081
  %1083 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %113, ptr noundef nonnull align 8 dereferenceable(48) %114)
          to label %1084 unwind label %1101

1084:                                             ; preds = %1082
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %114) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %115) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %115) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %114) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %119, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1085 unwind label %1107

1085:                                             ; preds = %1084
  %1086 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %120, ptr noundef nonnull align 8 dereferenceable(24) %1086)
          to label %1087 unwind label %1109

1087:                                             ; preds = %1085
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %121, ptr noundef nonnull align 8 dereferenceable(48) %113) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %118, ptr noundef nonnull %119, ptr noundef nonnull %120, ptr noundef nonnull %121)
          to label %1088 unwind label %1111

1088:                                             ; preds = %1087
  %1089 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %118, i1 noundef zeroext false)
          to label %1090 unwind label %1113

1090:                                             ; preds = %1088
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %118) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %121) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %113) #10
  br label %.thread997

1091:                                             ; preds = %1073
  %1092 = landingpad { ptr, i32 }
          cleanup
  br label %1106

1093:                                             ; preds = %1074
  %1094 = landingpad { ptr, i32 }
          cleanup
  br label %1105

1095:                                             ; preds = %1076
  %1096 = landingpad { ptr, i32 }
          cleanup
  br label %1104

1097:                                             ; preds = %1077
  %1098 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #10
  br label %1104

1099:                                             ; preds = %1081
  %1100 = landingpad { ptr, i32 }
          cleanup
  br label %1103

1101:                                             ; preds = %1082
  %1102 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %114) #10
  br label %1103

1103:                                             ; preds = %1101, %1099
  %.pn894 = phi { ptr, i32 } [ %1102, %1101 ], [ %1100, %1099 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %115) #10
  br label %1104

1104:                                             ; preds = %1103, %1097, %1095
  %.pn894.pn = phi { ptr, i32 } [ %.pn894, %1103 ], [ %1098, %1097 ], [ %1096, %1095 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %117) #10
  br label %1105

1105:                                             ; preds = %1104, %1093
  %.pn894.pn.pn = phi { ptr, i32 } [ %.pn894.pn, %1104 ], [ %1094, %1093 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #10
  br label %1106

1106:                                             ; preds = %1105, %1091
  %.pn894.pn.pn.pn = phi { ptr, i32 } [ %.pn894.pn.pn, %1105 ], [ %1092, %1091 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %115) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %114) #10
  br label %1117

1107:                                             ; preds = %1084
  %1108 = landingpad { ptr, i32 }
          cleanup
  br label %1117

1109:                                             ; preds = %1085
  %1110 = landingpad { ptr, i32 }
          cleanup
  br label %1116

1111:                                             ; preds = %1087
  %1112 = landingpad { ptr, i32 }
          cleanup
  br label %1115

1113:                                             ; preds = %1088
  %1114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %118) #10
  br label %1115

1115:                                             ; preds = %1113, %1111
  %.pn899 = phi { ptr, i32 } [ %1114, %1113 ], [ %1112, %1111 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %121) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %120) #10
  br label %1116

1116:                                             ; preds = %1115, %1109
  %.pn899.pn = phi { ptr, i32 } [ %.pn899, %1115 ], [ %1110, %1109 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #10
  br label %1117

1117:                                             ; preds = %1116, %1107, %1106
  %.pn899.pn.pn = phi { ptr, i32 } [ %.pn899.pn, %1116 ], [ %1108, %1107 ], [ %.pn894.pn.pn.pn, %1106 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %113) #10
  br label %1696

.split:                                           ; preds = %1119
  %1118 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1119:                                             ; preds = %.preheader1250.split.split
  %1120 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %753)
          to label %1121 unwind label %.split

1121:                                             ; preds = %1119
  br i1 %1120, label %.split1445, label %.loopexit1258

.split1445:                                       ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %122) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %122) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %123) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %124) #10
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %125, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1122 unwind label %1149

1122:                                             ; preds = %.split1445
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %124, ptr noundef nonnull %125)
          to label %1123 unwind label %1151

1123:                                             ; preds = %1122
  %1124 = getelementptr inbounds i8, ptr %124, i64 32
  %1125 = load ptr, ptr %759, align 8, !tbaa !124
  %1126 = getelementptr inbounds i8, ptr %1125, i64 48
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1124, ptr noundef nonnull align 8 dereferenceable(8) %1126)
          to label %1127 unwind label %1153

1127:                                             ; preds = %1123
  invoke void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.264") align 8 %123, ptr noundef nonnull align 1 dereferenceable(6) @.str.9, ptr noundef nonnull align 8 dereferenceable(40) %124)
          to label %1128 unwind label %1155

1128:                                             ; preds = %1127
  %1129 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef nonnull align 8 dereferenceable(48) %123)
          to label %1130 unwind label %1157

1130:                                             ; preds = %1128
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %123) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %124) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %124) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %123) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %126) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %127) #10
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %128, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1131 unwind label %1162

1131:                                             ; preds = %1130
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull %128)
          to label %1132 unwind label %1164

1132:                                             ; preds = %1131
  %1133 = getelementptr inbounds i8, ptr %127, i64 32
  %1134 = load ptr, ptr %759, align 8, !tbaa !124
  %1135 = getelementptr inbounds i8, ptr %1134, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %1133, ptr noundef nonnull align 8 dereferenceable(8) %1135)
          to label %1136 unwind label %1166

1136:                                             ; preds = %1132
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.264") align 8 %126, ptr noundef nonnull align 1 dereferenceable(7) @.str.10, ptr noundef nonnull align 8 dereferenceable(40) %127)
          to label %1137 unwind label %1168

1137:                                             ; preds = %1136
  %1138 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %122, ptr noundef nonnull align 8 dereferenceable(48) %126)
          to label %1139 unwind label %1170

1139:                                             ; preds = %1137
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %126) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %127) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %127) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %126) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %129) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %129)
          to label %1140 unwind label %1175

1140:                                             ; preds = %1139
  %1141 = load i32, ptr @gTargetVersion, align 4, !tbaa !10
  %1142 = icmp sgt i32 %1141, 3
  br i1 %1142, label %1143, label %1181

1143:                                             ; preds = %1140
  %1144 = load ptr, ptr %759, align 8, !tbaa !124
  %1145 = getelementptr inbounds i8, ptr %1144, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %130, ptr noundef nonnull align 8 dereferenceable(8) %1145)
          to label %1146 unwind label %1177

1146:                                             ; preds = %1143
  %1147 = getelementptr inbounds i8, ptr %129, i64 8
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1147, ptr noundef nonnull %130)
          to label %1148 unwind label %1179

1148:                                             ; preds = %1146
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #10
  br label %1181

1149:                                             ; preds = %.split1445
  %1150 = landingpad { ptr, i32 }
          cleanup
  br label %1161

1151:                                             ; preds = %1122
  %1152 = landingpad { ptr, i32 }
          cleanup
  br label %1160

1153:                                             ; preds = %1123
  %1154 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %124) #10
  br label %1160

1155:                                             ; preds = %1127
  %1156 = landingpad { ptr, i32 }
          cleanup
  br label %1159

1157:                                             ; preds = %1128
  %1158 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %123) #10
  br label %1159

1159:                                             ; preds = %1157, %1155
  %.pn874 = phi { ptr, i32 } [ %1158, %1157 ], [ %1156, %1155 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %124) #10
  br label %1160

1160:                                             ; preds = %1159, %1153, %1151
  %.pn874.pn = phi { ptr, i32 } [ %.pn874, %1159 ], [ %1154, %1153 ], [ %1152, %1151 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #10
  br label %1161

1161:                                             ; preds = %1160, %1149
  %.pn874.pn.pn = phi { ptr, i32 } [ %.pn874.pn, %1160 ], [ %1150, %1149 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %124) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %123) #10
  br label %1196

1162:                                             ; preds = %1130
  %1163 = landingpad { ptr, i32 }
          cleanup
  br label %1174

1164:                                             ; preds = %1131
  %1165 = landingpad { ptr, i32 }
          cleanup
  br label %1173

1166:                                             ; preds = %1132
  %1167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %127) #10
  br label %1173

1168:                                             ; preds = %1136
  %1169 = landingpad { ptr, i32 }
          cleanup
  br label %1172

1170:                                             ; preds = %1137
  %1171 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %126) #10
  br label %1172

1172:                                             ; preds = %1170, %1168
  %.pn878 = phi { ptr, i32 } [ %1171, %1170 ], [ %1169, %1168 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %127) #10
  br label %1173

1173:                                             ; preds = %1172, %1166, %1164
  %.pn878.pn = phi { ptr, i32 } [ %.pn878, %1172 ], [ %1167, %1166 ], [ %1165, %1164 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  br label %1174

1174:                                             ; preds = %1173, %1162
  %.pn878.pn.pn = phi { ptr, i32 } [ %.pn878.pn, %1173 ], [ %1163, %1162 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %127) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %126) #10
  br label %1196

1175:                                             ; preds = %1139
  %1176 = landingpad { ptr, i32 }
          cleanup
  br label %1195

1177:                                             ; preds = %1181, %1143
  %1178 = landingpad { ptr, i32 }
          cleanup
  br label %1194

1179:                                             ; preds = %1146
  %1180 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %130) #10
  br label %1194

1181:                                             ; preds = %1148, %1140
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %132, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1182 unwind label %1177

1182:                                             ; preds = %1181
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %133, ptr noundef nonnull align 8 dereferenceable(24) %129)
          to label %1183 unwind label %1186

1183:                                             ; preds = %1182
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %134, ptr noundef nonnull align 8 dereferenceable(48) %122) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %131, ptr noundef nonnull %132, ptr noundef nonnull %133, ptr noundef nonnull %134)
          to label %1184 unwind label %1188

1184:                                             ; preds = %1183
  %1185 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %131, i1 noundef zeroext false)
          to label %1197 unwind label %1190

1186:                                             ; preds = %1182
  %1187 = landingpad { ptr, i32 }
          cleanup
  br label %1193

1188:                                             ; preds = %1183
  %1189 = landingpad { ptr, i32 }
          cleanup
  br label %1192

1190:                                             ; preds = %1184
  %1191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %131) #10
  br label %1192

1192:                                             ; preds = %1190, %1188
  %.pn882 = phi { ptr, i32 } [ %1191, %1190 ], [ %1189, %1188 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %134) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #10
  br label %1193

1193:                                             ; preds = %1192, %1186
  %.pn882.pn = phi { ptr, i32 } [ %.pn882, %1192 ], [ %1187, %1186 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  br label %1194

1194:                                             ; preds = %1193, %1179, %1177
  %.pn882.pn.pn = phi { ptr, i32 } [ %.pn882.pn, %1193 ], [ %1178, %1177 ], [ %1180, %1179 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #10
  br label %1195

1195:                                             ; preds = %1194, %1175
  %.pn882.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn, %1194 ], [ %1176, %1175 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %129) #10
  br label %1196

1196:                                             ; preds = %1195, %1174, %1161
  %.pn882.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn882.pn.pn.pn, %1195 ], [ %.pn878.pn.pn, %1174 ], [ %.pn874.pn.pn, %1161 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %122) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %122) #10
  br label %1696

1197:                                             ; preds = %1184
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %131) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %134) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %133) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %129) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %122) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %122) #10
  br label %.thread997

.lr.ph1438:                                       ; preds = %.lr.ph1781
  %1198 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %1199 = getelementptr inbounds i8, ptr %1198, i64 8
  %1200 = getelementptr inbounds i8, ptr %1198, i64 16
  %1201 = getelementptr inbounds i8, ptr %1198, i64 144
  %1202 = getelementptr inbounds i8, ptr %1198, i64 136
  %1203 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %1199)
          to label %1204 unwind label %.loopexit1231

.loopexit1231:                                    ; preds = %.lr.ph1438, %1205
  %lpad.loopexit1233 = landingpad { ptr, i32 }
          cleanup
  br label %1696

.loopexit.split-lp1232:                           ; preds = %1209
  %lpad.loopexit.split-lp1234 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1204:                                             ; preds = %.lr.ph1438
  br i1 %1203, label %1205, label %1217

1205:                                             ; preds = %1204
  %1206 = load ptr, ptr %8, align 8, !tbaa !5
  %1207 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %1200, ptr noundef %1206)
          to label %1208 unwind label %.loopexit1231

1208:                                             ; preds = %1205
  br i1 %1207, label %1209, label %1217

1209:                                             ; preds = %1208
  %1210 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1198) #10
  %1211 = getelementptr inbounds i8, ptr %1198, i64 40
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %135, ptr noundef %1210, ptr noundef nonnull %4, ptr noundef nonnull %1200, ptr noundef nonnull %1211)
          to label %1212 unwind label %.loopexit.split-lp1232

1212:                                             ; preds = %1209
  %1213 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %135, i1 noundef zeroext false)
          to label %1214 unwind label %1215

1214:                                             ; preds = %1212
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %135) #10
  br label %.thread997

1215:                                             ; preds = %1212
  %1216 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %135) #10
  br label %1696

1217:                                             ; preds = %1208, %1204
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %136) #10
  %1218 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1201) #10
  store ptr %1218, ptr %136, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %137) #10
  %1219 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1201) #10
  store ptr %1219, ptr %137, align 8
  %1220 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br i1 %1220, label %.lr.ph1435, label %._crit_edge1436

.lr.ph1435:                                       ; preds = %1217, %1234
  %1221 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #10
  %1222 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %1221)
          to label %1223 unwind label %.loopexit1200

1223:                                             ; preds = %.lr.ph1435
  br i1 %1222, label %1224, label %1234

1224:                                             ; preds = %1223
  %1225 = getelementptr inbounds i8, ptr %1221, i64 8
  %1226 = load ptr, ptr %8, align 8, !tbaa !5
  %1227 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %1225, ptr noundef %1226)
          to label %1228 unwind label %.loopexit1200

1228:                                             ; preds = %1224
  br i1 %1227, label %1229, label %1234

1229:                                             ; preds = %1228
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %138, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef nonnull %1225, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %1230 unwind label %.loopexit.split-lp1201

1230:                                             ; preds = %1229
  %1231 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %138, i1 noundef zeroext false)
          to label %.thread1068 unwind label %1232

.loopexit1200:                                    ; preds = %.lr.ph1435, %1224
  %lpad.loopexit1202 = landingpad { ptr, i32 }
          cleanup
  br label %1237

.loopexit.split-lp1201:                           ; preds = %1229
  %lpad.loopexit.split-lp1203 = landingpad { ptr, i32 }
          cleanup
  br label %1237

1232:                                             ; preds = %1230
  %1233 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %138) #10
  br label %1237

.thread1068:                                      ; preds = %1230
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %138) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #10
  br label %.thread997

1234:                                             ; preds = %1228, %1223
  %1235 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #10
  %1236 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %137) #10
  br i1 %1236, label %.lr.ph1435, label %._crit_edge1436

1237:                                             ; preds = %.loopexit1200, %.loopexit.split-lp1201, %1232
  %.pn867 = phi { ptr, i32 } [ %1233, %1232 ], [ %lpad.loopexit1202, %.loopexit1200 ], [ %lpad.loopexit.split-lp1203, %.loopexit.split-lp1201 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #10
  br label %1696

._crit_edge1436:                                  ; preds = %1234, %1217
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %137) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %136) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %139) #10
  store i8 0, ptr %139, align 1, !tbaa !126
  %1238 = load ptr, ptr %8, align 8, !tbaa !5
  %.not869.not = icmp eq ptr %1238, null
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %141) #10
  br i1 %.not869.not, label %.thread1072, label %1239

.thread1072:                                      ; preds = %._crit_edge1436
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %141) #10
  br label %..loopexit1230_crit_edge

1239:                                             ; preds = %._crit_edge1436
  %1240 = load ptr, ptr %1202, align 8, !tbaa !127
  store ptr %1198, ptr %141, align 8, !tbaa !5
  store ptr %4, ptr %750, align 8, !tbaa !5
  store ptr %139, ptr %751, align 8, !tbaa !5
  store ptr %5, ptr %752, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPS2_RKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(32) %141)
          to label %1241 unwind label %1246

1241:                                             ; preds = %1239
  %1242 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %1238, ptr noundef nonnull align 8 dereferenceable(400) %1240, ptr noundef nonnull align 8 dereferenceable(8) %1199, ptr noundef nonnull align 8 dereferenceable(24) %1200, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull %140)
          to label %1243 unwind label %1248

1243:                                             ; preds = %1241
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %141) #10
  br i1 %1242, label %.thread1073, label %..loopexit1230_crit_edge

.thread1073:                                      ; preds = %1243
  %1244 = load i8, ptr %139, align 1, !range !148
  %1245 = trunc nuw i8 %1244 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #10
  br label %.thread997

..loopexit1230_crit_edge:                         ; preds = %.thread1072, %1243
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #10
  br label %.loopexit1258

1246:                                             ; preds = %1239
  %1247 = landingpad { ptr, i32 }
          cleanup
  br label %1250

1248:                                             ; preds = %1241
  %1249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #10
  br label %1250

1250:                                             ; preds = %1248, %1246
  %.pn870 = phi { ptr, i32 } [ %1249, %1248 ], [ %1247, %1246 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %141) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %139) #10
  br label %1696

.lr.ph1432:                                       ; preds = %.lr.ph1781
  %1251 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %1252 = getelementptr inbounds i8, ptr %1251, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %142) #10
  %1253 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1252) #10
  store ptr %1253, ptr %142, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %143) #10
  %1254 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1252) #10
  store ptr %1254, ptr %143, align 8
  %1255 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  br i1 %1255, label %.lr.ph1429, label %..loopexit1236_crit_edge

.lr.ph1429:                                       ; preds = %.lr.ph1432, %1290
  %1256 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %142) #10
  %1257 = getelementptr inbounds i8, ptr %1256, i64 8
  %1258 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %1257)
          to label %1259 unwind label %.loopexit1205

1259:                                             ; preds = %.lr.ph1429
  br i1 %1258, label %1260, label %1273

1260:                                             ; preds = %1259
  %1261 = getelementptr inbounds i8, ptr %1256, i64 16
  %1262 = load ptr, ptr %8, align 8, !tbaa !5
  %1263 = invoke noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %1261, ptr noundef %1262)
          to label %1264 unwind label %.loopexit1205

1264:                                             ; preds = %1260
  br i1 %1263, label %1265, label %1273

1265:                                             ; preds = %1264
  %1266 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1256) #10
  %1267 = getelementptr inbounds i8, ptr %1256, i64 40
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %144, ptr noundef %1266, ptr noundef nonnull %4, ptr noundef nonnull %1261, ptr noundef nonnull %1267)
          to label %1268 unwind label %.loopexit.split-lp1206

1268:                                             ; preds = %1265
  %1269 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %144, i1 noundef zeroext false)
          to label %1270 unwind label %1271

1270:                                             ; preds = %1268
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %144) #10
  br label %1294

.loopexit1205:                                    ; preds = %.lr.ph1429, %1260
  %lpad.loopexit1207 = landingpad { ptr, i32 }
          cleanup
  br label %1293

.loopexit.split-lp1206:                           ; preds = %1265
  %lpad.loopexit.split-lp1208 = landingpad { ptr, i32 }
          cleanup
  br label %1293

1271:                                             ; preds = %1268
  %1272 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %144) #10
  br label %1293

1273:                                             ; preds = %1264, %1259
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %145) #10
  store i8 0, ptr %145, align 1, !tbaa !126
  %1274 = load ptr, ptr %8, align 8, !tbaa !5
  %.not862.not = icmp eq ptr %1274, null
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %147) #10
  br i1 %.not862.not, label %.thread1084, label %1275

.thread1084:                                      ; preds = %1273
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %147) #10
  br label %1290

1275:                                             ; preds = %1273
  %1276 = getelementptr inbounds i8, ptr %1256, i64 136
  %1277 = load ptr, ptr %1276, align 8, !tbaa !149
  store ptr %1256, ptr %147, align 8, !tbaa !5
  store ptr %4, ptr %747, align 8, !tbaa !5
  store ptr %145, ptr %748, align 8, !tbaa !5
  store ptr %5, ptr %749, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPS2_RKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(32) %147)
          to label %1278 unwind label %1285

1278:                                             ; preds = %1275
  %1279 = getelementptr inbounds i8, ptr %1256, i64 16
  %1280 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %1274, ptr noundef nonnull align 8 dereferenceable(400) %1277, ptr noundef nonnull align 8 dereferenceable(8) %1257, ptr noundef nonnull align 8 dereferenceable(24) %1279, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull %146)
          to label %1281 unwind label %1287

1281:                                             ; preds = %1278
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %147) #10
  br i1 %1280, label %1282, label %1290

1282:                                             ; preds = %1281
  %1283 = load i8, ptr %145, align 1, !range !148
  %1284 = trunc nuw i8 %1283 to i1
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #10
  br label %1294

1285:                                             ; preds = %1275
  %1286 = landingpad { ptr, i32 }
          cleanup
  br label %1289

1287:                                             ; preds = %1278
  %1288 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #10
  br label %1289

1289:                                             ; preds = %1287, %1285
  %.pn863 = phi { ptr, i32 } [ %1288, %1287 ], [ %1286, %1285 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %147) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #10
  br label %1293

1290:                                             ; preds = %.thread1084, %1281
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %145) #10
  %1291 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %142) #10
  %1292 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %142, ptr noundef nonnull align 8 dereferenceable(8) %143) #10
  br i1 %1292, label %.lr.ph1429, label %..loopexit1236_crit_edge

1293:                                             ; preds = %.loopexit1205, %.loopexit.split-lp1206, %1289, %1271
  %.pn865 = phi { ptr, i32 } [ %1272, %1271 ], [ %.pn863, %1289 ], [ %lpad.loopexit1207, %.loopexit1205 ], [ %lpad.loopexit.split-lp1208, %.loopexit.split-lp1206 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #10
  br label %1696

..loopexit1236_crit_edge:                         ; preds = %1290, %.lr.ph1432
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #10
  br label %.loopexit1258

1294:                                             ; preds = %1270, %1282
  %.41.ph = phi i1 [ %1284, %1282 ], [ %1269, %1270 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %143) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %142) #10
  br label %.thread997

.lr.ph1424:                                       ; preds = %.lr.ph1781
  %1295 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %757)
  %1296 = getelementptr inbounds i8, ptr %1295, i64 88
  %1297 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1296)
  br i1 %1297, label %1300, label %.loopexit1258

1298:                                             ; preds = %1306
  %1299 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1300:                                             ; preds = %.lr.ph1424
  %1301 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1295)
  br i1 %1301, label %1314, label %1302

1302:                                             ; preds = %1300
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %148) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1303 unwind label %1307

1303:                                             ; preds = %1302
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %150) #10
  store ptr %4, ptr %150, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %149, ptr noundef nonnull align 8 dereferenceable(8) %150) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull %149)
          to label %1304 unwind label %1309

1304:                                             ; preds = %1303
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #10
  %1305 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1305, ptr noundef nonnull @.str)
          to label %1306 unwind label %1312

1306:                                             ; preds = %1304
  invoke void @__cxa_throw(ptr nonnull %1305, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1698 unwind label %1298

1307:                                             ; preds = %1302
  %1308 = landingpad { ptr, i32 }
          cleanup
  br label %1311

1309:                                             ; preds = %1303
  %1310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %149) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %150) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %148) #10
  br label %1311

1311:                                             ; preds = %1309, %1307
  %.pn832 = phi { ptr, i32 } [ %1310, %1309 ], [ %1308, %1307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %148) #10
  br label %1696

1312:                                             ; preds = %1304
  %1313 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1305) #10
  br label %1696

1314:                                             ; preds = %1300
  %1315 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1295)
  %1316 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1317 unwind label %1335

1317:                                             ; preds = %1314
  br i1 %1316, label %1318, label %1337

1318:                                             ; preds = %1317
  %1319 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1320 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1319, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1321 unwind label %1335

1321:                                             ; preds = %1318
  %1322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1320, ptr noundef nonnull @.str.11)
          to label %1323 unwind label %1335

1323:                                             ; preds = %1321
  %1324 = getelementptr inbounds i8, ptr %1315, i64 40
  %1325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1322, ptr noundef nonnull align 8 dereferenceable(8) %1324)
          to label %1326 unwind label %1335

1326:                                             ; preds = %1323
  %1327 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1325, ptr noundef nonnull @.str.12)
          to label %1328 unwind label %1335

1328:                                             ; preds = %1326
  %1329 = getelementptr inbounds i8, ptr %1315, i64 8
  %1330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1327, ptr noundef nonnull align 8 dereferenceable(32) %1329)
          to label %1331 unwind label %1335

1331:                                             ; preds = %1328
  %1332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1330, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1333 unwind label %1335

1333:                                             ; preds = %1331
  %1334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1332, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1337 unwind label %1335

1335:                                             ; preds = %1333, %1331, %1328, %1326, %1323, %1321, %1318, %1314
  %1336 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1337:                                             ; preds = %1333, %1317
  %1338 = load ptr, ptr %740, align 8, !tbaa !45
  %1339 = getelementptr inbounds i8, ptr %1315, i64 8
  %1340 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1338, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %1339)
          to label %1341 unwind label %.loopexit1238

1341:                                             ; preds = %1337
  %1342 = getelementptr inbounds i8, ptr %1340, i64 136
  %1343 = getelementptr inbounds i8, ptr %1315, i64 40
  %1344 = invoke noundef i64 @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE5countERS8_(ptr noundef nonnull align 8 dereferenceable(56) %1342, ptr noundef nonnull align 8 dereferenceable(8) %1343)
          to label %1345 unwind label %.loopexit1238

1345:                                             ; preds = %1341
  %.not834 = icmp eq i64 %1344, 0
  br i1 %.not834, label %1346, label %1358

1346:                                             ; preds = %1345
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %151) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %1347 unwind label %1351

1347:                                             ; preds = %1346
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %153) #10
  store ptr %1315, ptr %153, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %152, ptr noundef nonnull align 8 dereferenceable(8) %153) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %151, ptr noundef nonnull %152)
          to label %1348 unwind label %1353

1348:                                             ; preds = %1347
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #10
  %1349 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1349, ptr noundef nonnull @.str)
          to label %1350 unwind label %1356

1350:                                             ; preds = %1348
  invoke void @__cxa_throw(ptr nonnull %1349, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %1698 unwind label %.loopexit.split-lp1239

.loopexit1238:                                    ; preds = %1337, %1341
  %lpad.loopexit1240 = landingpad { ptr, i32 }
          cleanup
  br label %1696

.loopexit.split-lp1239:                           ; preds = %1350
  %lpad.loopexit.split-lp1241 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1351:                                             ; preds = %1346
  %1352 = landingpad { ptr, i32 }
          cleanup
  br label %1355

1353:                                             ; preds = %1347
  %1354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %152) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %153) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %151) #10
  br label %1355

1355:                                             ; preds = %1353, %1351
  %.pn835 = phi { ptr, i32 } [ %1354, %1353 ], [ %1352, %1351 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %151) #10
  br label %1696

1356:                                             ; preds = %1348
  %1357 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %1349) #10
  br label %1696

1358:                                             ; preds = %1345
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %154) #10
  %1359 = invoke ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE4findERS8_(ptr noundef nonnull align 8 dereferenceable(56) %1342, ptr noundef nonnull align 8 dereferenceable(8) %1343)
          to label %1360 unwind label %1368

1360:                                             ; preds = %1358
  store ptr %1359, ptr %154, align 8
  %1361 = call noundef ptr @_ZNKSt8__detail20_Node_const_iteratorISt4pairIK8RcStringN3HIR14AssociatedTypeEELb0ELb0EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %154) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #10
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %155) #10
  %1362 = getelementptr inbounds i8, ptr %1315, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %155, ptr noundef nonnull %1315, ptr noundef nonnull %1362, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1363 unwind label %1370

1363:                                             ; preds = %1360
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %156) #10
  store ptr %1, ptr %156, align 8, !tbaa !5
  store ptr %155, ptr %741, align 8, !tbaa !5
  store ptr %0, ptr %742, align 8, !tbaa !151
  store ptr %2, ptr %743, align 8, !tbaa !5
  store ptr %8, ptr %744, align 8, !tbaa !5
  store ptr %5, ptr %745, align 8, !tbaa !5
  store ptr %4, ptr %746, align 8, !tbaa !5
  %1364 = getelementptr inbounds i8, ptr %1361, i64 112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %157) #10
  %1365 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1364) #10
  store ptr %1365, ptr %157, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %158) #10
  %1366 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1364) #10
  store ptr %1366, ptr %158, align 8
  %1367 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #10
  br i1 %1367, label %.lr.ph, label %._crit_edge

1368:                                             ; preds = %1358
  %1369 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %154) #10
  br label %1696

1370:                                             ; preds = %1360
  %1371 = landingpad { ptr, i32 }
          cleanup
  br label %1554

.lr.ph:                                           ; preds = %1363, %1377
  %1372 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  %1373 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %156, ptr noundef nonnull align 8 dereferenceable(144) %1372)
          to label %1374 unwind label %1375

1374:                                             ; preds = %.lr.ph
  br i1 %1373, label %.thread1102, label %1377

.thread1102:                                      ; preds = %1374
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #10
  br label %.thread1139

1375:                                             ; preds = %.lr.ph
  %1376 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #10
  br label %1553

1377:                                             ; preds = %1374
  %1378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %157) #10
  %1379 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %158) #10
  br i1 %1379, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %1377, %1363
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %158) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %157) #10
  %1380 = getelementptr inbounds i8, ptr %1340, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %159) #10
  %1381 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1380) #10
  store ptr %1381, ptr %159, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %160) #10
  %1382 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1380) #10
  store ptr %1382, ptr %160, align 8
  %1383 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  br i1 %1383, label %.lr.ph1408, label %._crit_edge1409

.lr.ph1408:                                       ; preds = %._crit_edge, %.thread1109
  %1384 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %159) #10
  %1385 = call noundef zeroext i1 @_ZNK3HIR12GenericBound13is_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %1384)
  br i1 %1385, label %1386, label %.thread1109

1386:                                             ; preds = %.lr.ph1408
  %1387 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %1384)
  %1388 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1389 unwind label %1402

1389:                                             ; preds = %1386
  br i1 %1388, label %1390, label %1404

1390:                                             ; preds = %1389
  %1391 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1392 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1391, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1393 unwind label %1402

1393:                                             ; preds = %1390
  %1394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1392, ptr noundef nonnull @.str.13)
          to label %1395 unwind label %1402

1395:                                             ; preds = %1393
  %1396 = getelementptr inbounds i8, ptr %1387, i64 8
  %1397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1394, ptr noundef nonnull align 8 dereferenceable(8) %1396)
          to label %1398 unwind label %1402

1398:                                             ; preds = %1395
  %1399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1397, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1400 unwind label %1402

1400:                                             ; preds = %1398
  %1401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1399, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1404 unwind label %1402

1402:                                             ; preds = %1434, %1400, %1398, %1395, %1393, %1390, %1386
  %1403 = landingpad { ptr, i32 }
          cleanup
  br label %1440

1404:                                             ; preds = %1400, %1389
  %1405 = getelementptr inbounds i8, ptr %1387, i64 8
  %1406 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1405)
  %1407 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1406)
  br i1 %1407, label %1408, label %.thread1109

1408:                                             ; preds = %1404
  %1409 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1405)
  %1410 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1409)
  %1411 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1410)
  br i1 %1411, label %1412, label %.thread1109

1412:                                             ; preds = %1408
  %1413 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1405)
  %1414 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1413)
  %1415 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1414)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %161) #10
  invoke void @_ZN3HIR7TypeRef8new_selfEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %161)
          to label %1416 unwind label %1421

1416:                                             ; preds = %1412
  %1417 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1415, ptr noundef nonnull align 8 dereferenceable(8) %161)
          to label %1418 unwind label %1423

1418:                                             ; preds = %1416
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #10
  br i1 %1417, label %.thread1109, label %1426

1419:                                             ; preds = %1430, %1426
  %1420 = landingpad { ptr, i32 }
          cleanup
  br label %1440

1421:                                             ; preds = %1412
  %1422 = landingpad { ptr, i32 }
          cleanup
  br label %1425

1423:                                             ; preds = %1416
  %1424 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %161) #10
  br label %1425

1425:                                             ; preds = %1423, %1421
  %.pn837 = phi { ptr, i32 } [ %1424, %1423 ], [ %1422, %1421 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %161) #10
  br label %1440

1426:                                             ; preds = %1418
  %1427 = getelementptr inbounds i8, ptr %1415, i64 8
  %1428 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1427, ptr noundef nonnull align 8 dereferenceable(8) %1339)
          to label %1429 unwind label %1419

1429:                                             ; preds = %1426
  br i1 %1428, label %.thread1109, label %1430

1430:                                             ; preds = %1429
  %1431 = getelementptr inbounds i8, ptr %1415, i64 40
  %1432 = invoke noundef zeroext i1 @_ZNK8RcStringneERKS_(ptr noundef nonnull align 8 dereferenceable(8) %1431, ptr noundef nonnull align 8 dereferenceable(8) %1343)
          to label %1433 unwind label %1419

1433:                                             ; preds = %1430
  br i1 %1432, label %.thread1109, label %1434

1434:                                             ; preds = %1433
  %1435 = getelementptr inbounds i8, ptr %1387, i64 16
  %1436 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %156, ptr noundef nonnull align 8 dereferenceable(144) %1435)
          to label %1437 unwind label %1402

1437:                                             ; preds = %1434
  br i1 %1436, label %.thread1143, label %.thread1109

.thread1143:                                      ; preds = %1437
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %156) #10
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %155) #10
  br label %.thread997

.thread1109:                                      ; preds = %1433, %1429, %1418, %1437, %1408, %1404, %.lr.ph1408
  %1438 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %159) #10
  %1439 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %159, ptr noundef nonnull align 8 dereferenceable(8) %160) #10
  br i1 %1439, label %.lr.ph1408, label %._crit_edge1409

1440:                                             ; preds = %1419, %1425, %1402
  %.pn841 = phi { ptr, i32 } [ %1403, %1402 ], [ %1420, %1419 ], [ %.pn837, %1425 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #10
  br label %1553

._crit_edge1409:                                  ; preds = %.thread1109, %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %160) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %159) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %162) #10
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %163) #10
  store ptr %1315, ptr %163, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE9push_backEOS5_(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(8) %163)
          to label %1441 unwind label %1444

1441:                                             ; preds = %._crit_edge1409
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #10
  %1442 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1315)
  %1443 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1442)
  %.not843 = icmp eq ptr %1443, null
  br i1 %.not843, label %1454, label %1446

1444:                                             ; preds = %._crit_edge1409
  %1445 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %163) #10
  br label %1550

1446:                                             ; preds = %1441
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %164) #10
  %1447 = call noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1443)
  store ptr %1447, ptr %164, align 8, !tbaa !5
  %.not844 = icmp eq ptr %1447, null
  br i1 %.not844, label %1453, label %1448

1448:                                             ; preds = %1446
  invoke void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE9push_backERKS5_(ptr noundef nonnull align 8 dereferenceable(24) %162, ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %1449 unwind label %1451

1449:                                             ; preds = %1448
  %1450 = load ptr, ptr %164, align 8, !tbaa !5
  br label %1453

1451:                                             ; preds = %1448
  %1452 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #10
  br label %1550

1453:                                             ; preds = %1449, %1446
  %.0733 = phi ptr [ %1450, %1449 ], [ %1315, %1446 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %164) #10
  br label %1454

1454:                                             ; preds = %1441, %1453
  %.1734 = phi ptr [ %.0733, %1453 ], [ %1315, %1441 ]
  %1455 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.1734)
  %1456 = call noundef ptr @_ZNK3HIR8TypeData14opt_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1455)
  %.not845 = icmp eq ptr %1456, null
  br i1 %.not845, label %.thread1128, label %1457

.thread1128:                                      ; preds = %1454
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %162) #10
  br label %1538

1457:                                             ; preds = %1454
  %1458 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1459 unwind label %1471

1459:                                             ; preds = %1457
  br i1 %1458, label %1460, label %1473

1460:                                             ; preds = %1459
  %1461 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1461, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1463 unwind label %1471

1463:                                             ; preds = %1460
  %1464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1462, ptr noundef nonnull @.str.14)
          to label %1465 unwind label %1471

1465:                                             ; preds = %1463
  %1466 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1464, ptr noundef nonnull align 8 dereferenceable(8) %.1734)
          to label %1467 unwind label %1471

1467:                                             ; preds = %1465
  %1468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1466, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1469 unwind label %1471

1469:                                             ; preds = %1467
  %1470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1468, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1473 unwind label %1471

1471:                                             ; preds = %1469, %1467, %1465, %1463, %1460, %1457
  %1472 = landingpad { ptr, i32 }
          cleanup
  br label %1550

1473:                                             ; preds = %1469, %1459
  %1474 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  br i1 %1474, label %1475, label %1476

1475:                                             ; preds = %1473
  call void @__assert_fail(ptr noundef nonnull @.str.15, ptr noundef nonnull @.str.5, i32 noundef 536, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #12
  unreachable

1476:                                             ; preds = %1473
  %1477 = getelementptr inbounds i8, ptr %1456, i64 8
  br label %1478

1478:                                             ; preds = %1521, %1476
  %.0728 = phi ptr [ %1477, %1476 ], [ %1522, %1521 ]
  %1479 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  %1480 = load ptr, ptr %1479, align 8, !tbaa !5
  %1481 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1482 unwind label %1500

1482:                                             ; preds = %1478
  br i1 %1481, label %1483, label %1502

1483:                                             ; preds = %1482
  %1484 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1485 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1484, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1486 unwind label %1500

1486:                                             ; preds = %1483
  %1487 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1485, ptr noundef nonnull @.str.14)
          to label %1488 unwind label %1500

1488:                                             ; preds = %1486
  %1489 = getelementptr inbounds i8, ptr %1480, i64 8
  %1490 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1487, ptr noundef nonnull align 8 dereferenceable(32) %1489)
          to label %1491 unwind label %1500

1491:                                             ; preds = %1488
  %1492 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1490, ptr noundef nonnull @.str.16)
          to label %1493 unwind label %1500

1493:                                             ; preds = %1491
  %1494 = getelementptr inbounds i8, ptr %1480, i64 40
  %1495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1492, ptr noundef nonnull align 8 dereferenceable(8) %1494)
          to label %1496 unwind label %1500

1496:                                             ; preds = %1493
  %1497 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1495, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1498 unwind label %1500

1498:                                             ; preds = %1496
  %1499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1497, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1502 unwind label %1500

1500:                                             ; preds = %1498, %1496, %1493, %1491, %1488, %1486, %1483, %1478
  %1501 = landingpad { ptr, i32 }
          cleanup
  br label %1550

1502:                                             ; preds = %1498, %1482
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %165) #10
  %1503 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %.0728) #10
  store ptr %1503, ptr %165, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %166) #10
  %1504 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %.0728) #10
  store ptr %1504, ptr %166, align 8
  %1505 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  br i1 %1505, label %.lr.ph1411, label %.loopexit1895

.lr.ph1411:                                       ; preds = %1502
  %1506 = getelementptr inbounds i8, ptr %1480, i64 8
  br label %1507

1507:                                             ; preds = %.lr.ph1411, %1514
  %1508 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  %1509 = getelementptr inbounds i8, ptr %1508, i64 8
  %1510 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %1509, ptr noundef nonnull align 8 dereferenceable(32) %1506)
          to label %1511 unwind label %1512

1511:                                             ; preds = %1507
  br i1 %1510, label %1517, label %1514

1512:                                             ; preds = %1507
  %1513 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #10
  br label %1550

1514:                                             ; preds = %1511
  %1515 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %165) #10
  %1516 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull align 8 dereferenceable(8) %166) #10
  br i1 %1516, label %1507, label %.loopexit1895

.loopexit1895:                                    ; preds = %1502, %1514
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #10
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.5, i32 noundef 550, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb) #12
  unreachable

1517:                                             ; preds = %1511
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %166) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %165) #10
  %1518 = getelementptr inbounds i8, ptr %1508, i64 88
  %1519 = getelementptr inbounds i8, ptr %1480, i64 40
  %1520 = invoke noundef nonnull align 8 dereferenceable(56) ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE2atERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1518, ptr noundef nonnull align 8 dereferenceable(8) %1519)
          to label %1521 unwind label %1524

1521:                                             ; preds = %1517
  %1522 = getelementptr inbounds i8, ptr %1520, i64 32
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE8pop_backEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  %1523 = call noundef zeroext i1 @_ZNKSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  br i1 %1523, label %1526, label %1478

1524:                                             ; preds = %1517
  %1525 = landingpad { ptr, i32 }
          cleanup
  br label %1550

1526:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %167) #10
  %1527 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1522) #10
  store ptr %1527, ptr %167, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %168) #10
  %1528 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1522) #10
  store ptr %1528, ptr %168, align 8
  %1529 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  br i1 %1529, label %.lr.ph1416, label %._crit_edge1417.thread

.lr.ph1416:                                       ; preds = %1526, %1535
  %1530 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %167) #10
  %1531 = invoke noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56) %156, ptr noundef nonnull align 8 dereferenceable(144) %1530)
          to label %1532 unwind label %1533

1532:                                             ; preds = %.lr.ph1416
  br i1 %1531, label %.thread1139.loopexit, label %1535

1533:                                             ; preds = %.lr.ph1416
  %1534 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #10
  br label %1550

1535:                                             ; preds = %1532
  %1536 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %167) #10
  %1537 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %168) #10
  br i1 %1537, label %.lr.ph1416, label %._crit_edge1417.thread

._crit_edge1417.thread:                           ; preds = %1535, %1526
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #10
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %162) #10
  br label %1538

1538:                                             ; preds = %._crit_edge1417.thread, %.thread1128
  %1539 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1540 unwind label %1551

1540:                                             ; preds = %1538
  br i1 %1539, label %1541, label %.thread1134

1541:                                             ; preds = %1540
  %1542 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1542, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1544 unwind label %1551

1544:                                             ; preds = %1541
  %1545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1543, ptr noundef nonnull @.str.18)
          to label %1546 unwind label %1551

1546:                                             ; preds = %1544
  %1547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1545, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1548 unwind label %1551

1548:                                             ; preds = %1546
  %1549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1547, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread1134 unwind label %1551

1550:                                             ; preds = %1451, %1533, %1512, %1524, %1500, %1471, %1444
  %.pn850.pn.pn.pn = phi { ptr, i32 } [ %1445, %1444 ], [ %1452, %1451 ], [ %1472, %1471 ], [ %1534, %1533 ], [ %1501, %1500 ], [ %1525, %1524 ], [ %1513, %1512 ]
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %162) #10
  br label %1553

1551:                                             ; preds = %1548, %1546, %1544, %1541, %1538
  %1552 = landingpad { ptr, i32 }
          cleanup
  br label %1553

.thread1134:                                      ; preds = %1548, %1540
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %156) #10
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %155) #10
  br label %.loopexit1258

.thread1139.loopexit:                             ; preds = %1532
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %168) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %167) #10
  call void @_ZNSt6vectorIPKN3HIR4Path4Data14Data_UfcsKnownESaIS5_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %162) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %162) #10
  br label %.thread1139

.thread1139:                                      ; preds = %.thread1139.loopexit, %.thread1102
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %156) #10
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #10
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %155) #10
  br label %.thread997

1553:                                             ; preds = %1551, %1550, %1440, %1375
  %.pn855 = phi { ptr, i32 } [ %1552, %1551 ], [ %.pn850.pn.pn.pn, %1550 ], [ %.pn841, %1440 ], [ %1376, %1375 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %156) #10
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %155) #10
  br label %1554

1554:                                             ; preds = %1553, %1370
  %.pn855.pn = phi { ptr, i32 } [ %.pn855, %1553 ], [ %1371, %1370 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %155) #10
  br label %1696

1555:                                             ; preds = %.loopexit1258
  %1556 = getelementptr inbounds i8, ptr %739, i64 128
  %1557 = load i8, ptr %1556, align 8, !tbaa !153, !range !148, !noundef !170
  %1558 = trunc nuw i8 %1557 to i1
  br i1 %1558, label %1559, label %1641

1559:                                             ; preds = %1555
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %169) #10
  store i8 0, ptr %169, align 1, !tbaa !126
  %1560 = load ptr, ptr %740, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %171) #10
  store ptr %0, ptr %171, align 8, !tbaa !171
  %1561 = getelementptr inbounds i8, ptr %171, i64 8
  store ptr %1, ptr %1561, align 8, !tbaa !5
  %1562 = getelementptr inbounds i8, ptr %171, i64 16
  store ptr %2, ptr %1562, align 8, !tbaa !5
  %1563 = getelementptr inbounds i8, ptr %171, i64 24
  store ptr %8, ptr %1563, align 8, !tbaa !5
  %1564 = getelementptr inbounds i8, ptr %171, i64 32
  store ptr %4, ptr %1564, align 8, !tbaa !5
  %1565 = getelementptr inbounds i8, ptr %171, i64 40
  store ptr %5, ptr %1565, align 8, !tbaa !5
  %1566 = getelementptr inbounds i8, ptr %171, i64 48
  store ptr %169, ptr %1566, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %170, ptr noundef nonnull align 8 dereferenceable(56) %171)
          to label %1567 unwind label %1575

1567:                                             ; preds = %1559
  %1568 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %1560, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %170)
          to label %1569 unwind label %1577

1569:                                             ; preds = %1567
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %171) #10
  br i1 %1568, label %1570, label %1580

1570:                                             ; preds = %1569
  %1571 = load i8, ptr %169, align 1, !tbaa !126, !range !148, !noundef !170
  %1572 = trunc nuw i8 %1571 to i1
  br label %.thread1174

1573:                                             ; preds = %1689, %1687, %1685, %1682, %1679, %1674, %1657, %1655, %1653, %1651, %1649, %1647, %1644, %1641, %.loopexit1258
  %1574 = landingpad { ptr, i32 }
          cleanup
  br label %1696

1575:                                             ; preds = %1559
  %1576 = landingpad { ptr, i32 }
          cleanup
  br label %1579

1577:                                             ; preds = %1567
  %1578 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %170) #10
  br label %1579

1579:                                             ; preds = %1577, %1575
  %.pn962 = phi { ptr, i32 } [ %1578, %1577 ], [ %1576, %1575 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %171) #10
  br label %1640

1580:                                             ; preds = %1569
  %1581 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack acquire, align 8
  %1582 = icmp eq i8 %1581, 0
  br i1 %1582, label %1583, label %1587, !prof !9

1583:                                             ; preds = %1580
  %1584 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #10
  %.not964 = icmp eq i32 %1584, 0
  br i1 %.not964, label %1587, label %1585

1585:                                             ; preds = %1583
  call void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #10
  %1586 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #10
  br label %1587

1587:                                             ; preds = %1585, %1583, %1580
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %172) #10
  %1588 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #10
  store ptr %1588, ptr %172, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %173) #10
  %1589 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack) #10
  store ptr %1589, ptr %173, align 8
  %1590 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %173) #10
  br i1 %1590, label %.lr.ph1786, label %._crit_edge1787

.lr.ph1786:                                       ; preds = %1587, %1620
  %1591 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  %1592 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %1591) #10
  %1593 = load ptr, ptr %1592, align 8, !tbaa !5
  %1594 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1593, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1595 unwind label %.loopexit1199

1595:                                             ; preds = %.lr.ph1786
  br i1 %1594, label %1620, label %1596

.loopexit1199:                                    ; preds = %.lr.ph1786, %1602, %1608
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %1619

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

1596:                                             ; preds = %1595
  %1597 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %1591) #10
  %1598 = load ptr, ptr %1597, align 8, !tbaa !5
  %1599 = icmp ne ptr %1598, null
  %1600 = load ptr, ptr %8, align 8
  %1601 = icmp ne ptr %1600, null
  %or.cond = select i1 %1599, i1 %1601, i1 false
  br i1 %or.cond, label %1602, label %1608

1602:                                             ; preds = %1596
  %1603 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %1591) #10
  %1604 = load ptr, ptr %1603, align 8, !tbaa !5
  %1605 = load ptr, ptr %8, align 8, !tbaa !5
  %1606 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %1604, ptr noundef nonnull align 8 dereferenceable(24) %1605)
          to label %1607 unwind label %.loopexit1199

1607:                                             ; preds = %1602
  br i1 %1606, label %1620, label %1608

1608:                                             ; preds = %1607, %1596
  %1609 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm2EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %1591) #10
  %1610 = load ptr, ptr %1609, align 8, !tbaa !5
  %1611 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1610, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1612 unwind label %.loopexit1199

1612:                                             ; preds = %1608
  br i1 %1611, label %1620, label %1613

1613:                                             ; preds = %1612
  %1614 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %174, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %1614, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %1615 unwind label %.loopexit.split-lp

1615:                                             ; preds = %1613
  %1616 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %174, i1 noundef zeroext false)
          to label %.thread1171 unwind label %1617

1617:                                             ; preds = %1615
  %1618 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %174) #10
  br label %1619

.thread1171:                                      ; preds = %1615
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %174) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #10
  br label %.thread1174

1619:                                             ; preds = %.loopexit1199, %.loopexit.split-lp, %1617
  %.pn965 = phi { ptr, i32 } [ %1618, %1617 ], [ %lpad.loopexit, %.loopexit1199 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #10
  br label %1640

1620:                                             ; preds = %1595, %1607, %1612
  %1621 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %172) #10
  %1622 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %173) #10
  br i1 %1622, label %.lr.ph1786, label %._crit_edge1787

._crit_edge1787:                                  ; preds = %1620, %1587
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %173) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %172) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %175) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %176) #10
  store ptr %2, ptr %176, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %177) #10
  store ptr %4, ptr %177, align 8, !tbaa !5
  call void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind nonnull writable sret(%"class.std::tuple.423") align 8 %175, ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %177)
  invoke void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE9push_backEOSB_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE5stack, ptr noundef nonnull align 8 dereferenceable(24) %175)
          to label %1623 unwind label %1632

1623:                                             ; preds = %._crit_edge1787
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %176) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %175) #10
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %178) #10
  %1624 = load ptr, ptr %8, align 8, !tbaa !5
  %1625 = invoke noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %1624, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1626 unwind label %1634

1626:                                             ; preds = %1623
  %.not967 = icmp eq i32 %1625, 2
  br i1 %.not967, label %.thread1177, label %1627

.thread1177:                                      ; preds = %1626
  call void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #10
  br label %1674

1627:                                             ; preds = %1626
  %1628 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %179, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE9null_hrls, ptr noundef nonnull %4, ptr noundef %1628, ptr noundef nonnull @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE10null_assoc)
          to label %1629 unwind label %1634

1629:                                             ; preds = %1627
  %1630 = icmp eq i32 %1625, 1
  %1631 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefbEEclES0_b(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %179, i1 noundef zeroext %1630)
          to label %1638 unwind label %1636

1632:                                             ; preds = %._crit_edge1787
  %1633 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %177) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %176) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %175) #10
  br label %1640

1634:                                             ; preds = %1627, %1623
  %1635 = landingpad { ptr, i32 }
          cleanup
  br label %1639

1636:                                             ; preds = %1629
  %1637 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %179) #10
  br label %1639

.thread1174:                                      ; preds = %1570, %.thread1171
  %.70.ph = phi i1 [ %1616, %.thread1171 ], [ %1572, %1570 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #10
  br label %.thread997

1638:                                             ; preds = %1629
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %179) #10
  call void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #10
  br label %.thread997

1639:                                             ; preds = %1636, %1634
  %.pn968 = phi { ptr, i32 } [ %1637, %1636 ], [ %1635, %1634 ]
  call void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %178) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %178) #10
  br label %1640

1640:                                             ; preds = %1639, %1632, %1619, %1579
  %.pn968.pn = phi { ptr, i32 } [ %.pn968, %1639 ], [ %1633, %1632 ], [ %.pn965, %1619 ], [ %.pn962, %1579 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %169) #10
  br label %1696

1641:                                             ; preds = %1555
  %1642 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1643 unwind label %1573

1643:                                             ; preds = %1641
  br i1 %1642, label %1644, label %1659

1644:                                             ; preds = %1643
  %1645 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1645, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1647 unwind label %1573

1647:                                             ; preds = %1644
  %1648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1646, ptr noundef nonnull @.str.19)
          to label %1649 unwind label %1573

1649:                                             ; preds = %1647
  %1650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %1648, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1651 unwind label %1573

1651:                                             ; preds = %1649
  %1652 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1650, ptr noundef nonnull @.str.20)
          to label %1653 unwind label %1573

1653:                                             ; preds = %1651
  %1654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1652, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %1655 unwind label %1573

1655:                                             ; preds = %1653
  %1656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1654, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1657 unwind label %1573

1657:                                             ; preds = %1655
  %1658 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1656, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1659 unwind label %1573

1659:                                             ; preds = %1657, %1643
  %1660 = load ptr, ptr %740, align 8, !tbaa !45
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %181) #10
  store ptr %0, ptr %181, align 8, !tbaa !173
  %1661 = getelementptr inbounds i8, ptr %181, i64 8
  store ptr %1, ptr %1661, align 8, !tbaa !5
  %1662 = getelementptr inbounds i8, ptr %181, i64 16
  store ptr %2, ptr %1662, align 8, !tbaa !5
  %1663 = getelementptr inbounds i8, ptr %181, i64 24
  store ptr %8, ptr %1663, align 8, !tbaa !5
  %1664 = getelementptr inbounds i8, ptr %181, i64 32
  store ptr %4, ptr %1664, align 8, !tbaa !5
  %1665 = getelementptr inbounds i8, ptr %181, i64 40
  store ptr %5, ptr %1665, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %180, ptr noundef nonnull align 8 dereferenceable(48) %181)
          to label %1666 unwind label %1669

1666:                                             ; preds = %1659
  %1667 = invoke noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %1660, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %180)
          to label %1668 unwind label %1671

1668:                                             ; preds = %1666
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %181) #10
  br i1 %1667, label %.thread997, label %1674

1669:                                             ; preds = %1659
  %1670 = landingpad { ptr, i32 }
          cleanup
  br label %1673

1671:                                             ; preds = %1666
  %1672 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %180) #10
  br label %1673

1673:                                             ; preds = %1671, %1669
  %.pn960 = phi { ptr, i32 } [ %1672, %1671 ], [ %1670, %1669 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %181) #10
  br label %1696

1674:                                             ; preds = %.thread1177, %1668
  %1675 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefbEEC2ERKS2_(ptr noundef nonnull align 8 dereferenceable(32) %182, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1676 unwind label %1573

1676:                                             ; preds = %1674
  %1677 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %1675, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull %182)
          to label %1678 unwind label %1691

1678:                                             ; preds = %1676
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #10
  br i1 %1677, label %1679, label %1693

1679:                                             ; preds = %1678
  %1680 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1681 unwind label %1573

1681:                                             ; preds = %1679
  br i1 %1680, label %1682, label %.thread997

1682:                                             ; preds = %1681
  %1683 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !150
  %1684 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1683, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEb)
          to label %1685 unwind label %1573

1685:                                             ; preds = %1682
  %1686 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1684, ptr noundef nonnull @.str.21)
          to label %1687 unwind label %1573

1687:                                             ; preds = %1685
  %1688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1686, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1689 unwind label %1573

1689:                                             ; preds = %1687
  %1690 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1688, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread997 unwind label %1573

1691:                                             ; preds = %1676
  %1692 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %182) #10
  br label %1696

1693:                                             ; preds = %1678
  %1694 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %1695 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1694)
  br label %.thread997

.thread997:                                       ; preds = %1059, %818, %1038, %801, %639, %657, %669, %1638, %.thread1174, %.thread1139, %.thread1143, %.thread1073, %.thread1068, %1214, %1090, %1069, %1072, %856, %907, %790, %.thread1029, %1197, %1294, %709, %391, %.thread, %1693, %1668, %1689, %1681, %724, %692, %614, %558, %530, %524, %429, %336, %279, %266, %221
  %.72 = phi i1 [ %723, %724 ], [ %704, %709 ], [ %220, %221 ], [ %265, %266 ], [ %278, %279 ], [ %335, %336 ], [ %428, %429 ], [ %362, %391 ], [ %523, %524 ], [ %529, %530 ], [ %557, %558 ], [ %613, %614 ], [ %691, %692 ], [ false, %1693 ], [ %1631, %1638 ], [ true, %1668 ], [ true, %1689 ], [ true, %1681 ], [ %309, %.thread ], [ true, %.thread1139 ], [ true, %.thread1143 ], [ %1213, %1214 ], [ %1231, %.thread1068 ], [ %1245, %.thread1073 ], [ %1089, %1090 ], [ false, %1069 ], [ false, %1072 ], [ %855, %856 ], [ %906, %907 ], [ %781, %790 ], [ %.18, %.thread1029 ], [ %1185, %1197 ], [ %.41.ph, %1294 ], [ %.70.ph, %.thread1174 ], [ %638, %639 ], [ %656, %657 ], [ %668, %669 ], [ false, %801 ], [ false, %1038 ], [ false, %818 ], [ false, %1059 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #10
  ret i1 %.72

1696:                                             ; preds = %.loopexit1238, %.loopexit.split-lp1239, %.loopexit1231, %.loopexit.split-lp1232, %.loopexit1224.split, %.loopexit.split-lp1225, %.loopexit1217.split, %.loopexit.split-lp1218, %.loopexit1211.split, %.loopexit.split-lp1212, %1573, %1640, %1673, %1691, %1293, %789, %808, %820, %915, %896, %1027, %.split1569, %1046, %1061, %1117, %1196, %.split, %1250, %1237, %1215, %1335, %1368, %1554, %1356, %1355, %1312, %1311, %1298, %705, %707, %633, %640, %670, %687, %664, %658, %310, %312, %736, %735, %693, %615, %598, %531, %525, %505, %492, %478, %430, %424, %390, %337, %298, %297, %280, %267, %228, %226, %224
  %.pn973 = phi { ptr, i32 } [ %737, %736 ], [ %227, %226 ], [ %.pn828.pn.pn, %735 ], [ %229, %228 ], [ %268, %267 ], [ %281, %280 ], [ %299, %298 ], [ %.pn821, %297 ], [ %338, %337 ], [ %431, %430 ], [ %.pn815.pn.pn.pn, %424 ], [ %.pn809.pn.pn.pn, %390 ], [ %526, %525 ], [ %532, %531 ], [ %.pn799.pn.pn, %598 ], [ %616, %615 ], [ %694, %693 ], [ %.pn776.pn.pn, %505 ], [ %.pn.pn.pn, %492 ], [ %479, %478 ], [ %225, %224 ], [ %313, %312 ], [ %311, %310 ], [ %.pn782, %687 ], [ %671, %670 ], [ %634, %633 ], [ %641, %640 ], [ %.pn784, %664 ], [ %659, %658 ], [ %708, %707 ], [ %706, %705 ], [ %.pn865, %1293 ], [ %.pn955.pn, %789 ], [ %.pn951.pn, %896 ], [ %.pn929.pn, %915 ], [ %821, %820 ], [ %809, %808 ], [ %.pn923.pn.pn.pn, %1027 ], [ %lpad.loopexit1876, %.split1569 ], [ %.pn899.pn.pn, %1117 ], [ %1062, %1061 ], [ %1047, %1046 ], [ %.pn882.pn.pn.pn.pn, %1196 ], [ %1118, %.split ], [ %1216, %1215 ], [ %.pn870, %1250 ], [ %.pn867, %1237 ], [ %1299, %1298 ], [ %1313, %1312 ], [ %.pn832, %1311 ], [ %1336, %1335 ], [ %1357, %1356 ], [ %.pn835, %1355 ], [ %.pn855.pn, %1554 ], [ %1369, %1368 ], [ %1574, %1573 ], [ %1692, %1691 ], [ %.pn968.pn, %1640 ], [ %.pn960, %1673 ], [ %lpad.loopexit1213, %.loopexit1211.split ], [ %lpad.loopexit.split-lp1214, %.loopexit.split-lp1212 ], [ %lpad.loopexit1883, %.loopexit1217.split ], [ %lpad.loopexit.split-lp1220, %.loopexit.split-lp1218 ], [ %lpad.loopexit1871, %.loopexit1224.split ], [ %lpad.loopexit.split-lp1227, %.loopexit.split-lp1225 ], [ %lpad.loopexit1233, %.loopexit1231 ], [ %lpad.loopexit.split-lp1234, %.loopexit.split-lp1232 ], [ %lpad.loopexit1240, %.loopexit1238 ], [ %lpad.loopexit.split-lp1241, %.loopexit.split-lp1239 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %9) #10
  br label %1697

1697:                                             ; preds = %1696, %222
  %.pn973.pn = phi { ptr, i32 } [ %.pn973, %1696 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %9) #10
  resume { ptr, i32 } %.pn973.pn

1698:                                             ; preds = %1350, %1306, %677, %292
  unreachable
}

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48)) unnamed_addr #6 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 #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

declare void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, i32 noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.97") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5emptyEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #6 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 #8 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.97") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1

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

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

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

declare void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) unnamed_addr #3

declare void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef) unnamed_addr #3

declare void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88), ptr noundef) unnamed_addr #3

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #6 align 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 hidden void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES2_bE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_3vEEOT_"(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 ptr @_ZNK3HIR8TypeData11opt_GenericEv(ptr noundef nonnull align 8 dereferenceable(184)) 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 #1 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H11get_root_tyESC_(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1 align 2

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

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

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

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

declare noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(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 @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #6 align 2

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

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

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

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

declare void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #3

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate22get_lang_item_path_optEPKc(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef) local_unnamed_addr #3

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

declare void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8, ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.264") align 8, ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #1

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN1H12check_paramsES2_RS8_S9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef) local_unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefbEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #6 align 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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef zeroext i1 @"_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbENK3$_8clERKNS3_9TraitPathE"(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #8 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK18StaticTraitResolve9find_implERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefbEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(56)) unnamed_addr #1 align 2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind noalias writable sret(%"class.std::tuple.423") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6

; Function Attrs: mustprogress uwtable
declare dso_local noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(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)) local_unnamed_addr #1 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 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 #3

declare noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(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) local_unnamed_addr #1 align 2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"_ZTS13TargetVersion", !7, i64 0}
!12 = !{!13, !32, i64 100}
!13 = !{!"_ZTSN3HIR4EnumE", !14, i64 0, !31, i64 96, !32, i64 100, !33, i64 104, !35, i64 144}
!14 = !{!"_ZTSN3HIR13GenericParamsE", !15, i64 0, !19, i64 24, !23, i64 48, !27, i64 72}
!15 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!19 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"bool", !7, i64 0}
!32 = !{!"_ZTSN3HIR4Enum4ReprE", !7, i64 0}
!33 = !{!"_ZTSN3HIR4Enum5ClassE", !34, i64 0, !7, i64 8}
!34 = !{!"_ZTSN3HIR4Enum5Class3TagE", !7, i64 0}
!35 = !{!"_ZTSN3HIR13TraitMarkingsE", !31, i64 0, !31, i64 1, !31, i64 2, !36, i64 8}
!36 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !39, i64 0, !41, i64 8}
!39 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !40, i64 0}
!40 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!41 = !{!"_ZTSSt15_Rb_tree_header", !42, i64 0, !44, i64 32}
!42 = !{!"_ZTSSt18_Rb_tree_node_base", !43, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!43 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!44 = !{!"long", !7, i64 0}
!45 = !{!46, !6, i64 0}
!46 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !47, i64 24, !52, i64 72, !58, i64 104, !58, i64 112, !58, i64 120, !58, i64 128, !58, i64 136, !58, i64 144, !58, i64 152, !58, i64 160, !58, i64 168, !58, i64 176, !58, i64 184, !58, i64 192, !58, i64 200, !58, i64 208}
!47 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !48, i64 0}
!48 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !49, i64 0}
!49 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !50, i64 0, !41, i64 8}
!50 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !51, i64 0}
!51 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!52 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !53, i64 0, !57, i64 24}
!53 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !54, i64 0}
!54 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!57 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!58 = !{!"_ZTSN3HIR10SimplePathE", !59, i64 0}
!59 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!60 = !{!61, !61, i64 0}
!61 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!62 = !{!63, !69, i64 208}
!63 = !{!"_ZTSN3HIR6StructE", !14, i64 0, !64, i64 96, !65, i64 104, !67, i64 136, !67, i64 140, !35, i64 144, !68, i64 200, !72, i64 248}
!64 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!65 = !{!"_ZTSN3HIR6Struct4DataE", !66, i64 0, !7, i64 8}
!66 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!67 = !{!"int", !7, i64 0}
!68 = !{!"_ZTSN3HIR14StructMarkingsE", !31, i64 0, !67, i64 4, !69, i64 8, !67, i64 12, !70, i64 16, !67, i64 20, !67, i64 24, !31, i64 28, !31, i64 29, !71, i64 32}
!69 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!70 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!71 = !{!"_ZTS4U128", !44, i64 0, !44, i64 8}
!72 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!73 = !{!63, !67, i64 204}
!74 = !{!75, !67, i64 8}
!75 = !{!"_ZTSN3HIR10GenericRefE", !76, i64 0, !67, i64 8}
!76 = !{!"_ZTS8RcString", !6, i64 0}
!77 = distinct !{!77, !78}
!78 = !{!"llvm.loop.mustprogress"}
!79 = distinct !{!79, !78}
!80 = distinct !{!80, !78}
!81 = distinct !{!81, !78}
!82 = distinct !{!82, !78}
!83 = distinct !{!83, !78}
!84 = distinct !{!84, !78}
!85 = !{!86, !6, i64 0}
!86 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!87 = distinct !{!87, !78}
!88 = !{!89, !104, i64 76}
!89 = !{!"_ZTSN3HIR16ExprNode_ClosureE", !90, i64 0, !94, i64 32, !92, i64 56, !98, i64 64, !31, i64 72, !104, i64 76, !31, i64 80, !105, i64 88, !114, i64 136, !6, i64 144, !115, i64 152, !115, i64 184, !120, i64 216}
!90 = !{!"_ZTSN3HIR8ExprNodeE", !91, i64 8, !92, i64 16, !93, i64 24}
!91 = !{!"_ZTS4Span", !6, i64 0}
!92 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!93 = !{!"_ZTSN3HIR10ValueUsageE", !7, i64 0}
!94 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !95, i64 0}
!95 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !97, i64 0}
!97 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!98 = !{!"_ZTSSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EE", !99, i64 0}
!99 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR8ExprNodeESt14default_deleteIS1_ELb1ELb1EE", !100, i64 0}
!100 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR8ExprNodeESt14default_deleteIS1_EE", !101, i64 0}
!101 = !{!"_ZTSSt5tupleIJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !102, i64 0}
!102 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !103, i64 0}
!103 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR8ExprNodeELb0EE", !6, i64 0}
!104 = !{!"_ZTSN3HIR16ExprNode_Closure5ClassE", !7, i64 0}
!105 = !{!"_ZTSN3HIR16ExprNode_Closure8AvuCacheE", !106, i64 0, !110, i64 24}
!106 = !{!"_ZTSSt6vectorIjSaIjEE", !107, i64 0}
!107 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !109, i64 0}
!109 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!110 = !{!"_ZTSSt6vectorIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !111, i64 0}
!111 = !{!"_ZTSSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE12_Vector_implE", !113, i64 0}
!113 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!114 = !{!"_ZTSN3HIR11LifetimeRefE", !67, i64 0}
!115 = !{!"_ZTSN3HIR11GenericPathE", !58, i64 0, !116, i64 8}
!116 = !{!"_ZTSN3HIR10PathParamsE", !117, i64 0, !118, i64 8, !119, i64 16}
!117 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!118 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!119 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!120 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!124 = !{!125, !6, i64 0}
!125 = !{!"_ZTSN3HIR8TypeData14Data_GeneratorE", !6, i64 0}
!126 = !{!31, !31, i64 0}
!127 = !{!128, !6, i64 136}
!128 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !129, i64 0, !144, i64 144, !114, i64 168}
!129 = !{!"_ZTSN3HIR9TraitPathE", !130, i64 0, !115, i64 8, !136, i64 40, !141, i64 88, !6, i64 136}
!130 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !131, i64 0}
!131 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !132, i64 0}
!132 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !133, i64 0}
!133 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !134, i64 0}
!134 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !135, i64 0}
!135 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!136 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !137, i64 0}
!137 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !138, i64 0}
!138 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !139, i64 0, !41, i64 8}
!139 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !140, i64 0}
!140 = !{!"_ZTSSt4lessI8RcStringE"}
!141 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !142, i64 0}
!142 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !143, i64 0}
!143 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !139, i64 0, !41, i64 8}
!144 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !145, i64 0}
!145 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !146, i64 0}
!146 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !147, i64 0}
!147 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!148 = !{i8 0, i8 2}
!149 = !{!129, !6, i64 136}
!150 = !{!67, !67, i64 0}
!151 = !{!152, !6, i64 16}
!152 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE3$_8", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!153 = !{!154, !31, i64 128}
!154 = !{!"_ZTSN3HIR5TraitE", !14, i64 0, !114, i64 96, !155, i64 104, !31, i64 128, !159, i64 136, !164, i64 192, !166, i64 248, !168, i64 304, !67, i64 360, !155, i64 368, !58, i64 392}
!155 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !156, i64 0}
!156 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !157, i64 0}
!157 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !158, i64 0}
!158 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!159 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !160, i64 0}
!160 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !44, i64 8, !161, i64 16, !44, i64 24, !162, i64 32, !6, i64 48}
!161 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!162 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !163, i64 0, !44, i64 8}
!163 = !{!"float", !7, i64 0}
!164 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !165, i64 0}
!165 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !44, i64 8, !161, i64 16, !44, i64 24, !162, i64 32, !6, i64 48}
!166 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !167, i64 0}
!167 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !44, i64 8, !161, i64 16, !44, i64 24, !162, i64 32, !6, i64 48}
!168 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !169, i64 0}
!169 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !44, i64 8, !161, i64 16, !44, i64 24, !162, i64 32, !6, i64 48}
!170 = !{}
!171 = !{!172, !6, i64 0}
!172 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE3$_9", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!173 = !{!174, !6, i64 0}
!174 = !{!"_ZTSZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEEbE4$_10", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


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