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

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

%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = 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.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"struct.std::pair.450" = type { ptr, %"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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.492 = type { ptr, ptr, ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%struct.Span = type { ptr }
%class.anon.493 = type { i8 }
%class.anon.495 = type { i8 }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = 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.448" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = 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.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = 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.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = 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.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.497 = type { i8 }
%class.anon.499 = type { i8 }
%class.anon.501 = type { i8 }
%class.anon.503 = type { i8 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.60" }
%class.RcString = type { ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.505 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%class.anon.506 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.507 = 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.181" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = 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.508 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %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.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = 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.211", [8 x i8] }>
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Closure" = type { ptr }
%"struct.HIR::ExprNode_Closure" = type { %"class.HIR::ExprNode.base", %"class.std::vector.93", %"class.HIR::TypeRef", %"class.std::unique_ptr.98", i8, i32, i8, %"struct.HIR::ExprNode_Closure::AvuCache", %"struct.HIR::LifetimeRef", ptr, %"class.HIR::GenericPath", %"class.HIR::GenericPath", %"class.std::vector.111" }
%"class.HIR::ExprNode.base" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32 }>
%"class.std::vector.93" = type { %"struct.std::_Vector_base.94" }
%"struct.std::_Vector_base.94" = 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.98" = type { %"struct.std::__uniq_ptr_data.99" }
%"struct.std::__uniq_ptr_data.99" = type { %"class.std::__uniq_ptr_impl.100" }
%"class.std::__uniq_ptr_impl.100" = type { %"class.std::tuple.101" }
%"class.std::tuple.101" = type { %"struct.std::_Tuple_impl.102" }
%"struct.std::_Tuple_impl.102" = type { %"struct.std::_Head_base.105" }
%"struct.std::_Head_base.105" = type { ptr }
%"struct.HIR::ExprNode_Closure::AvuCache" = type { %"class.std::vector.85", %"class.std::vector.106" }
%"class.std::vector.85" = type { %"struct.std::_Vector_base.86" }
%"struct.std::_Vector_base.86" = 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.106" = type { %"struct.std::_Vector_base.107" }
%"struct.std::_Vector_base.107" = 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.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = 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" = type { %"struct.HIR::Pattern", %"class.HIR::TypeRef" }
%"struct.HIR::Pattern" = type <{ %"class.std::vector.117", %"class.HIR::Pattern::Data", i32, [4 x i8] }>
%"class.std::vector.117" = type { %"struct.std::_Vector_base.118" }
%"struct.std::_Vector_base.118" = 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::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.29" }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"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_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.45", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = 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.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = 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.50", %"class.std::vector.55", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = 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.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = 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 }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params = external hidden global i64, align 8
@_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc = external hidden global i64, align 8
@__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb = external hidden unnamed_addr constant [162 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind noalias writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8, ptr noundef nonnull align 8 dereferenceable(49)) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16)) #8 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)) #8 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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) #4 align 2

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

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

; 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: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef) #4 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 #4 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: 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)) #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(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: 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.450") align 8, ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 8 dereferenceable(40)) #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) #4 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5, i1 noundef zeroext %6) #4 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 ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca ptr, align 8
  %19 = alloca %class.TraceLog, align 8
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.492, align 8
  %22 = alloca %"class.std::function.444", align 8
  %23 = alloca i32, align 4
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca i8, align 1
  %27 = alloca ptr, align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.493, align 1
  %31 = alloca %struct.Span, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.495, align 1
  %34 = alloca ptr, align 8
  %35 = alloca i32, align 4
  %36 = alloca %"class.std::vector.60", align 8
  %37 = alloca i32, align 4
  %38 = alloca ptr, align 8
  %39 = alloca %"class.HIR::TypeRef", align 8
  %40 = alloca i32, align 4
  %41 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %42 = alloca %"struct.HIR::PathParams", align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"class.std::vector.60", align 8
  %45 = alloca %"class.std::map", align 8
  %46 = alloca %"struct.std::pair.450", align 8
  %47 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %48 = alloca %"struct.HIR::SimplePath", align 8
  %49 = alloca %"struct.HIR::PathParams", align 8
  %50 = alloca %"struct.std::pair.448", align 8
  %51 = alloca %struct.ImplRef, align 8
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca %"struct.HIR::PathParams", align 8
  %54 = alloca %"class.std::map", align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca %struct.Span, align 8
  %58 = alloca %"class.std::function", align 8
  %59 = alloca %class.anon.497, align 1
  %60 = alloca %struct.Span, align 8
  %61 = alloca %"class.std::function", align 8
  %62 = alloca %class.anon.499, align 1
  %63 = alloca ptr, align 8
  %64 = alloca i32, align 4
  %65 = alloca %"class.std::vector.60", align 8
  %66 = alloca i32, align 4
  %67 = alloca ptr, align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca i32, align 4
  %70 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %71 = alloca %"struct.HIR::PathParams", align 8
  %72 = alloca %"class.HIR::TypeRef", align 8
  %73 = alloca %"class.std::vector.60", align 8
  %74 = alloca %"class.std::map", align 8
  %75 = alloca %"struct.std::pair.450", align 8
  %76 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %77 = alloca %"struct.HIR::SimplePath", align 8
  %78 = alloca %"struct.HIR::PathParams", align 8
  %79 = alloca %"struct.std::pair.448", align 8
  %80 = alloca %struct.ImplRef, align 8
  %81 = alloca %"class.HIR::GenericParams", align 8
  %82 = alloca %"class.HIR::TypeRef", align 8
  %83 = alloca %"struct.HIR::PathParams", align 8
  %84 = alloca %"class.std::map", align 8
  %85 = alloca i8, align 1
  %86 = alloca ptr, align 8
  %87 = alloca %struct.Span, align 8
  %88 = alloca %"class.std::function", align 8
  %89 = alloca %class.anon.501, align 1
  %90 = alloca %struct.Span, align 8
  %91 = alloca %"class.std::function", align 8
  %92 = alloca %class.anon.503, align 1
  %93 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %94 = alloca ptr, align 8
  %95 = alloca i32, align 4
  %96 = alloca %"class.std::vector.60", align 8
  %97 = alloca i32, align 4
  %98 = alloca ptr, align 8
  %99 = alloca %"class.HIR::TypeRef", align 8
  %100 = alloca i32, align 4
  %101 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %102 = alloca %"struct.HIR::PathParams", align 8
  %103 = alloca %"class.HIR::TypeRef", align 8
  %104 = alloca %"class.std::vector.60", align 8
  %105 = alloca %"class.std::map", align 8
  %106 = alloca %"struct.std::pair.450", align 8
  %107 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %108 = alloca %"struct.HIR::SimplePath", align 8
  %109 = alloca %"struct.HIR::PathParams", align 8
  %110 = alloca %"struct.std::pair.448", align 8
  %111 = alloca %struct.ImplRef, align 8
  %112 = alloca %"class.HIR::GenericParams", align 8
  %113 = alloca %"class.HIR::TypeRef", align 8
  %114 = alloca %"struct.HIR::PathParams", align 8
  %115 = alloca %"class.std::map", align 8
  %116 = alloca i8, align 1
  %117 = alloca ptr, align 8
  %118 = alloca i8, align 1
  %119 = alloca ptr, align 8
  %120 = alloca i32, align 4
  %121 = alloca %struct.ImplRef, align 8
  %122 = alloca ptr, align 8
  %123 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %124 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %125 = alloca ptr, align 8
  %126 = alloca i32, align 4
  %127 = alloca %struct.ImplRef, align 8
  %128 = alloca %"struct.HIR::SimplePath", align 8
  %129 = alloca i8, align 1
  %130 = alloca i8, align 1
  %131 = alloca %"class.std::function.229", align 8
  %132 = alloca %class.anon.505, align 8
  %133 = alloca i8, align 1
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %137 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %138 = alloca ptr, align 8
  %139 = alloca i32, align 4
  %140 = alloca %struct.ImplRef, align 8
  %141 = alloca i8, align 1
  %142 = alloca i8, align 1
  %143 = alloca %"class.std::function.229", align 8
  %144 = alloca %class.anon.506, align 8
  %145 = alloca i8, align 1
  %146 = alloca ptr, align 8
  %147 = alloca %struct.ImplRef, align 8
  %148 = alloca i8, align 1
  %149 = alloca ptr, align 8
  %150 = alloca %struct.Span, align 8
  %151 = alloca %"class.std::function", align 8
  %152 = alloca %class.anon.507, align 8
  %153 = alloca ptr, align 8
  %154 = alloca %struct.MonomorphStatePtr, align 8
  %155 = alloca i8, align 1
  %156 = alloca %"class.std::function.229", align 8
  %157 = alloca %class.anon.508, align 8
  %158 = alloca %"class.std::function.444", align 8
  %159 = alloca %"class.std::function.444", 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
  %160 = zext i1 %6 to i8
  store i8 %160, ptr %15, align 1, !tbaa !9
  %161 = load ptr, ptr %9, align 8
  %162 = load atomic i8, ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params acquire, align 8
  %163 = icmp eq i8 %162, 0
  br i1 %163, label %164, label %170, !prof !11

164:                                              ; preds = %7
  %165 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #0
  %166 = icmp ne i32 %165, 0
  br i1 %166, label %167, label %170

167:                                              ; preds = %164
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params)
          to label %168 unwind label %204

168:                                              ; preds = %167
  %169 = call i32 @__cxa_atexit(ptr @_ZN3HIR10PathParamsD2Ev, ptr @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #0
  br label %170

170:                                              ; preds = %168, %164, %7
  %171 = load atomic i8, ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc acquire, align 8
  %172 = icmp eq i8 %171, 0
  br i1 %172, label %173, label %178, !prof !11

173:                                              ; preds = %170
  %174 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #0
  %175 = icmp ne i32 %174, 0
  br i1 %175, label %176, label %178

176:                                              ; preds = %173
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #0
  %177 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #0
  br label %178

178:                                              ; preds = %176, %173, %170
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %179 = getelementptr inbounds %class.TraitResolution, ptr %161, i32 0, i32 2
  %180 = load ptr, ptr %179, align 8, !tbaa !12
  %181 = load ptr, ptr %13, align 8, !tbaa !5
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %180, ptr noundef nonnull align 8 dereferenceable(8) %181)
  store ptr %182, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %19) #0
  %183 = call noundef zeroext i1 @_Z13debug_enabledv()
  %184 = zext i1 %183 to i64
  %185 = select i1 %183, ptr @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %21) #0
  %186 = getelementptr inbounds %class.anon.492, ptr %21, i32 0, i32 0
  %187 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %187, ptr %186, align 8, !tbaa !5
  %188 = getelementptr inbounds %class.anon.492, ptr %21, i32 0, i32 1
  %189 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %189, ptr %188, align 8, !tbaa !5
  %190 = getelementptr inbounds %class.anon.492, ptr %21, i32 0, i32 2
  %191 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %191, ptr %190, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(24) %21)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %19, ptr noundef %185, ptr noundef %20)
          to label %192 unwind label %208

192:                                              ; preds = %178
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  %193 = load i8, ptr %15, align 1, !tbaa !9, !range !36, !noundef !37
  %194 = trunc i8 %193 to i1
  br i1 %194, label %195, label %221

195:                                              ; preds = %192
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = load ptr, ptr %11, align 8, !tbaa !5
  %198 = load ptr, ptr %12, align 8, !tbaa !5
  %199 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %200 unwind label %212

200:                                              ; preds = %195
  %201 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull align 8 dereferenceable(24) %198, ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef %22)
          to label %202 unwind label %216

202:                                              ; preds = %200
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #0
  br i1 %201, label %203, label %220

203:                                              ; preds = %202
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1954

204:                                              ; preds = %167
  %205 = landingpad { ptr, i32 }
          cleanup
  %206 = extractvalue { ptr, i32 } %205, 0
  store ptr %206, ptr %16, align 8
  %207 = extractvalue { ptr, i32 } %205, 1
  store i32 %207, ptr %17, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #0
  br label %1958

208:                                              ; preds = %178
  %209 = landingpad { ptr, i32 }
          cleanup
  %210 = extractvalue { ptr, i32 } %209, 0
  store ptr %210, ptr %16, align 8
  %211 = extractvalue { ptr, i32 } %209, 1
  store i32 %211, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %21) #0
  br label %1957

212:                                              ; preds = %1942, %1929, %195
  %213 = landingpad { ptr, i32 }
          cleanup
  %214 = extractvalue { ptr, i32 } %213, 0
  store ptr %214, ptr %16, align 8
  %215 = extractvalue { ptr, i32 } %213, 1
  store i32 %215, ptr %17, align 4
  br label %1956

216:                                              ; preds = %200
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %16, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #0
  br label %1956

220:                                              ; preds = %202
  br label %221

221:                                              ; preds = %220, %192
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #0
  store i8 1, ptr %24, align 1, !tbaa !9
  br label %222

222:                                              ; preds = %1926, %221
  %223 = load i8, ptr %24, align 1, !tbaa !9, !range !36, !noundef !37
  %224 = trunc i8 %223 to i1
  br i1 %224, label %226, label %225

225:                                              ; preds = %222
  store i32 2, ptr %23, align 4
  br label %1927

226:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #0
  %227 = load ptr, ptr %18, align 8, !tbaa !5
  %228 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %227)
          to label %229 unwind label %234

229:                                              ; preds = %226
  store ptr %228, ptr %25, align 8, !tbaa !5
  br label %230

230:                                              ; preds = %1921, %229
  %231 = load i8, ptr %24, align 1, !tbaa !9, !range !36, !noundef !37
  %232 = trunc i8 %231 to i1
  br i1 %232, label %238, label %233

233:                                              ; preds = %230
  store i32 5, ptr %23, align 4
  br label %1922

234:                                              ; preds = %238, %226
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %16, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %17, align 4
  br label %1924

238:                                              ; preds = %230
  %239 = load ptr, ptr %25, align 8, !tbaa !5
  %240 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %239)
          to label %241 unwind label %234

241:                                              ; preds = %238
  switch i32 %240, label %243 [
    i32 0, label %242
    i32 15, label %244
    i32 14, label %609
    i32 13, label %929
    i32 8, label %1323
    i32 6, label %1346
    i32 7, label %1578
    i32 5, label %1743
    i32 4, label %1802
  ]

242:                                              ; preds = %241
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 1608, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb) #9
  unreachable

243:                                              ; preds = %241
  br label %1920

244:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #0
  store i8 1, ptr %26, align 1, !tbaa !9
  br label %245

245:                                              ; preds = %605, %244
  %246 = load i8, ptr %26, align 1, !tbaa !9, !range !36, !noundef !37
  %247 = trunc i8 %246 to i1
  br i1 %247, label %249, label %248

248:                                              ; preds = %245
  store i32 9, ptr %23, align 4
  br label %606

249:                                              ; preds = %245
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #0
  %250 = load ptr, ptr %25, align 8, !tbaa !5
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %250)
          to label %252 unwind label %258

252:                                              ; preds = %249
  store ptr %251, ptr %27, align 8, !tbaa !5
  br label %253

253:                                              ; preds = %600, %252
  %254 = load ptr, ptr %27, align 8, !tbaa !5
  %255 = load i8, ptr %26, align 1, !tbaa !9, !range !36, !noundef !37
  %256 = trunc i8 %255 to i1
  br i1 %256, label %262, label %257

257:                                              ; preds = %253
  store i32 12, ptr %23, align 4
  br label %601

258:                                              ; preds = %341, %332, %330, %326, %310, %298, %293, %288, %283, %278, %276, %274, %271, %269, %266, %263, %249
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %16, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %17, align 4
  br label %603

262:                                              ; preds = %253
  br label %263

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

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

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

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

271:                                              ; preds = %269
  %272 = load ptr, ptr %11, align 8, !tbaa !5
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %270, ptr noundef nonnull align 8 dereferenceable(8) %272)
          to label %274 unwind label %258

274:                                              ; preds = %271
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef @.str.75)
          to label %276 unwind label %258

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

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

280:                                              ; preds = %278
  br label %281

281:                                              ; preds = %280, %265
  br label %282

282:                                              ; preds = %281
  br label %283

283:                                              ; preds = %282
  %284 = load ptr, ptr %11, align 8, !tbaa !5
  %285 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 10
  %286 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(8) %285)
          to label %287 unwind label %258

287:                                              ; preds = %283
  br i1 %286, label %298, label %288

288:                                              ; preds = %287
  %289 = load ptr, ptr %11, align 8, !tbaa !5
  %290 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 11
  %291 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %289, ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %292 unwind label %258

292:                                              ; preds = %288
  br i1 %291, label %298, label %293

293:                                              ; preds = %292
  %294 = load ptr, ptr %11, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  %296 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %297 unwind label %258

297:                                              ; preds = %293
  br i1 %296, label %298, label %599

298:                                              ; preds = %297, %292, %287
  %299 = load ptr, ptr %12, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.HIR::PathParams", ptr %299, i32 0, i32 1
  %301 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %302 unwind label %258

302:                                              ; preds = %298
  %303 = icmp ne i64 %301, 1
  br i1 %303, label %304, label %326

304:                                              ; preds = %302
  br label %305

305:                                              ; preds = %304
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  %306 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %306)
          to label %307 unwind label %311

307:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 1 dereferenceable(1) %30) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %29)
          to label %308 unwind label %315

308:                                              ; preds = %307
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  %309 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %309, ptr noundef @.str.8)
          to label %310 unwind label %320

310:                                              ; preds = %308
  invoke void @__cxa_throw(ptr %309, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %258

311:                                              ; preds = %305
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %16, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %17, align 4
  br label %319

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %16, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #0
  br label %319

319:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %603

320:                                              ; preds = %308
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %16, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %17, align 4
  call void @__cxa_free_exception(ptr %309) #0
  br label %603

324:                                              ; No predecessors!
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325, %302
  %327 = load ptr, ptr %12, align 8, !tbaa !5
  %328 = getelementptr inbounds %"struct.HIR::PathParams", ptr %327, i32 0, i32 1
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %328, i64 noundef 0)
          to label %330 unwind label %258

330:                                              ; preds = %326
  %331 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %329)
          to label %332 unwind label %258

332:                                              ; preds = %330
  %333 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %331)
          to label %334 unwind label %258

334:                                              ; preds = %332
  br i1 %333, label %357, label %335

335:                                              ; preds = %334
  br label %336

336:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  %337 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %337)
          to label %338 unwind label %342

338:                                              ; preds = %336
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 1 dereferenceable(1) %33) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef %32)
          to label %339 unwind label %346

339:                                              ; preds = %338
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  %340 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %340, ptr noundef @.str.8)
          to label %341 unwind label %351

341:                                              ; preds = %339
  invoke void @__cxa_throw(ptr %340, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %258

342:                                              ; preds = %336
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %16, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %17, align 4
  br label %350

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

350:                                              ; preds = %346, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  br label %603

351:                                              ; preds = %339
  %352 = landingpad { ptr, i32 }
          cleanup
  %353 = extractvalue { ptr, i32 } %352, 0
  store ptr %353, ptr %16, align 8
  %354 = extractvalue { ptr, i32 } %352, 1
  store i32 %354, ptr %17, align 4
  call void @__cxa_free_exception(ptr %340) #0
  br label %603

355:                                              ; No predecessors!
  br label %356

356:                                              ; preds = %355
  br label %357

357:                                              ; preds = %356, %334
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  %358 = load ptr, ptr %12, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.HIR::PathParams", ptr %358, i32 0, i32 1
  %360 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %359, i64 noundef 0)
          to label %361 unwind label %375

361:                                              ; preds = %357
  %362 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %360)
          to label %363 unwind label %375

363:                                              ; preds = %361
  %364 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %362)
          to label %365 unwind label %375

365:                                              ; preds = %363
  store ptr %364, ptr %34, align 8, !tbaa !5
  %366 = load ptr, ptr %34, align 8, !tbaa !5
  %367 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %366) #0
  %368 = load ptr, ptr %27, align 8, !tbaa !5
  %369 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %368, i32 0, i32 0
  %370 = load ptr, ptr %369, align 8, !tbaa !40
  %371 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %370, i32 0, i32 1
  %372 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %371) #0
  %373 = icmp ne i64 %367, %372
  br i1 %373, label %374, label %379

374:                                              ; preds = %365
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %597

375:                                              ; preds = %363, %361, %357
  %376 = landingpad { ptr, i32 }
          cleanup
  %377 = extractvalue { ptr, i32 } %376, 0
  store ptr %377, ptr %16, align 8
  %378 = extractvalue { ptr, i32 } %376, 1
  store i32 %378, ptr %17, align 4
  br label %598

379:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #0
  store i32 0, ptr %35, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #0
  store i32 0, ptr %37, align 4, !tbaa !38
  br label %380

380:                                              ; preds = %453, %379
  %381 = load i32, ptr %37, align 4, !tbaa !38
  %382 = zext i32 %381 to i64
  %383 = load ptr, ptr %27, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %383, i32 0, i32 0
  %385 = load ptr, ptr %384, align 8, !tbaa !40
  %386 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %385, i32 0, i32 1
  %387 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #0
  %388 = icmp ult i64 %382, %387
  br i1 %388, label %390, label %389

389:                                              ; preds = %380
  store i32 21, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #0
  br label %461

390:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #0
  %391 = load ptr, ptr %27, align 8, !tbaa !5
  %392 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %391, i32 0, i32 0
  %393 = load ptr, ptr %392, align 8, !tbaa !40
  %394 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %393, i32 0, i32 1
  %395 = load i32, ptr %37, align 4, !tbaa !38
  %396 = zext i32 %395 to i64
  %397 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %394, i64 noundef %396) #0
  %398 = getelementptr inbounds %"struct.std::pair", ptr %397, i32 0, i32 1
  store ptr %398, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %399 = load ptr, ptr %38, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %39, ptr noundef nonnull align 8 dereferenceable(8) %399)
          to label %400 unwind label %424

400:                                              ; preds = %390
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(8) %39)
          to label %401 unwind label %428

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

402:                                              ; preds = %401
  %403 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %404 unwind label %433

404:                                              ; preds = %402
  br i1 %403, label %405, label %437

405:                                              ; preds = %404
  %406 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %406, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %408 unwind label %433

408:                                              ; preds = %405
  %409 = load ptr, ptr %38, align 8, !tbaa !5
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %407, ptr noundef nonnull align 8 dereferenceable(8) %409)
          to label %411 unwind label %433

411:                                              ; preds = %408
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef @.str.76)
          to label %413 unwind label %433

413:                                              ; preds = %411
  %414 = load ptr, ptr %34, align 8, !tbaa !5
  %415 = load i32, ptr %37, align 4, !tbaa !38
  %416 = zext i32 %415 to i64
  %417 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %414, i64 noundef %416) #0
  %418 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(8) %417)
          to label %419 unwind label %433

419:                                              ; preds = %413
  %420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %418, ptr noundef @_ZSt3decRSt8ios_base)
          to label %421 unwind label %433

421:                                              ; preds = %419
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %420, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %423 unwind label %433

423:                                              ; preds = %421
  br label %437

424:                                              ; preds = %390
  %425 = landingpad { ptr, i32 }
          cleanup
  %426 = extractvalue { ptr, i32 } %425, 0
  store ptr %426, ptr %16, align 8
  %427 = extractvalue { ptr, i32 } %425, 1
  store i32 %427, ptr %17, align 4
  br label %432

428:                                              ; preds = %400
  %429 = landingpad { ptr, i32 }
          cleanup
  %430 = extractvalue { ptr, i32 } %429, 0
  store ptr %430, ptr %16, align 8
  %431 = extractvalue { ptr, i32 } %429, 1
  store i32 %431, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br label %432

432:                                              ; preds = %428, %424
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  br label %460

433:                                              ; preds = %421, %419, %413, %411, %408, %405, %402
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %16, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %17, align 4
  br label %460

437:                                              ; preds = %423, %404
  br label %438

438:                                              ; preds = %437
  br label %439

439:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 4, ptr %40) #0
  %440 = load ptr, ptr %38, align 8, !tbaa !5
  %441 = load ptr, ptr %10, align 8, !tbaa !5
  %442 = load ptr, ptr %34, align 8, !tbaa !5
  %443 = load i32, ptr %37, align 4, !tbaa !38
  %444 = zext i32 %443 to i64
  %445 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %442, i64 noundef %444) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #0
  %446 = getelementptr inbounds %class.TraitResolution, ptr %161, i32 0, i32 2
  %447 = load ptr, ptr %446, align 8, !tbaa !12
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %41, ptr noundef nonnull align 8 dereferenceable(49) %447)
          to label %448 unwind label %456

448:                                              ; preds = %439
  %449 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull align 8 dereferenceable(8) %41)
          to label %450 unwind label %456

450:                                              ; preds = %448
  store i32 %449, ptr %40, align 4, !tbaa !42
  %451 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %35, ptr noundef nonnull align 4 dereferenceable(4) %40)
          to label %452 unwind label %456

452:                                              ; preds = %450
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  br label %453

453:                                              ; preds = %452
  %454 = load i32, ptr %37, align 4, !tbaa !38
  %455 = add i32 %454, 1
  store i32 %455, ptr %37, align 4, !tbaa !38
  br label %380, !llvm.loop !44

456:                                              ; preds = %450, %448, %439
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %16, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %40) #0
  br label %460

460:                                              ; preds = %456, %433, %432
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #0
  br label %596

461:                                              ; preds = %389
  %462 = load i32, ptr %35, align 4, !tbaa !42
  %463 = icmp ne i32 %462, 2
  br i1 %463, label %464, label %578

464:                                              ; preds = %461
  br label %465

465:                                              ; preds = %464
  %466 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %467 unwind label %480

467:                                              ; preds = %465
  br i1 %466, label %468, label %484

468:                                              ; preds = %467
  %469 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %469, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %471 unwind label %480

471:                                              ; preds = %468
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef @.str.77)
          to label %473 unwind label %480

473:                                              ; preds = %471
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7CompareE(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %475 unwind label %480

475:                                              ; preds = %473
  %476 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef @_ZSt3decRSt8ios_base)
          to label %477 unwind label %480

477:                                              ; preds = %475
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %479 unwind label %480

479:                                              ; preds = %477
  br label %484

480:                                              ; preds = %589, %587, %585, %582, %579, %477, %475, %473, %471, %468, %465
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %16, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %17, align 4
  br label %596

484:                                              ; preds = %479, %467
  br label %485

485:                                              ; preds = %484
  br label %486

486:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 24, ptr %42) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %487 unwind label %516

487:                                              ; preds = %486
  %488 = getelementptr inbounds %"struct.HIR::PathParams", ptr %42, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %44, ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef %44)
          to label %489 unwind label %520

489:                                              ; preds = %487
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %488, ptr noundef %43)
          to label %490 unwind label %524

490:                                              ; preds = %489
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %45) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %46) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %47) #0
  %491 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %47, i32 0, i32 0
  %492 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %493 unwind label %529

493:                                              ; preds = %490
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %49, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %494 unwind label %533

494:                                              ; preds = %493
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %491, ptr noundef %48, ptr noundef %49)
          to label %495 unwind label %537

495:                                              ; preds = %494
  %496 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %47, i32 0, i32 1
  %497 = load ptr, ptr %27, align 8, !tbaa !5
  %498 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %497, i32 0, i32 0
  %499 = load ptr, ptr %498, align 8, !tbaa !40
  %500 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %499, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %496, ptr noundef nonnull align 8 dereferenceable(8) %500)
          to label %501 unwind label %541

501:                                              ; preds = %495
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.450") align 8 %46, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %47)
          to label %502 unwind label %545

502:                                              ; preds = %501
  %503 = 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) %45, ptr noundef nonnull align 8 dereferenceable(48) %46)
          to label %504 unwind label %549

504:                                              ; preds = %502
  %505 = getelementptr inbounds { ptr, i8 }, ptr %50, i32 0, i32 0
  %506 = extractvalue { ptr, i8 } %503, 0
  store ptr %506, ptr %505, align 8
  %507 = getelementptr inbounds { ptr, i8 }, ptr %50, i32 0, i32 1
  %508 = extractvalue { ptr, i8 } %503, 1
  store i8 %508, ptr %507, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #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 @llvm.lifetime.end.p0(i64 48, ptr %46) #0
  %509 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %52, ptr noundef nonnull align 8 dereferenceable(8) %509)
          to label %510 unwind label %557

510:                                              ; preds = %504
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %53, ptr noundef nonnull align 8 dereferenceable(24) %42)
          to label %511 unwind label %561

511:                                              ; preds = %510
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %54, ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %51, ptr noundef %52, ptr noundef %53, ptr noundef %54)
          to label %512 unwind label %565

512:                                              ; preds = %511
  %513 = load i32, ptr %35, align 4, !tbaa !42
  %514 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %51, i32 noundef %513)
          to label %515 unwind label %569

515:                                              ; preds = %512
  store i1 %514, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %51) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #0
  br label %595

516:                                              ; preds = %486
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %16, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %17, align 4
  br label %577

520:                                              ; preds = %487
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %16, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %17, align 4
  br label %528

524:                                              ; preds = %489
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %16, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  br label %528

528:                                              ; preds = %524, %520
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #0
  br label %576

529:                                              ; preds = %490
  %530 = landingpad { ptr, i32 }
          cleanup
  %531 = extractvalue { ptr, i32 } %530, 0
  store ptr %531, ptr %16, align 8
  %532 = extractvalue { ptr, i32 } %530, 1
  store i32 %532, ptr %17, align 4
  br label %556

533:                                              ; preds = %493
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %16, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %17, align 4
  br label %555

537:                                              ; preds = %494
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %16, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %17, align 4
  br label %554

541:                                              ; preds = %495
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %16, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %17, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %491) #0
  br label %554

545:                                              ; preds = %501
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %16, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %17, align 4
  br label %553

549:                                              ; preds = %502
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %16, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %17, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %46) #0
  br label %553

553:                                              ; preds = %549, %545
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %47) #0
  br label %554

554:                                              ; preds = %553, %541, %537
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %49) #0
  br label %555

555:                                              ; preds = %554, %533
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #0
  br label %556

556:                                              ; preds = %555, %529
  call void @llvm.lifetime.end.p0(i64 40, ptr %47) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %46) #0
  br label %575

557:                                              ; preds = %504
  %558 = landingpad { ptr, i32 }
          cleanup
  %559 = extractvalue { ptr, i32 } %558, 0
  store ptr %559, ptr %16, align 8
  %560 = extractvalue { ptr, i32 } %558, 1
  store i32 %560, ptr %17, align 4
  br label %575

561:                                              ; preds = %510
  %562 = landingpad { ptr, i32 }
          cleanup
  %563 = extractvalue { ptr, i32 } %562, 0
  store ptr %563, ptr %16, align 8
  %564 = extractvalue { ptr, i32 } %562, 1
  store i32 %564, ptr %17, align 4
  br label %574

565:                                              ; preds = %511
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %16, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %17, align 4
  br label %573

569:                                              ; preds = %512
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %16, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %51) #0
  br label %573

573:                                              ; preds = %569, %565
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #0
  br label %574

574:                                              ; preds = %573, %561
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  br label %575

575:                                              ; preds = %574, %557, %556
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %45) #0
  br label %576

576:                                              ; preds = %575, %528
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #0
  br label %577

577:                                              ; preds = %576, %516
  call void @llvm.lifetime.end.p0(i64 24, ptr %42) #0
  br label %596

578:                                              ; preds = %461
  br label %579

579:                                              ; preds = %578
  %580 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %581 unwind label %480

581:                                              ; preds = %579
  br i1 %580, label %582, label %592

582:                                              ; preds = %581
  %583 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %584 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %583, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %585 unwind label %480

585:                                              ; preds = %582
  %586 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef @.str.79)
          to label %587 unwind label %480

587:                                              ; preds = %585
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef @_ZSt3decRSt8ios_base)
          to label %589 unwind label %480

589:                                              ; preds = %587
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %591 unwind label %480

591:                                              ; preds = %589
  br label %592

592:                                              ; preds = %591, %581
  br label %593

593:                                              ; preds = %592
  br label %594

594:                                              ; preds = %593
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %595

595:                                              ; preds = %594, %515
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #0
  br label %597

596:                                              ; preds = %577, %480, %460
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #0
  br label %598

597:                                              ; preds = %595, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %601

598:                                              ; preds = %596, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %603

599:                                              ; preds = %297
  br label %600

600:                                              ; preds = %599
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %253, !llvm.loop !46

601:                                              ; preds = %597, %257
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  %602 = load i32, ptr %23, align 4
  switch i32 %602, label %606 [
    i32 12, label %604
  ]

603:                                              ; preds = %598, %351, %350, %320, %319, %258
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  br label %1924

604:                                              ; preds = %601
  br label %605

605:                                              ; preds = %604
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %245, !llvm.loop !47

606:                                              ; preds = %601, %248
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  %607 = load i32, ptr %23, align 4
  switch i32 %607, label %1922 [
    i32 9, label %608
  ]

608:                                              ; preds = %606
  br label %1920

609:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #0
  store i8 1, ptr %55, align 1, !tbaa !9
  br label %610

610:                                              ; preds = %925, %609
  %611 = load i8, ptr %55, align 1, !tbaa !9, !range !36, !noundef !37
  %612 = trunc i8 %611 to i1
  br i1 %612, label %614, label %613

613:                                              ; preds = %610
  store i32 30, ptr %23, align 4
  br label %926

614:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #0
  %615 = load ptr, ptr %25, align 8, !tbaa !5
  %616 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %615)
          to label %617 unwind label %623

617:                                              ; preds = %614
  store ptr %616, ptr %56, align 8, !tbaa !5
  br label %618

618:                                              ; preds = %920, %617
  %619 = load ptr, ptr %56, align 8, !tbaa !5
  %620 = load i8, ptr %55, align 1, !tbaa !9, !range !36, !noundef !37
  %621 = trunc i8 %620 to i1
  br i1 %621, label %627, label %622

622:                                              ; preds = %618
  store i32 33, ptr %23, align 4
  br label %921

623:                                              ; preds = %685, %676, %674, %670, %654, %642, %637, %632, %627, %614
  %624 = landingpad { ptr, i32 }
          cleanup
  %625 = extractvalue { ptr, i32 } %624, 0
  store ptr %625, ptr %16, align 8
  %626 = extractvalue { ptr, i32 } %624, 1
  store i32 %626, ptr %17, align 4
  br label %923

627:                                              ; preds = %618
  %628 = load ptr, ptr %11, align 8, !tbaa !5
  %629 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 10
  %630 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef nonnull align 8 dereferenceable(8) %629)
          to label %631 unwind label %623

631:                                              ; preds = %627
  br i1 %630, label %642, label %632

632:                                              ; preds = %631
  %633 = load ptr, ptr %11, align 8, !tbaa !5
  %634 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 11
  %635 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %633, ptr noundef nonnull align 8 dereferenceable(8) %634)
          to label %636 unwind label %623

636:                                              ; preds = %632
  br i1 %635, label %642, label %637

637:                                              ; preds = %636
  %638 = load ptr, ptr %11, align 8, !tbaa !5
  %639 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  %640 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull align 8 dereferenceable(8) %639)
          to label %641 unwind label %623

641:                                              ; preds = %637
  br i1 %640, label %642, label %919

642:                                              ; preds = %641, %636, %631
  %643 = load ptr, ptr %12, align 8, !tbaa !5
  %644 = getelementptr inbounds %"struct.HIR::PathParams", ptr %643, i32 0, i32 1
  %645 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %644)
          to label %646 unwind label %623

646:                                              ; preds = %642
  %647 = icmp ne i64 %645, 1
  br i1 %647, label %648, label %670

648:                                              ; preds = %646
  br label %649

649:                                              ; preds = %648
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #0
  %650 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) %650)
          to label %651 unwind label %655

651:                                              ; preds = %649
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 1 dereferenceable(1) %59) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef %58)
          to label %652 unwind label %659

652:                                              ; preds = %651
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  %653 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %653, ptr noundef @.str.8)
          to label %654 unwind label %664

654:                                              ; preds = %652
  invoke void @__cxa_throw(ptr %653, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %623

655:                                              ; preds = %649
  %656 = landingpad { ptr, i32 }
          cleanup
  %657 = extractvalue { ptr, i32 } %656, 0
  store ptr %657, ptr %16, align 8
  %658 = extractvalue { ptr, i32 } %656, 1
  store i32 %658, ptr %17, align 4
  br label %663

659:                                              ; preds = %651
  %660 = landingpad { ptr, i32 }
          cleanup
  %661 = extractvalue { ptr, i32 } %660, 0
  store ptr %661, ptr %16, align 8
  %662 = extractvalue { ptr, i32 } %660, 1
  store i32 %662, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  br label %663

663:                                              ; preds = %659, %655
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #0
  br label %923

664:                                              ; preds = %652
  %665 = landingpad { ptr, i32 }
          cleanup
  %666 = extractvalue { ptr, i32 } %665, 0
  store ptr %666, ptr %16, align 8
  %667 = extractvalue { ptr, i32 } %665, 1
  store i32 %667, ptr %17, align 4
  call void @__cxa_free_exception(ptr %653) #0
  br label %923

668:                                              ; No predecessors!
  br label %669

669:                                              ; preds = %668
  br label %670

670:                                              ; preds = %669, %646
  %671 = load ptr, ptr %12, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.HIR::PathParams", ptr %671, i32 0, i32 1
  %673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %672, i64 noundef 0)
          to label %674 unwind label %623

674:                                              ; preds = %670
  %675 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %673)
          to label %676 unwind label %623

676:                                              ; preds = %674
  %677 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %675)
          to label %678 unwind label %623

678:                                              ; preds = %676
  br i1 %677, label %701, label %679

679:                                              ; preds = %678
  br label %680

680:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #0
  %681 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %681)
          to label %682 unwind label %686

682:                                              ; preds = %680
  call void @llvm.lifetime.start.p0(i64 1, ptr %62) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 1 dereferenceable(1) %62) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef %61)
          to label %683 unwind label %690

683:                                              ; preds = %682
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #0
  %684 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %684, ptr noundef @.str.8)
          to label %685 unwind label %695

685:                                              ; preds = %683
  invoke void @__cxa_throw(ptr %684, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %623

686:                                              ; preds = %680
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %16, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %17, align 4
  br label %694

690:                                              ; preds = %682
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %16, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %62) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  br label %694

694:                                              ; preds = %690, %686
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #0
  br label %923

695:                                              ; preds = %683
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %16, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %17, align 4
  call void @__cxa_free_exception(ptr %684) #0
  br label %923

699:                                              ; No predecessors!
  br label %700

700:                                              ; preds = %699
  br label %701

701:                                              ; preds = %700, %678
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #0
  %702 = load ptr, ptr %12, align 8, !tbaa !5
  %703 = getelementptr inbounds %"struct.HIR::PathParams", ptr %702, i32 0, i32 1
  %704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %703, i64 noundef 0)
          to label %705 unwind label %717

705:                                              ; preds = %701
  %706 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %704)
          to label %707 unwind label %717

707:                                              ; preds = %705
  %708 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %706)
          to label %709 unwind label %717

709:                                              ; preds = %707
  store ptr %708, ptr %63, align 8, !tbaa !5
  %710 = load ptr, ptr %63, align 8, !tbaa !5
  %711 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %710) #0
  %712 = load ptr, ptr %56, align 8, !tbaa !5
  %713 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %712, i32 0, i32 5
  %714 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %713) #0
  %715 = icmp ne i64 %711, %714
  br i1 %715, label %716, label %721

716:                                              ; preds = %709
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %917

717:                                              ; preds = %765, %763, %760, %758, %755, %752, %745, %743, %740, %738, %735, %732, %721, %707, %705, %701
  %718 = landingpad { ptr, i32 }
          cleanup
  %719 = extractvalue { ptr, i32 } %718, 0
  store ptr %719, ptr %16, align 8
  %720 = extractvalue { ptr, i32 } %718, 1
  store i32 %720, ptr %17, align 4
  br label %918

721:                                              ; preds = %709
  %722 = load ptr, ptr %56, align 8, !tbaa !5
  %723 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %722, i32 0, i32 3
  %724 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %723, ptr noundef @.str.80)
          to label %725 unwind label %717

725:                                              ; preds = %721
  br i1 %724, label %731, label %726

726:                                              ; preds = %725
  %727 = load ptr, ptr %56, align 8, !tbaa !5
  %728 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %727, i32 0, i32 1
  %729 = load i8, ptr %728, align 8, !tbaa !48, !range !36, !noundef !37
  %730 = trunc i8 %729 to i1
  br i1 %730, label %731, label %751

731:                                              ; preds = %726, %725
  br label %732

732:                                              ; preds = %731
  %733 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %734 unwind label %717

734:                                              ; preds = %732
  br i1 %733, label %735, label %748

735:                                              ; preds = %734
  %736 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %736, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %738 unwind label %717

738:                                              ; preds = %735
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %737, ptr noundef @.str.81)
          to label %740 unwind label %717

740:                                              ; preds = %738
  %741 = load ptr, ptr %18, align 8, !tbaa !5
  %742 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %739, ptr noundef nonnull align 8 dereferenceable(8) %741)
          to label %743 unwind label %717

743:                                              ; preds = %740
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %742, ptr noundef @_ZSt3decRSt8ios_base)
          to label %745 unwind label %717

745:                                              ; preds = %743
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %747 unwind label %717

747:                                              ; preds = %745
  br label %748

748:                                              ; preds = %747, %734
  br label %749

749:                                              ; preds = %748
  br label %750

750:                                              ; preds = %749
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %917

751:                                              ; preds = %726
  br label %752

752:                                              ; preds = %751
  %753 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %754 unwind label %717

754:                                              ; preds = %752
  br i1 %753, label %755, label %768

755:                                              ; preds = %754
  %756 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %757 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %756, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %758 unwind label %717

758:                                              ; preds = %755
  %759 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %757, ptr noundef @.str.82)
          to label %760 unwind label %717

760:                                              ; preds = %758
  %761 = load ptr, ptr %18, align 8, !tbaa !5
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %759, ptr noundef nonnull align 8 dereferenceable(8) %761)
          to label %763 unwind label %717

763:                                              ; preds = %760
  %764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %762, ptr noundef @_ZSt3decRSt8ios_base)
          to label %765 unwind label %717

765:                                              ; preds = %763
  %766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %764, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %767 unwind label %717

767:                                              ; preds = %765
  br label %768

768:                                              ; preds = %767, %754
  br label %769

769:                                              ; preds = %768
  br label %770

770:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 4, ptr %64) #0
  store i32 0, ptr %64, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 24, ptr %65) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #0
  store i32 0, ptr %66, align 4, !tbaa !38
  br label %771

771:                                              ; preds = %801, %770
  %772 = load i32, ptr %66, align 4, !tbaa !38
  %773 = zext i32 %772 to i64
  %774 = load ptr, ptr %56, align 8, !tbaa !5
  %775 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %774, i32 0, i32 5
  %776 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %775) #0
  %777 = icmp ult i64 %773, %776
  br i1 %777, label %779, label %778

778:                                              ; preds = %771
  store i32 44, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #0
  br label %818

779:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %780 = load ptr, ptr %56, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %780, i32 0, i32 5
  %782 = load i32, ptr %66, align 4, !tbaa !38
  %783 = zext i32 %782 to i64
  %784 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %781, i64 noundef %783) #0
  store ptr %784, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  %785 = load ptr, ptr %67, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %68, ptr noundef nonnull align 8 dereferenceable(8) %785)
          to label %786 unwind label %804

786:                                              ; preds = %779
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %65, ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %787 unwind label %808

787:                                              ; preds = %786
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %69) #0
  %788 = load ptr, ptr %67, align 8, !tbaa !5
  %789 = load ptr, ptr %10, align 8, !tbaa !5
  %790 = load ptr, ptr %63, align 8, !tbaa !5
  %791 = load i32, ptr %66, align 4, !tbaa !38
  %792 = zext i32 %791 to i64
  %793 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %790, i64 noundef %792) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %70) #0
  %794 = getelementptr inbounds %class.TraitResolution, ptr %161, i32 0, i32 2
  %795 = load ptr, ptr %794, align 8, !tbaa !12
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %70, ptr noundef nonnull align 8 dereferenceable(49) %795)
          to label %796 unwind label %813

796:                                              ; preds = %787
  %797 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %788, ptr noundef nonnull align 8 dereferenceable(8) %789, ptr noundef nonnull align 8 dereferenceable(8) %793, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %798 unwind label %813

798:                                              ; preds = %796
  store i32 %797, ptr %69, align 4, !tbaa !42
  %799 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %64, ptr noundef nonnull align 4 dereferenceable(4) %69)
          to label %800 unwind label %813

800:                                              ; preds = %798
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %801

801:                                              ; preds = %800
  %802 = load i32, ptr %66, align 4, !tbaa !38
  %803 = add i32 %802, 1
  store i32 %803, ptr %66, align 4, !tbaa !38
  br label %771, !llvm.loop !73

804:                                              ; preds = %779
  %805 = landingpad { ptr, i32 }
          cleanup
  %806 = extractvalue { ptr, i32 } %805, 0
  store ptr %806, ptr %16, align 8
  %807 = extractvalue { ptr, i32 } %805, 1
  store i32 %807, ptr %17, align 4
  br label %812

808:                                              ; preds = %786
  %809 = landingpad { ptr, i32 }
          cleanup
  %810 = extractvalue { ptr, i32 } %809, 0
  store ptr %810, ptr %16, align 8
  %811 = extractvalue { ptr, i32 } %809, 1
  store i32 %811, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  br label %812

812:                                              ; preds = %808, %804
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %817

813:                                              ; preds = %798, %796, %787
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %16, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %70) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %69) #0
  br label %817

817:                                              ; preds = %813, %812
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #0
  br label %916

818:                                              ; preds = %778
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %819 unwind label %849

819:                                              ; preds = %818
  %820 = getelementptr inbounds %"struct.HIR::PathParams", ptr %71, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef %73)
          to label %821 unwind label %853

821:                                              ; preds = %819
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %820, ptr noundef %72)
          to label %822 unwind label %857

822:                                              ; preds = %821
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %74) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %75) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %76) #0
  %823 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %76, i32 0, i32 0
  %824 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %825 unwind label %862

825:                                              ; preds = %822
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %78, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %826 unwind label %866

826:                                              ; preds = %825
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %823, ptr noundef %77, ptr noundef %78)
          to label %827 unwind label %870

827:                                              ; preds = %826
  %828 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %76, i32 0, i32 1
  %829 = load ptr, ptr %56, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %829, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %828, ptr noundef nonnull align 8 dereferenceable(8) %830)
          to label %831 unwind label %874

831:                                              ; preds = %827
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.450") align 8 %75, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %76)
          to label %832 unwind label %878

832:                                              ; preds = %831
  %833 = 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) %74, ptr noundef nonnull align 8 dereferenceable(48) %75)
          to label %834 unwind label %882

834:                                              ; preds = %832
  %835 = getelementptr inbounds { ptr, i8 }, ptr %79, i32 0, i32 0
  %836 = extractvalue { ptr, i8 } %833, 0
  store ptr %836, ptr %835, align 8
  %837 = getelementptr inbounds { ptr, i8 }, ptr %79, i32 0, i32 1
  %838 = extractvalue { ptr, i8 } %833, 1
  store i8 %838, ptr %837, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #0
  %839 = load ptr, ptr %56, align 8, !tbaa !5
  %840 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %839, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %81, ptr noundef nonnull align 8 dereferenceable(96) %840)
          to label %841 unwind label %890

841:                                              ; preds = %834
  %842 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %82, ptr noundef nonnull align 8 dereferenceable(8) %842)
          to label %843 unwind label %894

843:                                              ; preds = %841
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %83, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %844 unwind label %898

844:                                              ; preds = %843
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %84, ptr noundef nonnull align 8 dereferenceable(48) %74) #0
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %80, ptr noundef %81, ptr noundef %82, ptr noundef %83, ptr noundef %84)
          to label %845 unwind label %902

845:                                              ; preds = %844
  %846 = load i32, ptr %64, align 4, !tbaa !42
  %847 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %80, i32 noundef %846)
          to label %848 unwind label %906

848:                                              ; preds = %845
  store i1 %847, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %80) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %81) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %74) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #0
  br label %917

849:                                              ; preds = %818
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %16, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %17, align 4
  br label %915

853:                                              ; preds = %819
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %16, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %17, align 4
  br label %861

857:                                              ; preds = %821
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %16, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  br label %861

861:                                              ; preds = %857, %853
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #0
  br label %914

862:                                              ; preds = %822
  %863 = landingpad { ptr, i32 }
          cleanup
  %864 = extractvalue { ptr, i32 } %863, 0
  store ptr %864, ptr %16, align 8
  %865 = extractvalue { ptr, i32 } %863, 1
  store i32 %865, ptr %17, align 4
  br label %889

866:                                              ; preds = %825
  %867 = landingpad { ptr, i32 }
          cleanup
  %868 = extractvalue { ptr, i32 } %867, 0
  store ptr %868, ptr %16, align 8
  %869 = extractvalue { ptr, i32 } %867, 1
  store i32 %869, ptr %17, align 4
  br label %888

870:                                              ; preds = %826
  %871 = landingpad { ptr, i32 }
          cleanup
  %872 = extractvalue { ptr, i32 } %871, 0
  store ptr %872, ptr %16, align 8
  %873 = extractvalue { ptr, i32 } %871, 1
  store i32 %873, ptr %17, align 4
  br label %887

874:                                              ; preds = %827
  %875 = landingpad { ptr, i32 }
          cleanup
  %876 = extractvalue { ptr, i32 } %875, 0
  store ptr %876, ptr %16, align 8
  %877 = extractvalue { ptr, i32 } %875, 1
  store i32 %877, ptr %17, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %823) #0
  br label %887

878:                                              ; preds = %831
  %879 = landingpad { ptr, i32 }
          cleanup
  %880 = extractvalue { ptr, i32 } %879, 0
  store ptr %880, ptr %16, align 8
  %881 = extractvalue { ptr, i32 } %879, 1
  store i32 %881, ptr %17, align 4
  br label %886

882:                                              ; preds = %832
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %16, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %17, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #0
  br label %886

886:                                              ; preds = %882, %878
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #0
  br label %887

887:                                              ; preds = %886, %874, %870
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #0
  br label %888

888:                                              ; preds = %887, %866
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #0
  br label %889

889:                                              ; preds = %888, %862
  call void @llvm.lifetime.end.p0(i64 40, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %75) #0
  br label %913

890:                                              ; preds = %834
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %16, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %17, align 4
  br label %913

894:                                              ; preds = %841
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %16, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %17, align 4
  br label %912

898:                                              ; preds = %843
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %16, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %17, align 4
  br label %911

902:                                              ; preds = %844
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %16, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %17, align 4
  br label %910

906:                                              ; preds = %845
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %16, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %80) #0
  br label %910

910:                                              ; preds = %906, %902
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %84) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %83) #0
  br label %911

911:                                              ; preds = %910, %898
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  br label %912

912:                                              ; preds = %911, %894
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %81) #0
  br label %913

913:                                              ; preds = %912, %890, %889
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %74) #0
  br label %914

914:                                              ; preds = %913, %861
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #0
  br label %915

915:                                              ; preds = %914, %849
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #0
  br label %916

916:                                              ; preds = %915, %817
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %65) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %64) #0
  br label %918

917:                                              ; preds = %848, %750, %716
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %921

918:                                              ; preds = %916, %717
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #0
  br label %923

919:                                              ; preds = %641
  br label %920

920:                                              ; preds = %919
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %618, !llvm.loop !74

921:                                              ; preds = %917, %622
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  %922 = load i32, ptr %23, align 4
  switch i32 %922, label %926 [
    i32 33, label %924
  ]

923:                                              ; preds = %918, %695, %694, %664, %663, %623
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #0
  br label %1924

924:                                              ; preds = %921
  br label %925

925:                                              ; preds = %924
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %610, !llvm.loop !75

926:                                              ; preds = %921, %613
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #0
  %927 = load i32, ptr %23, align 4
  switch i32 %927, label %1922 [
    i32 30, label %928
  ]

928:                                              ; preds = %926
  br label %1920

929:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %85) #0
  store i8 1, ptr %85, align 1, !tbaa !9
  br label %930

930:                                              ; preds = %1319, %929
  %931 = load i8, ptr %85, align 1, !tbaa !9, !range !36, !noundef !37
  %932 = trunc i8 %931 to i1
  br i1 %932, label %934, label %933

933:                                              ; preds = %930
  store i32 47, ptr %23, align 4
  br label %1320

934:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #0
  %935 = load ptr, ptr %25, align 8, !tbaa !5
  %936 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %935)
          to label %937 unwind label %943

937:                                              ; preds = %934
  store ptr %936, ptr %86, align 8, !tbaa !5
  br label %938

938:                                              ; preds = %1314, %937
  %939 = load ptr, ptr %86, align 8, !tbaa !5
  %940 = load i8, ptr %85, align 1, !tbaa !9, !range !36, !noundef !37
  %941 = trunc i8 %940 to i1
  br i1 %941, label %947, label %942

942:                                              ; preds = %938
  store i32 50, ptr %23, align 4
  br label %1315

943:                                              ; preds = %1035, %1033, %1030, %1028, %1025, %1022, %1005, %996, %994, %990, %974, %962, %957, %952, %947, %934
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %16, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %17, align 4
  br label %1317

947:                                              ; preds = %938
  %948 = load ptr, ptr %11, align 8, !tbaa !5
  %949 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 10
  %950 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %948, ptr noundef nonnull align 8 dereferenceable(8) %949)
          to label %951 unwind label %943

951:                                              ; preds = %947
  br i1 %950, label %962, label %952

952:                                              ; preds = %951
  %953 = load ptr, ptr %11, align 8, !tbaa !5
  %954 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 11
  %955 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %953, ptr noundef nonnull align 8 dereferenceable(8) %954)
          to label %956 unwind label %943

956:                                              ; preds = %952
  br i1 %955, label %962, label %957

957:                                              ; preds = %956
  %958 = load ptr, ptr %11, align 8, !tbaa !5
  %959 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  %960 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %958, ptr noundef nonnull align 8 dereferenceable(8) %959)
          to label %961 unwind label %943

961:                                              ; preds = %957
  br i1 %960, label %962, label %1313

962:                                              ; preds = %961, %956, %951
  %963 = load ptr, ptr %12, align 8, !tbaa !5
  %964 = getelementptr inbounds %"struct.HIR::PathParams", ptr %963, i32 0, i32 1
  %965 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %964)
          to label %966 unwind label %943

966:                                              ; preds = %962
  %967 = icmp ne i64 %965, 1
  br i1 %967, label %968, label %990

968:                                              ; preds = %966
  br label %969

969:                                              ; preds = %968
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %970 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %970)
          to label %971 unwind label %975

971:                                              ; preds = %969
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %88, ptr noundef nonnull align 1 dereferenceable(1) %89) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef %88)
          to label %972 unwind label %979

972:                                              ; preds = %971
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  %973 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %973, ptr noundef @.str.8)
          to label %974 unwind label %984

974:                                              ; preds = %972
  invoke void @__cxa_throw(ptr %973, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %943

975:                                              ; preds = %969
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %16, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %17, align 4
  br label %983

979:                                              ; preds = %971
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %16, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  br label %983

983:                                              ; preds = %979, %975
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1317

984:                                              ; preds = %972
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %16, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %17, align 4
  call void @__cxa_free_exception(ptr %973) #0
  br label %1317

988:                                              ; No predecessors!
  br label %989

989:                                              ; preds = %988
  br label %990

990:                                              ; preds = %989, %966
  %991 = load ptr, ptr %12, align 8, !tbaa !5
  %992 = getelementptr inbounds %"struct.HIR::PathParams", ptr %991, i32 0, i32 1
  %993 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %992, i64 noundef 0)
          to label %994 unwind label %943

994:                                              ; preds = %990
  %995 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %993)
          to label %996 unwind label %943

996:                                              ; preds = %994
  %997 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %995)
          to label %998 unwind label %943

998:                                              ; preds = %996
  br i1 %997, label %1021, label %999

999:                                              ; preds = %998
  br label %1000

1000:                                             ; preds = %999
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #0
  %1001 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %1001)
          to label %1002 unwind label %1006

1002:                                             ; preds = %1000
  call void @llvm.lifetime.start.p0(i64 1, ptr %92) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 1 dereferenceable(1) %92) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef %91)
          to label %1003 unwind label %1010

1003:                                             ; preds = %1002
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  %1004 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1004, ptr noundef @.str.8)
          to label %1005 unwind label %1015

1005:                                             ; preds = %1003
  invoke void @__cxa_throw(ptr %1004, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %943

1006:                                             ; preds = %1000
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %16, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %17, align 4
  br label %1014

1010:                                             ; preds = %1002
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %16, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %92) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %90) #0
  br label %1014

1014:                                             ; preds = %1010, %1006
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  br label %1317

1015:                                             ; preds = %1003
  %1016 = landingpad { ptr, i32 }
          cleanup
  %1017 = extractvalue { ptr, i32 } %1016, 0
  store ptr %1017, ptr %16, align 8
  %1018 = extractvalue { ptr, i32 } %1016, 1
  store i32 %1018, ptr %17, align 4
  call void @__cxa_free_exception(ptr %1004) #0
  br label %1317

1019:                                             ; No predecessors!
  br label %1020

1020:                                             ; preds = %1019
  br label %1021

1021:                                             ; preds = %1020, %998
  br label %1022

1022:                                             ; preds = %1021
  %1023 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1024 unwind label %943

1024:                                             ; preds = %1022
  br i1 %1023, label %1025, label %1038

1025:                                             ; preds = %1024
  %1026 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1027 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1026, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1028 unwind label %943

1028:                                             ; preds = %1025
  %1029 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1027, ptr noundef @.str.82)
          to label %1030 unwind label %943

1030:                                             ; preds = %1028
  %1031 = load ptr, ptr %18, align 8, !tbaa !5
  %1032 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1029, ptr noundef nonnull align 8 dereferenceable(8) %1031)
          to label %1033 unwind label %943

1033:                                             ; preds = %1030
  %1034 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1032, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1035 unwind label %943

1035:                                             ; preds = %1033
  %1036 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1034, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1037 unwind label %943

1037:                                             ; preds = %1035
  br label %1038

1038:                                             ; preds = %1037, %1024
  br label %1039

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 144, ptr %93) #0
  %1041 = load ptr, ptr %86, align 8, !tbaa !5
  %1042 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %93, ptr noundef nonnull align 8 dereferenceable(112) %1041, ptr noundef nonnull align 8 dereferenceable(8) %1042)
          to label %1043 unwind label %1065

1043:                                             ; preds = %1040
  br label %1044

1044:                                             ; preds = %1043
  %1045 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1046 unwind label %1069

1046:                                             ; preds = %1044
  br i1 %1045, label %1047, label %1073

1047:                                             ; preds = %1046
  %1048 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1049 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1048, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1050 unwind label %1069

1050:                                             ; preds = %1047
  %1051 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1049, ptr noundef @.str.83)
          to label %1052 unwind label %1069

1052:                                             ; preds = %1050
  %1053 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 4
  %1054 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1051, ptr noundef nonnull align 8 dereferenceable(8) %1053)
          to label %1055 unwind label %1069

1055:                                             ; preds = %1052
  %1056 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1054, ptr noundef @.str.84)
          to label %1057 unwind label %1069

1057:                                             ; preds = %1055
  %1058 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 5
  %1059 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIN3HIR7TypeRefEERSoS2_RKSt6vectorIT_SaIS4_EE(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef nonnull align 8 dereferenceable(24) %1058)
          to label %1060 unwind label %1069

1060:                                             ; preds = %1057
  %1061 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1059, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1062 unwind label %1069

1062:                                             ; preds = %1060
  %1063 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1061, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1064 unwind label %1069

1064:                                             ; preds = %1062
  br label %1073

1065:                                             ; preds = %1040
  %1066 = landingpad { ptr, i32 }
          cleanup
  %1067 = extractvalue { ptr, i32 } %1066, 0
  store ptr %1067, ptr %16, align 8
  %1068 = extractvalue { ptr, i32 } %1066, 1
  store i32 %1068, ptr %17, align 4
  br label %1312

1069:                                             ; preds = %1062, %1060, %1057, %1055, %1052, %1050, %1047, %1044
  %1070 = landingpad { ptr, i32 }
          cleanup
  %1071 = extractvalue { ptr, i32 } %1070, 0
  store ptr %1071, ptr %16, align 8
  %1072 = extractvalue { ptr, i32 } %1070, 1
  store i32 %1072, ptr %17, align 4
  br label %1311

1073:                                             ; preds = %1064, %1046
  br label %1074

1074:                                             ; preds = %1073
  br label %1075

1075:                                             ; preds = %1074
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #0
  %1076 = load ptr, ptr %12, align 8, !tbaa !5
  %1077 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1076, i32 0, i32 1
  %1078 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1077, i64 noundef 0)
          to label %1079 unwind label %1090

1079:                                             ; preds = %1075
  %1080 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1078)
          to label %1081 unwind label %1090

1081:                                             ; preds = %1079
  %1082 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1080)
          to label %1083 unwind label %1090

1083:                                             ; preds = %1081
  store ptr %1082, ptr %94, align 8, !tbaa !5
  %1084 = load ptr, ptr %94, align 8, !tbaa !5
  %1085 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1084) #0
  %1086 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 5
  %1087 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1086) #0
  %1088 = icmp ne i64 %1085, %1087
  br i1 %1088, label %1089, label %1094

1089:                                             ; preds = %1083
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1309

1090:                                             ; preds = %1161, %1159, %1156, %1154, %1151, %1148, %1141, %1139, %1136, %1134, %1131, %1128, %1117, %1115, %1112, %1110, %1107, %1105, %1102, %1099, %1094, %1081, %1079, %1075
  %1091 = landingpad { ptr, i32 }
          cleanup
  %1092 = extractvalue { ptr, i32 } %1091, 0
  store ptr %1092, ptr %16, align 8
  %1093 = extractvalue { ptr, i32 } %1091, 1
  store i32 %1093, ptr %17, align 4
  br label %1310

1094:                                             ; preds = %1083
  %1095 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 3
  %1096 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %1095, ptr noundef @.str.80)
          to label %1097 unwind label %1090

1097:                                             ; preds = %1094
  br i1 %1096, label %1098, label %1123

1098:                                             ; preds = %1097
  br label %1099

1099:                                             ; preds = %1098
  %1100 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1101 unwind label %1090

1101:                                             ; preds = %1099
  br i1 %1100, label %1102, label %1120

1102:                                             ; preds = %1101
  %1103 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1104 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1103, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1105 unwind label %1090

1105:                                             ; preds = %1102
  %1106 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1104, ptr noundef @.str.85)
          to label %1107 unwind label %1090

1107:                                             ; preds = %1105
  %1108 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 3
  %1109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1106, ptr noundef nonnull align 8 dereferenceable(8) %1108)
          to label %1110 unwind label %1090

1110:                                             ; preds = %1107
  %1111 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1109, ptr noundef @.str.86)
          to label %1112 unwind label %1090

1112:                                             ; preds = %1110
  %1113 = load ptr, ptr %18, align 8, !tbaa !5
  %1114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1111, ptr noundef nonnull align 8 dereferenceable(8) %1113)
          to label %1115 unwind label %1090

1115:                                             ; preds = %1112
  %1116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1114, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1117 unwind label %1090

1117:                                             ; preds = %1115
  %1118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1116, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1119 unwind label %1090

1119:                                             ; preds = %1117
  br label %1120

1120:                                             ; preds = %1119, %1101
  br label %1121

1121:                                             ; preds = %1120
  br label %1122

1122:                                             ; preds = %1121
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1309

1123:                                             ; preds = %1097
  %1124 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 1
  %1125 = load i8, ptr %1124, align 8, !tbaa !48, !range !36, !noundef !37
  %1126 = trunc i8 %1125 to i1
  br i1 %1126, label %1127, label %1147

1127:                                             ; preds = %1123
  br label %1128

1128:                                             ; preds = %1127
  %1129 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1130 unwind label %1090

1130:                                             ; preds = %1128
  br i1 %1129, label %1131, label %1144

1131:                                             ; preds = %1130
  %1132 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1132, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1134 unwind label %1090

1134:                                             ; preds = %1131
  %1135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1133, ptr noundef @.str.87)
          to label %1136 unwind label %1090

1136:                                             ; preds = %1134
  %1137 = load ptr, ptr %18, align 8, !tbaa !5
  %1138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1135, ptr noundef nonnull align 8 dereferenceable(8) %1137)
          to label %1139 unwind label %1090

1139:                                             ; preds = %1136
  %1140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1138, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1141 unwind label %1090

1141:                                             ; preds = %1139
  %1142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1140, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1143 unwind label %1090

1143:                                             ; preds = %1141
  br label %1144

1144:                                             ; preds = %1143, %1130
  br label %1145

1145:                                             ; preds = %1144
  br label %1146

1146:                                             ; preds = %1145
  store i1 false, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1309

1147:                                             ; preds = %1123
  br label %1148

1148:                                             ; preds = %1147
  %1149 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1150 unwind label %1090

1150:                                             ; preds = %1148
  br i1 %1149, label %1151, label %1164

1151:                                             ; preds = %1150
  %1152 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1152, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1154 unwind label %1090

1154:                                             ; preds = %1151
  %1155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1153, ptr noundef @.str.82)
          to label %1156 unwind label %1090

1156:                                             ; preds = %1154
  %1157 = load ptr, ptr %18, align 8, !tbaa !5
  %1158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1155, ptr noundef nonnull align 8 dereferenceable(8) %1157)
          to label %1159 unwind label %1090

1159:                                             ; preds = %1156
  %1160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1158, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1161 unwind label %1090

1161:                                             ; preds = %1159
  %1162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1160, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1163 unwind label %1090

1163:                                             ; preds = %1161
  br label %1164

1164:                                             ; preds = %1163, %1150
  br label %1165

1165:                                             ; preds = %1164
  br label %1166

1166:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 4, ptr %95) #0
  store i32 0, ptr %95, align 4, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 24, ptr %96) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %97) #0
  store i32 0, ptr %97, align 4, !tbaa !38
  br label %1167

1167:                                             ; preds = %1195, %1166
  %1168 = load i32, ptr %97, align 4, !tbaa !38
  %1169 = zext i32 %1168 to i64
  %1170 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 5
  %1171 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1170) #0
  %1172 = icmp ult i64 %1169, %1171
  br i1 %1172, label %1174, label %1173

1173:                                             ; preds = %1167
  store i32 67, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #0
  br label %1212

1174:                                             ; preds = %1167
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  %1175 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 5
  %1176 = load i32, ptr %97, align 4, !tbaa !38
  %1177 = zext i32 %1176 to i64
  %1178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1175, i64 noundef %1177) #0
  store ptr %1178, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1179 = load ptr, ptr %98, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %99, ptr noundef nonnull align 8 dereferenceable(8) %1179)
          to label %1180 unwind label %1198

1180:                                             ; preds = %1174
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %96, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1181 unwind label %1202

1181:                                             ; preds = %1180
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %100) #0
  %1182 = load ptr, ptr %98, align 8, !tbaa !5
  %1183 = load ptr, ptr %10, align 8, !tbaa !5
  %1184 = load ptr, ptr %94, align 8, !tbaa !5
  %1185 = load i32, ptr %97, align 4, !tbaa !38
  %1186 = zext i32 %1185 to i64
  %1187 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %1184, i64 noundef %1186) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %101) #0
  %1188 = getelementptr inbounds %class.TraitResolution, ptr %161, i32 0, i32 2
  %1189 = load ptr, ptr %1188, align 8, !tbaa !12
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %101, ptr noundef nonnull align 8 dereferenceable(49) %1189)
          to label %1190 unwind label %1207

1190:                                             ; preds = %1181
  %1191 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1182, ptr noundef nonnull align 8 dereferenceable(8) %1183, ptr noundef nonnull align 8 dereferenceable(8) %1187, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %1192 unwind label %1207

1192:                                             ; preds = %1190
  store i32 %1191, ptr %100, align 4, !tbaa !42
  %1193 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %95, ptr noundef nonnull align 4 dereferenceable(4) %100)
          to label %1194 unwind label %1207

1194:                                             ; preds = %1192
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %1195

1195:                                             ; preds = %1194
  %1196 = load i32, ptr %97, align 4, !tbaa !38
  %1197 = add i32 %1196, 1
  store i32 %1197, ptr %97, align 4, !tbaa !38
  br label %1167, !llvm.loop !76

1198:                                             ; preds = %1174
  %1199 = landingpad { ptr, i32 }
          cleanup
  %1200 = extractvalue { ptr, i32 } %1199, 0
  store ptr %1200, ptr %16, align 8
  %1201 = extractvalue { ptr, i32 } %1199, 1
  store i32 %1201, ptr %17, align 4
  br label %1206

1202:                                             ; preds = %1180
  %1203 = landingpad { ptr, i32 }
          cleanup
  %1204 = extractvalue { ptr, i32 } %1203, 0
  store ptr %1204, ptr %16, align 8
  %1205 = extractvalue { ptr, i32 } %1203, 1
  store i32 %1205, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #0
  br label %1206

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

1207:                                             ; preds = %1192, %1190, %1181
  %1208 = landingpad { ptr, i32 }
          cleanup
  %1209 = extractvalue { ptr, i32 } %1208, 0
  store ptr %1209, ptr %16, align 8
  %1210 = extractvalue { ptr, i32 } %1208, 1
  store i32 %1210, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %101) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %100) #0
  br label %1211

1211:                                             ; preds = %1207, %1206
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %97) #0
  br label %1308

1212:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 24, ptr %102) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %102)
          to label %1213 unwind label %1241

1213:                                             ; preds = %1212
  %1214 = getelementptr inbounds %"struct.HIR::PathParams", ptr %102, i32 0, i32 1
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %104, ptr noundef nonnull align 8 dereferenceable(24) %96) #0
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef %104)
          to label %1215 unwind label %1245

1215:                                             ; preds = %1213
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1214, ptr noundef %103)
          to label %1216 unwind label %1249

1216:                                             ; preds = %1215
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %105) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %106) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %107) #0
  %1217 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %107, i32 0, i32 0
  %1218 = getelementptr inbounds %struct.TraitResolveCommon, ptr %161, i32 0, i32 12
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull align 8 dereferenceable(8) %1218)
          to label %1219 unwind label %1254

1219:                                             ; preds = %1216
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %109, ptr noundef nonnull align 8 dereferenceable(24) %102)
          to label %1220 unwind label %1258

1220:                                             ; preds = %1219
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %1217, ptr noundef %108, ptr noundef %109)
          to label %1221 unwind label %1262

1221:                                             ; preds = %1220
  %1222 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %107, i32 0, i32 1
  %1223 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1222, ptr noundef nonnull align 8 dereferenceable(8) %1223)
          to label %1224 unwind label %1266

1224:                                             ; preds = %1221
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.450") align 8 %106, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %107)
          to label %1225 unwind label %1270

1225:                                             ; preds = %1224
  %1226 = 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) %105, ptr noundef nonnull align 8 dereferenceable(48) %106)
          to label %1227 unwind label %1274

1227:                                             ; preds = %1225
  %1228 = getelementptr inbounds { ptr, i8 }, ptr %110, i32 0, i32 0
  %1229 = extractvalue { ptr, i8 } %1226, 0
  store ptr %1229, ptr %1228, align 8
  %1230 = getelementptr inbounds { ptr, i8 }, ptr %110, i32 0, i32 1
  %1231 = extractvalue { ptr, i8 } %1226, 1
  store i8 %1231, ptr %1230, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %106) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %107) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %107) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %106) #0
  %1232 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %93, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8 %112, ptr noundef nonnull align 8 dereferenceable(96) %1232)
          to label %1233 unwind label %1282

1233:                                             ; preds = %1227
  %1234 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %113, ptr noundef nonnull align 8 dereferenceable(8) %1234)
          to label %1235 unwind label %1286

1235:                                             ; preds = %1233
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %114, ptr noundef nonnull align 8 dereferenceable(24) %102)
          to label %1236 unwind label %1290

1236:                                             ; preds = %1235
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %115, ptr noundef nonnull align 8 dereferenceable(48) %105) #0
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %111, ptr noundef %112, ptr noundef %113, ptr noundef %114, ptr noundef %115)
          to label %1237 unwind label %1294

1237:                                             ; preds = %1236
  %1238 = load i32, ptr %95, align 4, !tbaa !42
  %1239 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %111, i32 noundef %1238)
          to label %1240 unwind label %1298

1240:                                             ; preds = %1237
  store i1 %1239, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %111) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %112) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %105) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %102) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %102) #0
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #0
  br label %1309

1241:                                             ; preds = %1212
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %16, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %17, align 4
  br label %1307

1245:                                             ; preds = %1213
  %1246 = landingpad { ptr, i32 }
          cleanup
  %1247 = extractvalue { ptr, i32 } %1246, 0
  store ptr %1247, ptr %16, align 8
  %1248 = extractvalue { ptr, i32 } %1246, 1
  store i32 %1248, ptr %17, align 4
  br label %1253

1249:                                             ; preds = %1215
  %1250 = landingpad { ptr, i32 }
          cleanup
  %1251 = extractvalue { ptr, i32 } %1250, 0
  store ptr %1251, ptr %16, align 8
  %1252 = extractvalue { ptr, i32 } %1250, 1
  store i32 %1252, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #0
  br label %1253

1253:                                             ; preds = %1249, %1245
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #0
  br label %1306

1254:                                             ; preds = %1216
  %1255 = landingpad { ptr, i32 }
          cleanup
  %1256 = extractvalue { ptr, i32 } %1255, 0
  store ptr %1256, ptr %16, align 8
  %1257 = extractvalue { ptr, i32 } %1255, 1
  store i32 %1257, ptr %17, align 4
  br label %1281

1258:                                             ; preds = %1219
  %1259 = landingpad { ptr, i32 }
          cleanup
  %1260 = extractvalue { ptr, i32 } %1259, 0
  store ptr %1260, ptr %16, align 8
  %1261 = extractvalue { ptr, i32 } %1259, 1
  store i32 %1261, ptr %17, align 4
  br label %1280

1262:                                             ; preds = %1220
  %1263 = landingpad { ptr, i32 }
          cleanup
  %1264 = extractvalue { ptr, i32 } %1263, 0
  store ptr %1264, ptr %16, align 8
  %1265 = extractvalue { ptr, i32 } %1263, 1
  store i32 %1265, ptr %17, align 4
  br label %1279

1266:                                             ; preds = %1221
  %1267 = landingpad { ptr, i32 }
          cleanup
  %1268 = extractvalue { ptr, i32 } %1267, 0
  store ptr %1268, ptr %16, align 8
  %1269 = extractvalue { ptr, i32 } %1267, 1
  store i32 %1269, ptr %17, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1217) #0
  br label %1279

1270:                                             ; preds = %1224
  %1271 = landingpad { ptr, i32 }
          cleanup
  %1272 = extractvalue { ptr, i32 } %1271, 0
  store ptr %1272, ptr %16, align 8
  %1273 = extractvalue { ptr, i32 } %1271, 1
  store i32 %1273, ptr %17, align 4
  br label %1278

1274:                                             ; preds = %1225
  %1275 = landingpad { ptr, i32 }
          cleanup
  %1276 = extractvalue { ptr, i32 } %1275, 0
  store ptr %1276, ptr %16, align 8
  %1277 = extractvalue { ptr, i32 } %1275, 1
  store i32 %1277, ptr %17, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %106) #0
  br label %1278

1278:                                             ; preds = %1274, %1270
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %107) #0
  br label %1279

1279:                                             ; preds = %1278, %1266, %1262
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %109) #0
  br label %1280

1280:                                             ; preds = %1279, %1258
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %108) #0
  br label %1281

1281:                                             ; preds = %1280, %1254
  call void @llvm.lifetime.end.p0(i64 40, ptr %107) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %106) #0
  br label %1305

1282:                                             ; preds = %1227
  %1283 = landingpad { ptr, i32 }
          cleanup
  %1284 = extractvalue { ptr, i32 } %1283, 0
  store ptr %1284, ptr %16, align 8
  %1285 = extractvalue { ptr, i32 } %1283, 1
  store i32 %1285, ptr %17, align 4
  br label %1305

1286:                                             ; preds = %1233
  %1287 = landingpad { ptr, i32 }
          cleanup
  %1288 = extractvalue { ptr, i32 } %1287, 0
  store ptr %1288, ptr %16, align 8
  %1289 = extractvalue { ptr, i32 } %1287, 1
  store i32 %1289, ptr %17, align 4
  br label %1304

1290:                                             ; preds = %1235
  %1291 = landingpad { ptr, i32 }
          cleanup
  %1292 = extractvalue { ptr, i32 } %1291, 0
  store ptr %1292, ptr %16, align 8
  %1293 = extractvalue { ptr, i32 } %1291, 1
  store i32 %1293, ptr %17, align 4
  br label %1303

1294:                                             ; preds = %1236
  %1295 = landingpad { ptr, i32 }
          cleanup
  %1296 = extractvalue { ptr, i32 } %1295, 0
  store ptr %1296, ptr %16, align 8
  %1297 = extractvalue { ptr, i32 } %1295, 1
  store i32 %1297, ptr %17, align 4
  br label %1302

1298:                                             ; preds = %1237
  %1299 = landingpad { ptr, i32 }
          cleanup
  %1300 = extractvalue { ptr, i32 } %1299, 0
  store ptr %1300, ptr %16, align 8
  %1301 = extractvalue { ptr, i32 } %1299, 1
  store i32 %1301, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %111) #0
  br label %1302

1302:                                             ; preds = %1298, %1294
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %114) #0
  br label %1303

1303:                                             ; preds = %1302, %1290
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  br label %1304

1304:                                             ; preds = %1303, %1286
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %112) #0
  br label %1305

1305:                                             ; preds = %1304, %1282, %1281
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %105) #0
  br label %1306

1306:                                             ; preds = %1305, %1253
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %102) #0
  br label %1307

1307:                                             ; preds = %1306, %1241
  call void @llvm.lifetime.end.p0(i64 24, ptr %102) #0
  br label %1308

1308:                                             ; preds = %1307, %1211
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %96) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %95) #0
  br label %1310

1309:                                             ; preds = %1240, %1146, %1122, %1089
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %93) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %93) #0
  br label %1315

1310:                                             ; preds = %1308, %1090
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  br label %1311

1311:                                             ; preds = %1310, %1069
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %93) #0
  br label %1312

1312:                                             ; preds = %1311, %1065
  call void @llvm.lifetime.end.p0(i64 144, ptr %93) #0
  br label %1317

1313:                                             ; preds = %961
  br label %1314

1314:                                             ; preds = %1313
  store i8 0, ptr %85, align 1, !tbaa !9
  br label %938, !llvm.loop !77

1315:                                             ; preds = %1309, %942
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  %1316 = load i32, ptr %23, align 4
  switch i32 %1316, label %1320 [
    i32 50, label %1318
  ]

1317:                                             ; preds = %1312, %1015, %1014, %984, %983, %943
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #0
  br label %1924

1318:                                             ; preds = %1315
  br label %1319

1319:                                             ; preds = %1318
  store i8 0, ptr %85, align 1, !tbaa !9
  br label %930, !llvm.loop !78

1320:                                             ; preds = %1315, %933
  call void @llvm.lifetime.end.p0(i64 1, ptr %85) #0
  %1321 = load i32, ptr %23, align 4
  switch i32 %1321, label %1922 [
    i32 47, label %1322
  ]

1322:                                             ; preds = %1320
  br label %1920

1323:                                             ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #0
  store i8 1, ptr %116, align 1, !tbaa !9
  br label %1324

1324:                                             ; preds = %1344, %1323
  %1325 = load i8, ptr %116, align 1, !tbaa !9, !range !36, !noundef !37
  %1326 = trunc i8 %1325 to i1
  br i1 %1326, label %1328, label %1327

1327:                                             ; preds = %1324
  store i32 70, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %1345

1328:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  %1329 = load ptr, ptr %25, align 8, !tbaa !5
  %1330 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1329)
          to label %1331 unwind label %1337

1331:                                             ; preds = %1328
  store ptr %1330, ptr %117, align 8, !tbaa !5
  br label %1332

1332:                                             ; preds = %1342, %1331
  %1333 = load ptr, ptr %117, align 8, !tbaa !5
  %1334 = load i8, ptr %116, align 1, !tbaa !9, !range !36, !noundef !37
  %1335 = trunc i8 %1334 to i1
  br i1 %1335, label %1341, label %1336

1336:                                             ; preds = %1332
  store i32 73, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1343

1337:                                             ; preds = %1328
  %1338 = landingpad { ptr, i32 }
          cleanup
  %1339 = extractvalue { ptr, i32 } %1338, 0
  store ptr %1339, ptr %16, align 8
  %1340 = extractvalue { ptr, i32 } %1338, 1
  store i32 %1340, ptr %17, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #0
  br label %1924

1341:                                             ; preds = %1332
  br label %1342

1342:                                             ; preds = %1341
  store i8 0, ptr %116, align 1, !tbaa !9
  br label %1332, !llvm.loop !79

1343:                                             ; preds = %1336
  br label %1344

1344:                                             ; preds = %1343
  store i8 0, ptr %116, align 1, !tbaa !9
  br label %1324, !llvm.loop !80

1345:                                             ; preds = %1327
  br label %1920

1346:                                             ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #0
  store i8 1, ptr %118, align 1, !tbaa !9
  br label %1347

1347:                                             ; preds = %1574, %1346
  %1348 = load i8, ptr %118, align 1, !tbaa !9, !range !36, !noundef !37
  %1349 = trunc i8 %1348 to i1
  br i1 %1349, label %1351, label %1350

1350:                                             ; preds = %1347
  store i32 76, ptr %23, align 4
  br label %1575

1351:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #0
  %1352 = load ptr, ptr %25, align 8, !tbaa !5
  %1353 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %1352)
          to label %1354 unwind label %1360

1354:                                             ; preds = %1351
  store ptr %1353, ptr %119, align 8, !tbaa !5
  br label %1355

1355:                                             ; preds = %1569, %1354
  %1356 = load ptr, ptr %119, align 8, !tbaa !5
  %1357 = load i8, ptr %118, align 1, !tbaa !9, !range !36, !noundef !37
  %1358 = trunc i8 %1357 to i1
  br i1 %1358, label %1364, label %1359

1359:                                             ; preds = %1355
  store i32 79, ptr %23, align 4
  br label %1570

1360:                                             ; preds = %1364, %1351
  %1361 = landingpad { ptr, i32 }
          cleanup
  %1362 = extractvalue { ptr, i32 } %1361, 0
  store ptr %1362, ptr %16, align 8
  %1363 = extractvalue { ptr, i32 } %1361, 1
  store i32 %1363, ptr %17, align 4
  br label %1572

1364:                                             ; preds = %1355
  %1365 = load ptr, ptr %11, align 8, !tbaa !5
  %1366 = load ptr, ptr %119, align 8, !tbaa !5
  %1367 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1366, i32 0, i32 0
  %1368 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1367, i32 0, i32 1
  %1369 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1368, i32 0, i32 0
  %1370 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1365, ptr noundef nonnull align 8 dereferenceable(8) %1369)
          to label %1371 unwind label %1360

1371:                                             ; preds = %1364
  br i1 %1370, label %1372, label %1435

1372:                                             ; preds = %1371
  call void @llvm.lifetime.start.p0(i64 4, ptr %120) #0
  %1373 = load ptr, ptr %10, align 8, !tbaa !5
  %1374 = load ptr, ptr %119, align 8, !tbaa !5
  %1375 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1374, i32 0, i32 0
  %1376 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1375, i32 0, i32 1
  %1377 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1376, i32 0, i32 1
  %1378 = load ptr, ptr %12, align 8, !tbaa !5
  %1379 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1373, ptr noundef nonnull align 8 dereferenceable(24) %1377, ptr noundef nonnull align 8 dereferenceable(24) %1378)
          to label %1380 unwind label %1403

1380:                                             ; preds = %1372
  store i32 %1379, ptr %120, align 4, !tbaa !42
  %1381 = load i32, ptr %120, align 4, !tbaa !42
  %1382 = icmp ne i32 %1381, 2
  br i1 %1382, label %1383, label %1430

1383:                                             ; preds = %1380
  br label %1384

1384:                                             ; preds = %1383
  %1385 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1386 unwind label %1403

1386:                                             ; preds = %1384
  br i1 %1385, label %1387, label %1407

1387:                                             ; preds = %1386
  %1388 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1388, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1390 unwind label %1403

1390:                                             ; preds = %1387
  %1391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1389, ptr noundef @.str.88)
          to label %1392 unwind label %1403

1392:                                             ; preds = %1390
  %1393 = load ptr, ptr %119, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1393, i32 0, i32 0
  %1395 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1394, i32 0, i32 1
  %1396 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1395, i32 0, i32 1
  %1397 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1391, ptr noundef nonnull align 8 dereferenceable(24) %1396)
          to label %1398 unwind label %1403

1398:                                             ; preds = %1392
  %1399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1397, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1400 unwind label %1403

1400:                                             ; preds = %1398
  %1401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1399, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1402 unwind label %1403

1402:                                             ; preds = %1400
  br label %1407

1403:                                             ; preds = %1409, %1400, %1398, %1392, %1390, %1387, %1384, %1372
  %1404 = landingpad { ptr, i32 }
          cleanup
  %1405 = extractvalue { ptr, i32 } %1404, 0
  store ptr %1405, ptr %16, align 8
  %1406 = extractvalue { ptr, i32 } %1404, 1
  store i32 %1406, ptr %17, align 4
  br label %1434

1407:                                             ; preds = %1402, %1386
  br label %1408

1408:                                             ; preds = %1407
  br label %1409

1409:                                             ; preds = %1408
  %1410 = load ptr, ptr %119, align 8, !tbaa !5
  %1411 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1410, i32 0, i32 0
  %1412 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1411, i32 0, i32 0
  %1413 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1412) #0
  %1414 = load ptr, ptr %18, align 8, !tbaa !5
  %1415 = load ptr, ptr %119, align 8, !tbaa !5
  %1416 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1415, i32 0, i32 0
  %1417 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1416, i32 0, i32 1
  %1418 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1417, i32 0, i32 1
  %1419 = load ptr, ptr %119, align 8, !tbaa !5
  %1420 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1419, i32 0, i32 0
  %1421 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1420, i32 0, i32 2
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %121, ptr noundef %1413, ptr noundef %1414, ptr noundef %1418, ptr noundef %1421)
          to label %1422 unwind label %1403

1422:                                             ; preds = %1409
  %1423 = load i32, ptr %120, align 4, !tbaa !42
  %1424 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %121, i32 noundef %1423)
          to label %1425 unwind label %1426

1425:                                             ; preds = %1422
  store i1 %1424, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #0
  store i32 1, ptr %23, align 4
  br label %1431

1426:                                             ; preds = %1422
  %1427 = landingpad { ptr, i32 }
          cleanup
  %1428 = extractvalue { ptr, i32 } %1427, 0
  store ptr %1428, ptr %16, align 8
  %1429 = extractvalue { ptr, i32 } %1427, 1
  store i32 %1429, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #0
  br label %1434

1430:                                             ; preds = %1380
  store i32 0, ptr %23, align 4
  br label %1431

1431:                                             ; preds = %1430, %1425
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #0
  %1432 = load i32, ptr %23, align 4
  switch i32 %1432, label %1570 [
    i32 0, label %1433
  ]

1433:                                             ; preds = %1431
  br label %1435

1434:                                             ; preds = %1426, %1403
  call void @llvm.lifetime.end.p0(i64 4, ptr %120) #0
  br label %1572

1435:                                             ; preds = %1433, %1371
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #0
  %1436 = load ptr, ptr %119, align 8, !tbaa !5
  %1437 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1436, i32 0, i32 1
  store ptr %1437, ptr %122, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #0
  %1438 = load ptr, ptr %122, align 8, !tbaa !5
  %1439 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1438) #0
  %1440 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %123, i32 0, i32 0
  store ptr %1439, ptr %1440, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #0
  %1441 = load ptr, ptr %122, align 8, !tbaa !5
  %1442 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1441) #0
  %1443 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %124, i32 0, i32 0
  store ptr %1442, ptr %1443, align 8
  br label %1444

1444:                                             ; preds = %1496, %1435
  %1445 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %124) #0
  br i1 %1445, label %1447, label %1446

1446:                                             ; preds = %1444
  store i32 84, ptr %23, align 4
  br label %1499

1447:                                             ; preds = %1444
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #0
  %1448 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #0
  store ptr %1448, ptr %125, align 8, !tbaa !5
  %1449 = load ptr, ptr %11, align 8, !tbaa !5
  %1450 = load ptr, ptr %125, align 8, !tbaa !5
  %1451 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1450, i32 0, i32 0
  %1452 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1449, ptr noundef nonnull align 8 dereferenceable(8) %1451)
          to label %1453 unwind label %1475

1453:                                             ; preds = %1447
  br i1 %1452, label %1454, label %1492

1454:                                             ; preds = %1453
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #0
  %1455 = load ptr, ptr %10, align 8, !tbaa !5
  %1456 = load ptr, ptr %125, align 8, !tbaa !5
  %1457 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1456, i32 0, i32 1
  %1458 = load ptr, ptr %12, align 8, !tbaa !5
  %1459 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1455, ptr noundef nonnull align 8 dereferenceable(24) %1457, ptr noundef nonnull align 8 dereferenceable(24) %1458)
          to label %1460 unwind label %1479

1460:                                             ; preds = %1454
  store i32 %1459, ptr %126, align 4, !tbaa !42
  %1461 = load i32, ptr %126, align 4, !tbaa !42
  %1462 = icmp ne i32 %1461, 2
  br i1 %1462, label %1463, label %1487

1463:                                             ; preds = %1460
  %1464 = load ptr, ptr %119, align 8, !tbaa !5
  %1465 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1464, i32 0, i32 0
  %1466 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1465, i32 0, i32 0
  %1467 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1466) #0
  %1468 = load ptr, ptr %18, align 8, !tbaa !5
  %1469 = load ptr, ptr %125, align 8, !tbaa !5
  %1470 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1469, i32 0, i32 1
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %127, ptr noundef %1467, ptr noundef %1468, ptr noundef %1470, ptr noundef @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc)
          to label %1471 unwind label %1479

1471:                                             ; preds = %1463
  %1472 = load i32, ptr %126, align 4, !tbaa !42
  %1473 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %127, i32 noundef %1472)
          to label %1474 unwind label %1483

1474:                                             ; preds = %1471
  store i1 %1473, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %127) #0
  store i32 1, ptr %23, align 4
  br label %1488

1475:                                             ; preds = %1447
  %1476 = landingpad { ptr, i32 }
          cleanup
  %1477 = extractvalue { ptr, i32 } %1476, 0
  store ptr %1477, ptr %16, align 8
  %1478 = extractvalue { ptr, i32 } %1476, 1
  store i32 %1478, ptr %17, align 4
  br label %1498

1479:                                             ; preds = %1463, %1454
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %16, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %17, align 4
  br label %1491

1483:                                             ; preds = %1471
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %16, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %127) #0
  br label %1491

1487:                                             ; preds = %1460
  store i32 0, ptr %23, align 4
  br label %1488

1488:                                             ; preds = %1487, %1474
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #0
  %1489 = load i32, ptr %23, align 4
  switch i32 %1489, label %1493 [
    i32 0, label %1490
  ]

1490:                                             ; preds = %1488
  br label %1492

1491:                                             ; preds = %1483, %1479
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #0
  br label %1498

1492:                                             ; preds = %1490, %1453
  store i32 0, ptr %23, align 4
  br label %1493

1493:                                             ; preds = %1492, %1488
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  %1494 = load i32, ptr %23, align 4
  switch i32 %1494, label %1499 [
    i32 0, label %1495
  ]

1495:                                             ; preds = %1493
  br label %1496

1496:                                             ; preds = %1495
  %1497 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %123) #0
  br label %1444

1498:                                             ; preds = %1491, %1475
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  br label %1572

1499:                                             ; preds = %1493, %1446
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  %1500 = load i32, ptr %23, align 4
  switch i32 %1500, label %1570 [
    i32 84, label %1501
  ]

1501:                                             ; preds = %1499
  %1502 = load ptr, ptr %119, align 8, !tbaa !5
  %1503 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1502, i32 0, i32 0
  %1504 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1503, i32 0, i32 1
  %1505 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1504, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #0
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1506 unwind label %1546

1506:                                             ; preds = %1501
  %1507 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1505, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1508 unwind label %1550

1508:                                             ; preds = %1506
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br i1 %1507, label %1509, label %1568

1509:                                             ; preds = %1508
  call void @llvm.lifetime.start.p0(i64 1, ptr %129) #0
  store i8 0, ptr %129, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %130) #0
  store i8 0, ptr %130, align 1, !tbaa !9
  %1510 = load ptr, ptr %10, align 8, !tbaa !5
  %1511 = load ptr, ptr %11, align 8, !tbaa !5
  %1512 = load ptr, ptr %12, align 8, !tbaa !5
  %1513 = load ptr, ptr %119, align 8, !tbaa !5
  %1514 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1513, i32 0, i32 0
  %1515 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1514, i32 0, i32 4
  %1516 = load ptr, ptr %1515, align 8, !tbaa !81
  %1517 = load ptr, ptr %119, align 8, !tbaa !5
  %1518 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1517, i32 0, i32 0
  %1519 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1518, i32 0, i32 1
  %1520 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1519, i32 0, i32 0
  %1521 = load ptr, ptr %119, align 8, !tbaa !5
  %1522 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %1521, i32 0, i32 0
  %1523 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1522, i32 0, i32 1
  %1524 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1523, i32 0, i32 1
  %1525 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %132) #0
  %1526 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 0
  store ptr %161, ptr %1526, align 8, !tbaa !108
  %1527 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 1
  %1528 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1528, ptr %1527, align 8, !tbaa !5
  %1529 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 2
  %1530 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1530, ptr %1529, align 8, !tbaa !5
  %1531 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 3
  %1532 = load ptr, ptr %119, align 8, !tbaa !5
  store ptr %1532, ptr %1531, align 8, !tbaa !5
  %1533 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 4
  %1534 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1534, ptr %1533, align 8, !tbaa !5
  %1535 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 5
  store ptr %130, ptr %1535, align 8, !tbaa !5
  %1536 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 6
  store ptr %129, ptr %1536, align 8, !tbaa !5
  %1537 = getelementptr inbounds %class.anon.505, ptr %132, i32 0, i32 7
  store ptr %5, ptr %1537, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %131, ptr noundef nonnull align 8 dereferenceable(64) %132)
          to label %1538 unwind label %1555

1538:                                             ; preds = %1509
  %1539 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1510, ptr noundef nonnull align 8 dereferenceable(8) %1511, ptr noundef nonnull align 8 dereferenceable(24) %1512, ptr noundef nonnull align 8 dereferenceable(400) %1516, ptr noundef nonnull align 8 dereferenceable(8) %1520, ptr noundef nonnull align 8 dereferenceable(24) %1524, ptr noundef nonnull align 8 dereferenceable(8) %1525, ptr noundef %131)
          to label %1540 unwind label %1559

1540:                                             ; preds = %1538
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #0
  call void @llvm.lifetime.end.p0(i64 64, ptr %132) #0
  %1541 = load i8, ptr %130, align 1, !tbaa !9, !range !36, !noundef !37
  %1542 = trunc i8 %1541 to i1
  br i1 %1542, label %1543, label %1564

1543:                                             ; preds = %1540
  %1544 = load i8, ptr %129, align 1, !tbaa !9, !range !36, !noundef !37
  %1545 = trunc i8 %1544 to i1
  store i1 %1545, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1565

1546:                                             ; preds = %1501
  %1547 = landingpad { ptr, i32 }
          cleanup
  %1548 = extractvalue { ptr, i32 } %1547, 0
  store ptr %1548, ptr %16, align 8
  %1549 = extractvalue { ptr, i32 } %1547, 1
  store i32 %1549, ptr %17, align 4
  br label %1554

1550:                                             ; preds = %1506
  %1551 = landingpad { ptr, i32 }
          cleanup
  %1552 = extractvalue { ptr, i32 } %1551, 0
  store ptr %1552, ptr %16, align 8
  %1553 = extractvalue { ptr, i32 } %1551, 1
  store i32 %1553, ptr %17, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #0
  br label %1554

1554:                                             ; preds = %1550, %1546
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %1572

1555:                                             ; preds = %1509
  %1556 = landingpad { ptr, i32 }
          cleanup
  %1557 = extractvalue { ptr, i32 } %1556, 0
  store ptr %1557, ptr %16, align 8
  %1558 = extractvalue { ptr, i32 } %1556, 1
  store i32 %1558, ptr %17, align 4
  br label %1563

1559:                                             ; preds = %1538
  %1560 = landingpad { ptr, i32 }
          cleanup
  %1561 = extractvalue { ptr, i32 } %1560, 0
  store ptr %1561, ptr %16, align 8
  %1562 = extractvalue { ptr, i32 } %1560, 1
  store i32 %1562, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %131) #0
  br label %1563

1563:                                             ; preds = %1559, %1555
  call void @llvm.lifetime.end.p0(i64 64, ptr %132) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #0
  br label %1572

1564:                                             ; preds = %1540
  store i32 0, ptr %23, align 4
  br label %1565

1565:                                             ; preds = %1564, %1543
  call void @llvm.lifetime.end.p0(i64 1, ptr %130) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %129) #0
  %1566 = load i32, ptr %23, align 4
  switch i32 %1566, label %1570 [
    i32 0, label %1567
  ]

1567:                                             ; preds = %1565
  br label %1568

1568:                                             ; preds = %1567, %1508
  br label %1569

1569:                                             ; preds = %1568
  store i8 0, ptr %118, align 1, !tbaa !9
  br label %1355, !llvm.loop !110

1570:                                             ; preds = %1565, %1499, %1431, %1359
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  %1571 = load i32, ptr %23, align 4
  switch i32 %1571, label %1575 [
    i32 79, label %1573
  ]

1572:                                             ; preds = %1563, %1554, %1498, %1434, %1360
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  br label %1924

1573:                                             ; preds = %1570
  br label %1574

1574:                                             ; preds = %1573
  store i8 0, ptr %118, align 1, !tbaa !9
  br label %1347, !llvm.loop !111

1575:                                             ; preds = %1570, %1350
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #0
  %1576 = load i32, ptr %23, align 4
  switch i32 %1576, label %1922 [
    i32 76, label %1577
  ]

1577:                                             ; preds = %1575
  br label %1920

1578:                                             ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %133) #0
  store i8 1, ptr %133, align 1, !tbaa !9
  br label %1579

1579:                                             ; preds = %1739, %1578
  %1580 = load i8, ptr %133, align 1, !tbaa !9, !range !36, !noundef !37
  %1581 = trunc i8 %1580 to i1
  br i1 %1581, label %1583, label %1582

1582:                                             ; preds = %1579
  store i32 86, ptr %23, align 4
  br label %1740

1583:                                             ; preds = %1579
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #0
  %1584 = load ptr, ptr %25, align 8, !tbaa !5
  %1585 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1584)
          to label %1586 unwind label %1592

1586:                                             ; preds = %1583
  store ptr %1585, ptr %134, align 8, !tbaa !5
  br label %1587

1587:                                             ; preds = %1734, %1586
  %1588 = load ptr, ptr %134, align 8, !tbaa !5
  %1589 = load i8, ptr %133, align 1, !tbaa !9, !range !36, !noundef !37
  %1590 = trunc i8 %1589 to i1
  br i1 %1590, label %1596, label %1591

1591:                                             ; preds = %1587
  store i32 89, ptr %23, align 4
  br label %1735

1592:                                             ; preds = %1583
  %1593 = landingpad { ptr, i32 }
          cleanup
  %1594 = extractvalue { ptr, i32 } %1593, 0
  store ptr %1594, ptr %16, align 8
  %1595 = extractvalue { ptr, i32 } %1593, 1
  store i32 %1595, ptr %17, align 4
  br label %1737

1596:                                             ; preds = %1587
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #0
  %1597 = load ptr, ptr %134, align 8, !tbaa !5
  %1598 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1597, i32 0, i32 1
  store ptr %1598, ptr %135, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %136) #0
  %1599 = load ptr, ptr %135, align 8, !tbaa !5
  %1600 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1599) #0
  %1601 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %136, i32 0, i32 0
  store ptr %1600, ptr %1601, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #0
  %1602 = load ptr, ptr %135, align 8, !tbaa !5
  %1603 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1602) #0
  %1604 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %137, i32 0, i32 0
  store ptr %1603, ptr %1604, align 8
  br label %1605

1605:                                             ; preds = %1728, %1596
  %1606 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %136, ptr noundef nonnull align 8 dereferenceable(8) %137) #0
  br i1 %1606, label %1608, label %1607

1607:                                             ; preds = %1605
  store i32 92, ptr %23, align 4
  br label %1731

1608:                                             ; preds = %1605
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #0
  %1609 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #0
  store ptr %1609, ptr %138, align 8, !tbaa !5
  %1610 = load ptr, ptr %11, align 8, !tbaa !5
  %1611 = load ptr, ptr %138, align 8, !tbaa !5
  %1612 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1611, i32 0, i32 1
  %1613 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1612, i32 0, i32 0
  %1614 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1610, ptr noundef nonnull align 8 dereferenceable(8) %1613)
          to label %1615 unwind label %1645

1615:                                             ; preds = %1608
  br i1 %1614, label %1616, label %1678

1616:                                             ; preds = %1615
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #0
  %1617 = load ptr, ptr %10, align 8, !tbaa !5
  %1618 = load ptr, ptr %138, align 8, !tbaa !5
  %1619 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1618, i32 0, i32 1
  %1620 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1619, i32 0, i32 1
  %1621 = load ptr, ptr %12, align 8, !tbaa !5
  %1622 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1617, ptr noundef nonnull align 8 dereferenceable(24) %1620, ptr noundef nonnull align 8 dereferenceable(24) %1621)
          to label %1623 unwind label %1649

1623:                                             ; preds = %1616
  store i32 %1622, ptr %139, align 4, !tbaa !42
  %1624 = load i32, ptr %139, align 4, !tbaa !42
  %1625 = icmp ne i32 %1624, 2
  br i1 %1625, label %1626, label %1673

1626:                                             ; preds = %1623
  br label %1627

1627:                                             ; preds = %1626
  %1628 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1629 unwind label %1649

1629:                                             ; preds = %1627
  br i1 %1628, label %1630, label %1653

1630:                                             ; preds = %1629
  %1631 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1631, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1633 unwind label %1649

1633:                                             ; preds = %1630
  %1634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1632, ptr noundef @.str.88)
          to label %1635 unwind label %1649

1635:                                             ; preds = %1633
  %1636 = load ptr, ptr %138, align 8, !tbaa !5
  %1637 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1636, i32 0, i32 1
  %1638 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1637, i32 0, i32 1
  %1639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1634, ptr noundef nonnull align 8 dereferenceable(24) %1638)
          to label %1640 unwind label %1649

1640:                                             ; preds = %1635
  %1641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1639, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1642 unwind label %1649

1642:                                             ; preds = %1640
  %1643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1641, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1644 unwind label %1649

1644:                                             ; preds = %1642
  br label %1653

1645:                                             ; preds = %1608
  %1646 = landingpad { ptr, i32 }
          cleanup
  %1647 = extractvalue { ptr, i32 } %1646, 0
  store ptr %1647, ptr %16, align 8
  %1648 = extractvalue { ptr, i32 } %1646, 1
  store i32 %1648, ptr %17, align 4
  br label %1730

1649:                                             ; preds = %1655, %1642, %1640, %1635, %1633, %1630, %1627, %1616
  %1650 = landingpad { ptr, i32 }
          cleanup
  %1651 = extractvalue { ptr, i32 } %1650, 0
  store ptr %1651, ptr %16, align 8
  %1652 = extractvalue { ptr, i32 } %1650, 1
  store i32 %1652, ptr %17, align 4
  br label %1677

1653:                                             ; preds = %1644, %1629
  br label %1654

1654:                                             ; preds = %1653
  br label %1655

1655:                                             ; preds = %1654
  %1656 = load ptr, ptr %138, align 8, !tbaa !5
  %1657 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1656, i32 0, i32 0
  %1658 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %1657) #0
  %1659 = load ptr, ptr %18, align 8, !tbaa !5
  %1660 = load ptr, ptr %138, align 8, !tbaa !5
  %1661 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1660, i32 0, i32 1
  %1662 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1661, i32 0, i32 1
  %1663 = load ptr, ptr %138, align 8, !tbaa !5
  %1664 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1663, i32 0, i32 2
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %140, ptr noundef %1658, ptr noundef %1659, ptr noundef %1662, ptr noundef %1664)
          to label %1665 unwind label %1649

1665:                                             ; preds = %1655
  %1666 = load i32, ptr %139, align 4, !tbaa !42
  %1667 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %140, i32 noundef %1666)
          to label %1668 unwind label %1669

1668:                                             ; preds = %1665
  store i1 %1667, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %140) #0
  store i32 1, ptr %23, align 4
  br label %1674

1669:                                             ; preds = %1665
  %1670 = landingpad { ptr, i32 }
          cleanup
  %1671 = extractvalue { ptr, i32 } %1670, 0
  store ptr %1671, ptr %16, align 8
  %1672 = extractvalue { ptr, i32 } %1670, 1
  store i32 %1672, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %140) #0
  br label %1677

1673:                                             ; preds = %1623
  store i32 0, ptr %23, align 4
  br label %1674

1674:                                             ; preds = %1673, %1668
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #0
  %1675 = load i32, ptr %23, align 4
  switch i32 %1675, label %1725 [
    i32 0, label %1676
  ]

1676:                                             ; preds = %1674
  br label %1678

1677:                                             ; preds = %1669, %1649
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #0
  br label %1730

1678:                                             ; preds = %1676, %1615
  call void @llvm.lifetime.start.p0(i64 1, ptr %141) #0
  store i8 0, ptr %141, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %142) #0
  store i8 0, ptr %142, align 1, !tbaa !9
  %1679 = load ptr, ptr %10, align 8, !tbaa !5
  %1680 = load ptr, ptr %11, align 8, !tbaa !5
  %1681 = load ptr, ptr %12, align 8, !tbaa !5
  %1682 = load ptr, ptr %138, align 8, !tbaa !5
  %1683 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1682, i32 0, i32 4
  %1684 = load ptr, ptr %1683, align 8, !tbaa !112
  %1685 = load ptr, ptr %138, align 8, !tbaa !5
  %1686 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1685, i32 0, i32 1
  %1687 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1686, i32 0, i32 0
  %1688 = load ptr, ptr %138, align 8, !tbaa !5
  %1689 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1688, i32 0, i32 1
  %1690 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1689, i32 0, i32 1
  %1691 = load ptr, ptr %18, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 64, ptr %144) #0
  %1692 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 0
  store ptr %161, ptr %1692, align 8, !tbaa !113
  %1693 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 1
  %1694 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1694, ptr %1693, align 8, !tbaa !5
  %1695 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 2
  %1696 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1696, ptr %1695, align 8, !tbaa !5
  %1697 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 3
  %1698 = load ptr, ptr %138, align 8, !tbaa !5
  store ptr %1698, ptr %1697, align 8, !tbaa !5
  %1699 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 4
  %1700 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1700, ptr %1699, align 8, !tbaa !5
  %1701 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 5
  store ptr %142, ptr %1701, align 8, !tbaa !5
  %1702 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 6
  store ptr %141, ptr %1702, align 8, !tbaa !5
  %1703 = getelementptr inbounds %class.anon.506, ptr %144, i32 0, i32 7
  store ptr %5, ptr %1703, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %143, ptr noundef nonnull align 8 dereferenceable(64) %144)
          to label %1704 unwind label %1712

1704:                                             ; preds = %1678
  %1705 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1679, ptr noundef nonnull align 8 dereferenceable(8) %1680, ptr noundef nonnull align 8 dereferenceable(24) %1681, ptr noundef nonnull align 8 dereferenceable(400) %1684, ptr noundef nonnull align 8 dereferenceable(8) %1687, ptr noundef nonnull align 8 dereferenceable(24) %1690, ptr noundef nonnull align 8 dereferenceable(8) %1691, ptr noundef %143)
          to label %1706 unwind label %1716

1706:                                             ; preds = %1704
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #0
  call void @llvm.lifetime.end.p0(i64 64, ptr %144) #0
  %1707 = load i8, ptr %142, align 1, !tbaa !9, !range !36, !noundef !37
  %1708 = trunc i8 %1707 to i1
  br i1 %1708, label %1709, label %1721

1709:                                             ; preds = %1706
  %1710 = load i8, ptr %141, align 1, !tbaa !9, !range !36, !noundef !37
  %1711 = trunc i8 %1710 to i1
  store i1 %1711, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1722

1712:                                             ; preds = %1678
  %1713 = landingpad { ptr, i32 }
          cleanup
  %1714 = extractvalue { ptr, i32 } %1713, 0
  store ptr %1714, ptr %16, align 8
  %1715 = extractvalue { ptr, i32 } %1713, 1
  store i32 %1715, ptr %17, align 4
  br label %1720

1716:                                             ; preds = %1704
  %1717 = landingpad { ptr, i32 }
          cleanup
  %1718 = extractvalue { ptr, i32 } %1717, 0
  store ptr %1718, ptr %16, align 8
  %1719 = extractvalue { ptr, i32 } %1717, 1
  store i32 %1719, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %143) #0
  br label %1720

1720:                                             ; preds = %1716, %1712
  call void @llvm.lifetime.end.p0(i64 64, ptr %144) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #0
  br label %1730

1721:                                             ; preds = %1706
  store i32 0, ptr %23, align 4
  br label %1722

1722:                                             ; preds = %1721, %1709
  call void @llvm.lifetime.end.p0(i64 1, ptr %142) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %141) #0
  %1723 = load i32, ptr %23, align 4
  switch i32 %1723, label %1725 [
    i32 0, label %1724
  ]

1724:                                             ; preds = %1722
  store i32 0, ptr %23, align 4
  br label %1725

1725:                                             ; preds = %1724, %1722, %1674
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  %1726 = load i32, ptr %23, align 4
  switch i32 %1726, label %1731 [
    i32 0, label %1727
  ]

1727:                                             ; preds = %1725
  br label %1728

1728:                                             ; preds = %1727
  %1729 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %136) #0
  br label %1605

1730:                                             ; preds = %1720, %1677, %1645
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %1737

1731:                                             ; preds = %1725, %1607
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %136) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  %1732 = load i32, ptr %23, align 4
  switch i32 %1732, label %1735 [
    i32 92, label %1733
  ]

1733:                                             ; preds = %1731
  br label %1734

1734:                                             ; preds = %1733
  store i8 0, ptr %133, align 1, !tbaa !9
  br label %1587, !llvm.loop !115

1735:                                             ; preds = %1731, %1591
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #0
  %1736 = load i32, ptr %23, align 4
  switch i32 %1736, label %1740 [
    i32 89, label %1738
  ]

1737:                                             ; preds = %1730, %1592
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #0
  br label %1924

1738:                                             ; preds = %1735
  br label %1739

1739:                                             ; preds = %1738
  store i8 0, ptr %133, align 1, !tbaa !9
  br label %1579, !llvm.loop !116

1740:                                             ; preds = %1735, %1582
  call void @llvm.lifetime.end.p0(i64 1, ptr %133) #0
  %1741 = load i32, ptr %23, align 4
  switch i32 %1741, label %1922 [
    i32 86, label %1742
  ]

1742:                                             ; preds = %1740
  br label %1920

1743:                                             ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %145) #0
  store i8 1, ptr %145, align 1, !tbaa !9
  br label %1744

1744:                                             ; preds = %1798, %1743
  %1745 = load i8, ptr %145, align 1, !tbaa !9, !range !36, !noundef !37
  %1746 = trunc i8 %1745 to i1
  br i1 %1746, label %1748, label %1747

1747:                                             ; preds = %1744
  store i32 96, ptr %23, align 4
  br label %1799

1748:                                             ; preds = %1744
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  %1749 = load ptr, ptr %25, align 8, !tbaa !5
  %1750 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1749)
          to label %1751 unwind label %1757

1751:                                             ; preds = %1748
  store ptr %1750, ptr %146, align 8, !tbaa !5
  br label %1752

1752:                                             ; preds = %1793, %1751
  %1753 = load ptr, ptr %146, align 8, !tbaa !5
  %1754 = load i8, ptr %145, align 1, !tbaa !9, !range !36, !noundef !37
  %1755 = trunc i8 %1754 to i1
  br i1 %1755, label %1761, label %1756

1756:                                             ; preds = %1752
  store i32 99, ptr %23, align 4
  br label %1794

1757:                                             ; preds = %1783, %1778, %1776, %1774, %1771, %1768, %1748
  %1758 = landingpad { ptr, i32 }
          cleanup
  %1759 = extractvalue { ptr, i32 } %1758, 0
  store ptr %1759, ptr %16, align 8
  %1760 = extractvalue { ptr, i32 } %1758, 1
  store i32 %1760, ptr %17, align 4
  br label %1796

1761:                                             ; preds = %1752
  %1762 = load ptr, ptr %146, align 8, !tbaa !5
  %1763 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %1762, i32 0, i32 1
  %1764 = load i32, ptr %1763, align 8, !tbaa !117
  %1765 = lshr i32 %1764, 8
  %1766 = icmp eq i32 %1765, 2
  br i1 %1766, label %1767, label %1792

1767:                                             ; preds = %1761
  br label %1768

1768:                                             ; preds = %1767
  %1769 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1770 unwind label %1757

1770:                                             ; preds = %1768
  br i1 %1769, label %1771, label %1781

1771:                                             ; preds = %1770
  %1772 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !38
  %1773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1772, ptr noundef @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %1774 unwind label %1757

1774:                                             ; preds = %1771
  %1775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1773, ptr noundef @.str.89)
          to label %1776 unwind label %1757

1776:                                             ; preds = %1774
  %1777 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1775, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1778 unwind label %1757

1778:                                             ; preds = %1776
  %1779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1777, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1780 unwind label %1757

1780:                                             ; preds = %1778
  br label %1781

1781:                                             ; preds = %1780, %1770
  br label %1782

1782:                                             ; preds = %1781
  br label %1783

1783:                                             ; preds = %1782
  %1784 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %147, ptr noundef null, ptr noundef %1784, ptr noundef @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params, ptr noundef @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc)
          to label %1785 unwind label %1757

1785:                                             ; preds = %1783
  %1786 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %147, i32 noundef 1)
          to label %1787 unwind label %1788

1787:                                             ; preds = %1785
  store i1 %1786, ptr %8, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %147) #0
  store i32 1, ptr %23, align 4
  br label %1794

1788:                                             ; preds = %1785
  %1789 = landingpad { ptr, i32 }
          cleanup
  %1790 = extractvalue { ptr, i32 } %1789, 0
  store ptr %1790, ptr %16, align 8
  %1791 = extractvalue { ptr, i32 } %1789, 1
  store i32 %1791, ptr %17, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %147) #0
  br label %1796

1792:                                             ; preds = %1761
  br label %1793

1793:                                             ; preds = %1792
  store i8 0, ptr %145, align 1, !tbaa !9
  br label %1752, !llvm.loop !119

1794:                                             ; preds = %1787, %1756
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  %1795 = load i32, ptr %23, align 4
  switch i32 %1795, label %1799 [
    i32 99, label %1797
  ]

1796:                                             ; preds = %1788, %1757
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #0
  br label %1924

1797:                                             ; preds = %1794
  br label %1798

1798:                                             ; preds = %1797
  store i8 0, ptr %145, align 1, !tbaa !9
  br label %1744, !llvm.loop !120

1799:                                             ; preds = %1794, %1747
  call void @llvm.lifetime.end.p0(i64 1, ptr %145) #0
  %1800 = load i32, ptr %23, align 4
  switch i32 %1800, label %1922 [
    i32 96, label %1801
  ]

1801:                                             ; preds = %1799
  br label %1920

1802:                                             ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #0
  store i8 1, ptr %148, align 1, !tbaa !9
  br label %1803

1803:                                             ; preds = %1916, %1802
  %1804 = load i8, ptr %148, align 1, !tbaa !9, !range !36, !noundef !37
  %1805 = trunc i8 %1804 to i1
  br i1 %1805, label %1807, label %1806

1806:                                             ; preds = %1803
  store i32 104, ptr %23, align 4
  br label %1917

1807:                                             ; preds = %1803
  call void @llvm.lifetime.start.p0(i64 8, ptr %149) #0
  %1808 = load ptr, ptr %25, align 8, !tbaa !5
  %1809 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1808)
          to label %1810 unwind label %1816

1810:                                             ; preds = %1807
  store ptr %1809, ptr %149, align 8, !tbaa !5
  br label %1811

1811:                                             ; preds = %1911, %1810
  %1812 = load ptr, ptr %149, align 8, !tbaa !5
  %1813 = load i8, ptr %148, align 1, !tbaa !9, !range !36, !noundef !37
  %1814 = trunc i8 %1813 to i1
  br i1 %1814, label %1820, label %1815

1815:                                             ; preds = %1811
  store i32 107, ptr %23, align 4
  br label %1912

1816:                                             ; preds = %1839, %1826, %1820, %1807
  %1817 = landingpad { ptr, i32 }
          cleanup
  %1818 = extractvalue { ptr, i32 } %1817, 0
  store ptr %1818, ptr %16, align 8
  %1819 = extractvalue { ptr, i32 } %1817, 1
  store i32 %1819, ptr %17, align 4
  br label %1914

1820:                                             ; preds = %1811
  %1821 = load ptr, ptr %149, align 8, !tbaa !5
  %1822 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1821, i32 0, i32 1
  %1823 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %1822)
          to label %1824 unwind label %1816

1824:                                             ; preds = %1820
  br i1 %1823, label %1825, label %1910

1825:                                             ; preds = %1824
  br label %1826

1826:                                             ; preds = %1825
  %1827 = load ptr, ptr %149, align 8, !tbaa !5
  %1828 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1827, i32 0, i32 0
  %1829 = getelementptr inbounds %"class.HIR::Path", ptr %1828, i32 0, i32 0
  %1830 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1829)
          to label %1831 unwind label %1816

1831:                                             ; preds = %1826
  br i1 %1830, label %1853, label %1832

1832:                                             ; preds = %1831
  call void @llvm.lifetime.start.p0(i64 8, ptr %150) #0
  %1833 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %1833)
          to label %1834 unwind label %1840

1834:                                             ; preds = %1832
  call void @llvm.lifetime.start.p0(i64 8, ptr %152) #0
  %1835 = getelementptr inbounds %class.anon.507, ptr %152, i32 0, i32 0
  %1836 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1836, ptr %1835, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %151, ptr noundef nonnull align 8 dereferenceable(8) %152) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef %151)
          to label %1837 unwind label %1844

1837:                                             ; preds = %1834
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  %1838 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1838, ptr noundef @.str.8)
          to label %1839 unwind label %1849

1839:                                             ; preds = %1837
  invoke void @__cxa_throw(ptr %1838, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1963 unwind label %1816

1840:                                             ; preds = %1832
  %1841 = landingpad { ptr, i32 }
          cleanup
  %1842 = extractvalue { ptr, i32 } %1841, 0
  store ptr %1842, ptr %16, align 8
  %1843 = extractvalue { ptr, i32 } %1841, 1
  store i32 %1843, ptr %17, align 4
  br label %1848

1844:                                             ; preds = %1834
  %1845 = landingpad { ptr, i32 }
          cleanup
  %1846 = extractvalue { ptr, i32 } %1845, 0
  store ptr %1846, ptr %16, align 8
  %1847 = extractvalue { ptr, i32 } %1845, 1
  store i32 %1847, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %151) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %152) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %150) #0
  br label %1848

1848:                                             ; preds = %1844, %1840
  call void @llvm.lifetime.end.p0(i64 8, ptr %150) #0
  br label %1914

1849:                                             ; preds = %1837
  %1850 = landingpad { ptr, i32 }
          cleanup
  %1851 = extractvalue { ptr, i32 } %1850, 0
  store ptr %1851, ptr %16, align 8
  %1852 = extractvalue { ptr, i32 } %1850, 1
  store i32 %1852, ptr %17, align 4
  call void @__cxa_free_exception(ptr %1838) #0
  br label %1914

1853:                                             ; preds = %1831
  br label %1854

1854:                                             ; preds = %1853
  br label %1855

1855:                                             ; preds = %1854
  call void @llvm.lifetime.start.p0(i64 8, ptr %153) #0
  %1856 = load ptr, ptr %149, align 8, !tbaa !5
  %1857 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1856, i32 0, i32 0
  %1858 = getelementptr inbounds %"class.HIR::Path", ptr %1857, i32 0, i32 0
  %1859 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1858)
          to label %1860 unwind label %1887

1860:                                             ; preds = %1855
  store ptr %1859, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %154) #0
  %1861 = load ptr, ptr %153, align 8, !tbaa !5
  %1862 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1861, i32 0, i32 0
  %1863 = load ptr, ptr %153, align 8, !tbaa !5
  %1864 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1863, i32 0, i32 1
  %1865 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1864, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %154, ptr noundef %1862, ptr noundef %1865, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1866 unwind label %1891

1866:                                             ; preds = %1860
  call void @llvm.lifetime.start.p0(i64 1, ptr %155) #0
  %1867 = load ptr, ptr %10, align 8, !tbaa !5
  %1868 = load ptr, ptr %153, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 56, ptr %157) #0
  %1869 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 0
  store ptr %154, ptr %1869, align 8, !tbaa !5
  %1870 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 1
  %1871 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1871, ptr %1870, align 8, !tbaa !5
  %1872 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 2
  %1873 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1873, ptr %1872, align 8, !tbaa !5
  %1874 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 3
  store ptr %161, ptr %1874, align 8, !tbaa !121
  %1875 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 4
  %1876 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1876, ptr %1875, align 8, !tbaa !5
  %1877 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 5
  store ptr %5, ptr %1877, align 8, !tbaa !5
  %1878 = getelementptr inbounds %class.anon.508, ptr %157, i32 0, i32 6
  %1879 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1879, ptr %1878, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %156, ptr noundef nonnull align 8 dereferenceable(56) %157)
          to label %1880 unwind label %1895

1880:                                             ; preds = %1866
  %1881 = invoke noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1867, ptr noundef nonnull align 8 dereferenceable(80) %1868, ptr noundef %156)
          to label %1882 unwind label %1899

1882:                                             ; preds = %1880
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %157) #0
  %1883 = zext i1 %1881 to i8
  store i8 %1883, ptr %155, align 1, !tbaa !9
  %1884 = load i8, ptr %155, align 1, !tbaa !9, !range !36, !noundef !37
  %1885 = trunc i8 %1884 to i1
  br i1 %1885, label %1886, label %1904

1886:                                             ; preds = %1882
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1905

1887:                                             ; preds = %1855
  %1888 = landingpad { ptr, i32 }
          cleanup
  %1889 = extractvalue { ptr, i32 } %1888, 0
  store ptr %1889, ptr %16, align 8
  %1890 = extractvalue { ptr, i32 } %1888, 1
  store i32 %1890, ptr %17, align 4
  br label %1909

1891:                                             ; preds = %1860
  %1892 = landingpad { ptr, i32 }
          cleanup
  %1893 = extractvalue { ptr, i32 } %1892, 0
  store ptr %1893, ptr %16, align 8
  %1894 = extractvalue { ptr, i32 } %1892, 1
  store i32 %1894, ptr %17, align 4
  br label %1908

1895:                                             ; preds = %1866
  %1896 = landingpad { ptr, i32 }
          cleanup
  %1897 = extractvalue { ptr, i32 } %1896, 0
  store ptr %1897, ptr %16, align 8
  %1898 = extractvalue { ptr, i32 } %1896, 1
  store i32 %1898, ptr %17, align 4
  br label %1903

1899:                                             ; preds = %1880
  %1900 = landingpad { ptr, i32 }
          cleanup
  %1901 = extractvalue { ptr, i32 } %1900, 0
  store ptr %1901, ptr %16, align 8
  %1902 = extractvalue { ptr, i32 } %1900, 1
  store i32 %1902, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %156) #0
  br label %1903

1903:                                             ; preds = %1899, %1895
  call void @llvm.lifetime.end.p0(i64 56, ptr %157) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %154) #0
  br label %1908

1904:                                             ; preds = %1882
  store i32 0, ptr %23, align 4
  br label %1905

1905:                                             ; preds = %1904, %1886
  call void @llvm.lifetime.end.p0(i64 1, ptr %155) #0
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %154) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %154) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  %1906 = load i32, ptr %23, align 4
  switch i32 %1906, label %1912 [
    i32 0, label %1907
  ]

1907:                                             ; preds = %1905
  br label %1910

1908:                                             ; preds = %1903, %1891
  call void @llvm.lifetime.end.p0(i64 128, ptr %154) #0
  br label %1909

1909:                                             ; preds = %1908, %1887
  call void @llvm.lifetime.end.p0(i64 8, ptr %153) #0
  br label %1914

1910:                                             ; preds = %1907, %1824
  br label %1911

1911:                                             ; preds = %1910
  store i8 0, ptr %148, align 1, !tbaa !9
  br label %1811, !llvm.loop !123

1912:                                             ; preds = %1905, %1815
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  %1913 = load i32, ptr %23, align 4
  switch i32 %1913, label %1917 [
    i32 107, label %1915
  ]

1914:                                             ; preds = %1909, %1849, %1848, %1816
  call void @llvm.lifetime.end.p0(i64 8, ptr %149) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #0
  br label %1924

1915:                                             ; preds = %1912
  br label %1916

1916:                                             ; preds = %1915
  store i8 0, ptr %148, align 1, !tbaa !9
  br label %1803, !llvm.loop !124

1917:                                             ; preds = %1912, %1806
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #0
  %1918 = load i32, ptr %23, align 4
  switch i32 %1918, label %1922 [
    i32 104, label %1919
  ]

1919:                                             ; preds = %1917
  br label %1920

1920:                                             ; preds = %1919, %1801, %1742, %1577, %1345, %1322, %928, %608, %243
  br label %1921

1921:                                             ; preds = %1920
  store i8 0, ptr %24, align 1, !tbaa !9
  br label %230, !llvm.loop !125

1922:                                             ; preds = %1917, %1799, %1740, %1575, %1320, %926, %606, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  %1923 = load i32, ptr %23, align 4
  switch i32 %1923, label %1927 [
    i32 5, label %1925
  ]

1924:                                             ; preds = %1914, %1796, %1737, %1572, %1337, %1317, %923, %603, %234
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #0
  br label %1956

1925:                                             ; preds = %1922
  br label %1926

1926:                                             ; preds = %1925
  store i8 0, ptr %24, align 1, !tbaa !9
  br label %222, !llvm.loop !126

1927:                                             ; preds = %1922, %225
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #0
  %1928 = load i32, ptr %23, align 4
  switch i32 %1928, label %1954 [
    i32 2, label %1929
  ]

1929:                                             ; preds = %1927
  %1930 = load ptr, ptr %10, align 8, !tbaa !5
  %1931 = load ptr, ptr %11, align 8, !tbaa !5
  %1932 = load ptr, ptr %12, align 8, !tbaa !5
  %1933 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %158, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1934 unwind label %212

1934:                                             ; preds = %1929
  %1935 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1930, ptr noundef nonnull align 8 dereferenceable(8) %1931, ptr noundef nonnull align 8 dereferenceable(24) %1932, ptr noundef nonnull align 8 dereferenceable(8) %1933, ptr noundef %158)
          to label %1936 unwind label %1938

1936:                                             ; preds = %1934
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #0
  br i1 %1935, label %1937, label %1942

1937:                                             ; preds = %1936
  store i1 true, ptr %8, align 1
  store i32 1, ptr %23, align 4
  br label %1954

1938:                                             ; preds = %1934
  %1939 = landingpad { ptr, i32 }
          cleanup
  %1940 = extractvalue { ptr, i32 } %1939, 0
  store ptr %1940, ptr %16, align 8
  %1941 = extractvalue { ptr, i32 } %1939, 1
  store i32 %1941, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %158) #0
  br label %1956

1942:                                             ; preds = %1936
  %1943 = load ptr, ptr %10, align 8, !tbaa !5
  %1944 = load ptr, ptr %11, align 8, !tbaa !5
  %1945 = load ptr, ptr %12, align 8, !tbaa !5
  %1946 = load ptr, ptr %18, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %159, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1947 unwind label %212

1947:                                             ; preds = %1942
  %1948 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %161, ptr noundef nonnull align 8 dereferenceable(8) %1943, ptr noundef nonnull align 8 dereferenceable(8) %1944, ptr noundef nonnull align 8 dereferenceable(24) %1945, ptr noundef nonnull align 8 dereferenceable(8) %1946, ptr noundef %159)
          to label %1949 unwind label %1950

1949:                                             ; preds = %1947
  store i1 %1948, ptr %8, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #0
  store i32 1, ptr %23, align 4
  br label %1954

1950:                                             ; preds = %1947
  %1951 = landingpad { ptr, i32 }
          cleanup
  %1952 = extractvalue { ptr, i32 } %1951, 0
  store ptr %1952, ptr %16, align 8
  %1953 = extractvalue { ptr, i32 } %1951, 1
  store i32 %1953, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %159) #0
  br label %1956

1954:                                             ; preds = %1949, %1937, %1927, %203
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  %1955 = load i1, ptr %8, align 1
  ret i1 %1955

1956:                                             ; preds = %1950, %1938, %1924, %216, %212
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #0
  br label %1957

1957:                                             ; preds = %1956, %208
  call void @llvm.lifetime.end.p0(i64 40, ptr %19) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  br label %1958

1958:                                             ; preds = %1957, %204
  %1959 = load ptr, ptr %16, align 8
  %1960 = load i32, ptr %17, align 4
  %1961 = insertvalue { ptr, i32 } poison, ptr %1959, 0
  %1962 = insertvalue { ptr, i32 } %1961, i32 %1960, 1
  resume { ptr, i32 } %1962

1963:                                             ; preds = %1839, %1005, %974, %685, %654, %341, %310
  unreachable
}

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7CompareE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #3

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

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

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

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

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

declare void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericParams") align 8, ptr noundef nonnull align 8 dereferenceable(96)) #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 #4 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: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 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)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280), 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) #4 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #8 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) #4 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{!"branch_weights", i32 1, i32 1048575}
!12 = !{!13, !6, i64 224}
!13 = !{!"_ZTS15TraitResolution", !14, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !32, i64 256}
!14 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !15, i64 24, !24, i64 72, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208}
!15 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!23 = !{!"long", !7, i64 0}
!24 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!29 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!30 = !{!"_ZTSN3HIR10SimplePathE", !31, i64 0}
!31 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!32 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !35, i64 0}
!35 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!36 = !{i8 0, i8 2}
!37 = !{}
!38 = !{!39, !39, i64 0}
!39 = !{!"int", !7, i64 0}
!40 = !{!41, !6, i64 0}
!41 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!42 = !{!43, !43, i64 0}
!43 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!44 = distinct !{!44, !45}
!45 = !{!"llvm.loop.mustprogress"}
!46 = distinct !{!46, !45}
!47 = distinct !{!47, !45}
!48 = !{!49, !10, i64 96}
!49 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !50, i64 0, !10, i64 96, !10, i64 97, !67, i64 104, !68, i64 112, !69, i64 120}
!50 = !{!"_ZTSN3HIR13GenericParamsE", !51, i64 0, !55, i64 24, !59, i64 48, !63, i64 72}
!51 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!59 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !62, i64 0}
!62 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!63 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !64, i64 0}
!64 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !65, i64 0}
!65 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !66, i64 0}
!66 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!67 = !{!"_ZTS8RcString", !6, i64 0}
!68 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!69 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = distinct !{!73, !45}
!74 = distinct !{!74, !45}
!75 = distinct !{!75, !45}
!76 = distinct !{!76, !45}
!77 = distinct !{!77, !45}
!78 = distinct !{!78, !45}
!79 = distinct !{!79, !45}
!80 = distinct !{!80, !45}
!81 = !{!82, !6, i64 136}
!82 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !83, i64 0, !103, i64 144, !107, i64 168}
!83 = !{!"_ZTSN3HIR9TraitPathE", !84, i64 0, !90, i64 8, !95, i64 40, !100, i64 88, !6, i64 136}
!84 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !85, i64 0}
!85 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !86, i64 0}
!86 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !87, i64 0}
!87 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !88, i64 0}
!88 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !89, i64 0}
!89 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!90 = !{!"_ZTSN3HIR11GenericPathE", !30, i64 0, !91, i64 8}
!91 = !{!"_ZTSN3HIR10PathParamsE", !92, i64 0, !93, i64 8, !94, i64 16}
!92 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!93 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!94 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!95 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !96, i64 0}
!96 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !97, i64 0}
!97 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !98, i64 0, !20, i64 8}
!98 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !99, i64 0}
!99 = !{!"_ZTSSt4lessI8RcStringE"}
!100 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !101, i64 0}
!101 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !102, i64 0}
!102 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !98, i64 0, !20, i64 8}
!103 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !104, i64 0}
!104 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !105, i64 0}
!105 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !106, i64 0}
!106 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!107 = !{!"_ZTSN3HIR11LifetimeRefE", !39, i64 0}
!108 = !{!109, !6, i64 0}
!109 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE3$_7", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!110 = distinct !{!110, !45}
!111 = distinct !{!111, !45}
!112 = !{!83, !6, i64 136}
!113 = !{!114, !6, i64 0}
!114 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE3$_8", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!115 = distinct !{!115, !45}
!116 = distinct !{!116, !45}
!117 = !{!118, !39, i64 8}
!118 = !{!"_ZTSN3HIR10GenericRefE", !67, i64 0, !39, i64 8}
!119 = distinct !{!119, !45}
!120 = distinct !{!120, !45}
!121 = !{!122, !6, i64 24}
!122 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE4$_10", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!123 = distinct !{!123, !45}
!124 = distinct !{!124, !45}
!125 = distinct !{!125, !45}
!126 = distinct !{!126, !45}


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

%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = 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.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"struct.std::pair.450" = type { ptr, %"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.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.492 = type { ptr, ptr, ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%struct.Span = type { ptr }
%class.anon.493 = type { i8 }
%class.anon.495 = type { i8 }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = 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.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = 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.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = 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.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = 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.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.497 = type { i8 }
%class.anon.499 = type { i8 }
%class.anon.501 = type { i8 }
%class.anon.503 = type { i8 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.60" }
%class.RcString = type { ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.505 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%class.anon.506 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.507 = 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.181" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = 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.508 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params = external hidden global i64, align 8
@_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc = external hidden global i64, align 8
@__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb = external hidden unnamed_addr constant [17 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb = external hidden unnamed_addr constant [162 x i8], align 1
@.str.74 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [42 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [41 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [25 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.88 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.89 = external hidden unnamed_addr constant [34 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

; Function Attrs: nounwind
declare void @_ZNSt13runtime_errorD1Ev(ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #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 @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #4 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: mustprogress uwtable
declare dso_local noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind noalias writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8, ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(80), ptr noundef) local_unnamed_addr #4 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 #8 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 #8 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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) local_unnamed_addr #4 align 2

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

declare void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #2

; 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: nofree nounwind
declare void @__cxa_guard_release(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 #8 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef) local_unnamed_addr #4 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 #4 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: 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 #4 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(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: 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.450") align 8, ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5, i1 noundef zeroext %6) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.492, align 8
  %11 = alloca %"class.std::function.444", align 8
  %12 = alloca %struct.Span, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.493, align 1
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.495, align 1
  %18 = alloca i32, align 4
  %19 = alloca %"class.std::vector.60", align 8
  %20 = alloca %"class.HIR::TypeRef", align 8
  %21 = alloca i32, align 4
  %22 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %23 = alloca %"struct.HIR::PathParams", align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"class.std::vector.60", align 8
  %26 = alloca %"class.std::map", align 8
  %27 = alloca %"struct.std::pair.450", align 8
  %28 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %29 = alloca %"struct.HIR::SimplePath", align 8
  %30 = alloca %"struct.HIR::PathParams", align 8
  %31 = alloca %struct.ImplRef, align 8
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %"struct.HIR::PathParams", align 8
  %34 = alloca %"class.std::map", align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.497, align 1
  %38 = alloca %struct.Span, align 8
  %39 = alloca %"class.std::function", align 8
  %40 = alloca %class.anon.499, align 1
  %41 = alloca i32, align 4
  %42 = alloca %"class.std::vector.60", align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca i32, align 4
  %45 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %46 = alloca %"struct.HIR::PathParams", align 8
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"class.std::vector.60", align 8
  %49 = alloca %"class.std::map", align 8
  %50 = alloca %"struct.std::pair.450", align 8
  %51 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %52 = alloca %"struct.HIR::SimplePath", align 8
  %53 = alloca %"struct.HIR::PathParams", align 8
  %54 = alloca %struct.ImplRef, align 8
  %55 = alloca %"class.HIR::GenericParams", 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.Span, align 8
  %60 = alloca %"class.std::function", align 8
  %61 = alloca %class.anon.501, align 1
  %62 = alloca %struct.Span, align 8
  %63 = alloca %"class.std::function", align 8
  %64 = alloca %class.anon.503, align 1
  %65 = alloca %"struct.HIR::TypeData_FunctionPointer", align 8
  %66 = alloca i32, align 4
  %67 = alloca %"class.std::vector.60", align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca i32, align 4
  %70 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %71 = alloca %"struct.HIR::PathParams", align 8
  %72 = alloca %"class.HIR::TypeRef", align 8
  %73 = alloca %"class.std::vector.60", align 8
  %74 = alloca %"class.std::map", align 8
  %75 = alloca %"struct.std::pair.450", align 8
  %76 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %77 = alloca %"struct.HIR::SimplePath", align 8
  %78 = alloca %"struct.HIR::PathParams", align 8
  %79 = alloca %struct.ImplRef, align 8
  %80 = alloca %"class.HIR::GenericParams", align 8
  %81 = alloca %"class.HIR::TypeRef", align 8
  %82 = alloca %"struct.HIR::PathParams", align 8
  %83 = alloca %"class.std::map", align 8
  %84 = alloca %struct.ImplRef, align 8
  %85 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %86 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %87 = alloca %struct.ImplRef, align 8
  %88 = alloca %"struct.HIR::SimplePath", align 8
  %89 = alloca i8, align 1
  %90 = alloca i8, align 1
  %91 = alloca %"class.std::function.229", align 8
  %92 = alloca %class.anon.505, align 8
  %93 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %94 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %95 = alloca %struct.ImplRef, align 8
  %96 = alloca i8, align 1
  %97 = alloca i8, align 1
  %98 = alloca %"class.std::function.229", align 8
  %99 = alloca %class.anon.506, align 8
  %100 = alloca %struct.ImplRef, align 8
  %101 = alloca %struct.Span, align 8
  %102 = alloca %"class.std::function", align 8
  %103 = alloca %class.anon.507, align 8
  %104 = alloca %struct.MonomorphStatePtr, align 8
  %105 = alloca %"class.std::function.229", align 8
  %106 = alloca %class.anon.508, align 8
  %107 = alloca %"class.std::function.444", align 8
  %108 = alloca %"class.std::function.444", align 8
  %109 = load atomic i8, ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params acquire, align 8
  %110 = icmp eq i8 %109, 0
  br i1 %110, label %111, label %116, !prof !5

111:                                              ; preds = %7
  %112 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #9
  %.not = icmp eq i32 %112, 0
  br i1 %.not, label %116, label %113

113:                                              ; preds = %111
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params)
          to label %114 unwind label %136

114:                                              ; preds = %113
  %115 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR10PathParamsD2Ev, ptr nonnull @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params, ptr nonnull @__dso_handle) #9
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #9
  br label %116

116:                                              ; preds = %114, %111, %7
  %117 = load atomic i8, ptr @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc acquire, align 8
  %118 = icmp eq i8 %117, 0
  br i1 %118, label %119, label %123, !prof !5

119:                                              ; preds = %116
  %120 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #9
  %.not447 = icmp eq i32 %120, 0
  br i1 %.not447, label %123, label %121

121:                                              ; preds = %119
  tail call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #9
  %122 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc, ptr nonnull @__dso_handle) #9
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc) #9
  br label %123

123:                                              ; preds = %121, %119, %116
  %124 = getelementptr inbounds i8, ptr %0, i64 224
  %125 = load ptr, ptr %124, align 8, !tbaa !6
  %126 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %125, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #9
  %127 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %128 = select i1 %127, ptr @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #9
  store ptr %2, ptr %10, align 8, !tbaa !33
  %129 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %3, ptr %129, align 8, !tbaa !33
  %130 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %126, ptr %130, align 8, !tbaa !33
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(24) %10)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %128, ptr noundef nonnull %9)
          to label %131 unwind label %138

131:                                              ; preds = %123
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br i1 %6, label %132, label %.lr.ph1311.critedge

132:                                              ; preds = %131
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %133 unwind label %140

133:                                              ; preds = %132
  %134 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull %11)
          to label %135 unwind label %142

135:                                              ; preds = %133
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br i1 %134, label %.loopexit1730, label %.lr.ph1311.critedge

136:                                              ; preds = %113
  %137 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params) #9
  br label %941

138:                                              ; preds = %123
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %940

140:                                              ; preds = %934, %.thread606, %132
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

142:                                              ; preds = %133
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  br label %.loopexit.split-lp627

.lr.ph1311.critedge:                              ; preds = %135, %131
  %144 = getelementptr inbounds i8, ptr %106, i64 8
  %145 = getelementptr inbounds i8, ptr %106, i64 16
  %146 = getelementptr inbounds i8, ptr %106, i64 24
  %147 = getelementptr inbounds i8, ptr %106, i64 32
  %148 = getelementptr inbounds i8, ptr %106, i64 40
  %149 = getelementptr inbounds i8, ptr %106, i64 48
  %150 = getelementptr inbounds i8, ptr %99, i64 8
  %151 = getelementptr inbounds i8, ptr %99, i64 16
  %152 = getelementptr inbounds i8, ptr %99, i64 24
  %153 = getelementptr inbounds i8, ptr %99, i64 32
  %154 = getelementptr inbounds i8, ptr %99, i64 40
  %155 = getelementptr inbounds i8, ptr %99, i64 48
  %156 = getelementptr inbounds i8, ptr %99, i64 56
  %157 = getelementptr inbounds i8, ptr %92, i64 8
  %158 = getelementptr inbounds i8, ptr %92, i64 16
  %159 = getelementptr inbounds i8, ptr %92, i64 24
  %160 = getelementptr inbounds i8, ptr %92, i64 32
  %161 = getelementptr inbounds i8, ptr %92, i64 40
  %162 = getelementptr inbounds i8, ptr %92, i64 48
  %163 = getelementptr inbounds i8, ptr %92, i64 56
  %164 = getelementptr inbounds i8, ptr %0, i64 144
  %165 = getelementptr inbounds i8, ptr %0, i64 152
  %166 = getelementptr inbounds i8, ptr %0, i64 160
  %167 = getelementptr inbounds i8, ptr %3, i64 8
  %168 = getelementptr inbounds i8, ptr %65, i64 112
  %169 = getelementptr inbounds i8, ptr %65, i64 120
  %170 = getelementptr inbounds i8, ptr %65, i64 104
  %171 = getelementptr inbounds i8, ptr %65, i64 96
  %172 = getelementptr inbounds i8, ptr %71, i64 8
  %173 = getelementptr inbounds i8, ptr %76, i64 32
  %174 = getelementptr inbounds i8, ptr %46, i64 8
  %175 = getelementptr inbounds i8, ptr %51, i64 32
  %176 = getelementptr inbounds i8, ptr %23, i64 8
  %177 = getelementptr inbounds i8, ptr %28, i64 32
  %178 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %126)
  %179 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  switch i32 %179, label %.thread606 [
    i32 0, label %188
    i32 15, label %.preheader
    i32 14, label %.preheader641
    i32 13, label %.preheader648
    i32 8, label %.preheader653.split
    i32 6, label %.lr.ph1191
    i32 7, label %.lr.ph1183
    i32 5, label %.preheader660.split
    i32 4, label %.preheader662.split.split
  ]

.preheader662.split.split:                        ; preds = %.lr.ph1311.critedge
  %180 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %181 = getelementptr inbounds i8, ptr %180, i64 88
  %182 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %181)
  br i1 %182, label %904, label %.thread606

.preheader660.split:                              ; preds = %.lr.ph1311.critedge
  %183 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %184 = getelementptr inbounds i8, ptr %183, i64 8
  %185 = load i32, ptr %184, align 8
  %.fr = freeze i32 %185
  %.mask = and i32 %.fr, -256
  %186 = icmp eq i32 %.mask, 512
  br i1 %186, label %.split1168.us, label %.thread606, !llvm.loop !34

.preheader653.split:                              ; preds = %.lr.ph1311.critedge
  %187 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  br label %.thread606

188:                                              ; preds = %.lr.ph1311.critedge
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 1608, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb) #10
  unreachable

.preheader:                                       ; preds = %.lr.ph1311.critedge
  %189 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %190 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %191 unwind label %.loopexit614

191:                                              ; preds = %.preheader
  br i1 %190, label %192, label %205

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

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

197:                                              ; preds = %195
  %198 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(8) %196, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %199 unwind label %.loopexit614

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

201:                                              ; preds = %199
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %203 unwind label %.loopexit614

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %205 unwind label %.loopexit614

205:                                              ; preds = %203, %191
  %206 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %207 unwind label %.loopexit614

207:                                              ; preds = %205
  br i1 %206, label %214, label %208

208:                                              ; preds = %207
  %209 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %210 unwind label %.loopexit614

210:                                              ; preds = %208
  br i1 %209, label %214, label %211

211:                                              ; preds = %210
  %212 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %213 unwind label %.loopexit614

213:                                              ; preds = %211
  br i1 %212, label %214, label %.thread606

.loopexit614:                                     ; preds = %211, %208, %205, %203, %201, %199, %197, %195, %192, %.preheader
  %lpad.loopexit.split-lp1709 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

.loopexit.split-lp615:                            ; preds = %.invoke
  %lpad.loopexit.split-lp617 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

214:                                              ; preds = %213, %210, %207
  %215 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
  %.not533 = icmp eq i64 %215, 1
  br i1 %.not533, label %228, label %216

216:                                              ; preds = %214
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %217 unwind label %221

217:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %13)
          to label %218 unwind label %223

218:                                              ; preds = %217
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  %219 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %219, ptr noundef nonnull @.str.8)
          to label %.invoke unwind label %226

.invoke:                                          ; preds = %234, %218
  %220 = phi ptr [ %219, %218 ], [ %235, %234 ]
  invoke void @__cxa_throw(ptr nonnull %220, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont unwind label %.loopexit.split-lp615

.cont:                                            ; preds = %.invoke
  unreachable

221:                                              ; preds = %216
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %217
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br label %225

225:                                              ; preds = %223, %221
  %.pn556 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %.loopexit.split-lp627

226:                                              ; preds = %218
  %227 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %219) #9
  br label %.loopexit.split-lp627

228:                                              ; preds = %214
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %230 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %229)
  %231 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %230)
  br i1 %231, label %243, label %232

232:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %233 unwind label %236

233:                                              ; preds = %232
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %17) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 1 dereferenceable(1) %17) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %16)
          to label %234 unwind label %238

234:                                              ; preds = %233
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  %235 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %235, ptr noundef nonnull @.str.8)
          to label %.invoke unwind label %241

236:                                              ; preds = %232
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %240

238:                                              ; preds = %233
  %239 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %17) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #9
  br label %240

240:                                              ; preds = %238, %236
  %.pn534 = phi { ptr, i32 } [ %239, %238 ], [ %237, %236 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #9
  br label %.loopexit.split-lp627

241:                                              ; preds = %234
  %242 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %235) #9
  br label %.loopexit.split-lp627

243:                                              ; preds = %228
  %244 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %245 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %244)
  %246 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %245)
  %247 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %246) #9
  %248 = load ptr, ptr %189, align 8, !tbaa !38
  %249 = getelementptr inbounds i8, ptr %248, i64 32
  %250 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %249) #9
  %.not536 = icmp eq i64 %247, %250
  br i1 %.not536, label %251, label %.loopexit1730

251:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #9
  store i32 0, ptr %18, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %19) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  %252 = load ptr, ptr %189, align 8, !tbaa !38
  %253 = getelementptr inbounds i8, ptr %252, i64 32
  %254 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %253) #9
  %.not1335 = icmp eq i64 %254, 0
  br i1 %.not1335, label %._crit_edge1308, label %.lr.ph1307

._crit_edge1308:                                  ; preds = %291, %251
  %255 = load i32, ptr %18, align 4, !tbaa !40
  %.not537 = icmp eq i32 %255, 2
  br i1 %.not537, label %372, label %301

.lr.ph1307:                                       ; preds = %251, %291
  %256 = phi i64 [ %294, %291 ], [ 0, %251 ]
  %.04281305 = phi i32 [ %293, %291 ], [ 0, %251 ]
  %257 = load ptr, ptr %189, align 8, !tbaa !38
  %258 = getelementptr inbounds i8, ptr %257, i64 32
  %259 = call noundef nonnull align 8 dereferenceable(224) ptr @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %258, i64 noundef %256) #9
  %260 = getelementptr inbounds i8, ptr %259, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %261 unwind label %279

261:                                              ; preds = %.lr.ph1307
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %262 unwind label %281

262:                                              ; preds = %261
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  %263 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %264 unwind label %284

264:                                              ; preds = %262
  br i1 %263, label %265, label %286

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

268:                                              ; preds = %265
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %260)
          to label %270 unwind label %284

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

272:                                              ; preds = %270
  %273 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef %256) #9
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef nonnull align 8 dereferenceable(8) %273)
          to label %275 unwind label %284

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

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

279:                                              ; preds = %.lr.ph1307
  %280 = landingpad { ptr, i32 }
          cleanup
  br label %283

281:                                              ; preds = %261
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  br label %283

283:                                              ; preds = %281, %279
  %.pn551 = phi { ptr, i32 } [ %282, %281 ], [ %280, %279 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #9
  br label %384

284:                                              ; preds = %277, %275, %272, %270, %268, %265, %262
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %384

286:                                              ; preds = %277, %264
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %21) #9
  %287 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %246, i64 noundef %256) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  %288 = load ptr, ptr %124, align 8, !tbaa !6
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %22, ptr noundef nonnull align 8 dereferenceable(49) %288)
          to label %289 unwind label %299

289:                                              ; preds = %286
  %290 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull align 8 dereferenceable(8) %22)
          to label %291 unwind label %299

291:                                              ; preds = %289
  store i32 %290, ptr %21, align 4, !tbaa !40
  %292 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %18, ptr noundef nonnull align 4 dereferenceable(4) %21)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #9
  %293 = add i32 %.04281305, 1
  %294 = zext i32 %293 to i64
  %295 = load ptr, ptr %189, align 8, !tbaa !38
  %296 = getelementptr inbounds i8, ptr %295, i64 32
  %297 = call noundef i64 @_ZNKSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %296) #9
  %298 = icmp ugt i64 %297, %294
  br i1 %298, label %.lr.ph1307, label %._crit_edge1308, !llvm.loop !42

299:                                              ; preds = %289, %286
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %21) #9
  br label %384

301:                                              ; preds = %._crit_edge1308
  %302 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %303 unwind label %315

303:                                              ; preds = %301
  br i1 %302, label %304, label %317

304:                                              ; preds = %303
  %305 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %305, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %307 unwind label %315

307:                                              ; preds = %304
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef nonnull @.str.77)
          to label %309 unwind label %315

309:                                              ; preds = %307
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7CompareE(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef nonnull align 4 dereferenceable(4) %18)
          to label %311 unwind label %315

311:                                              ; preds = %309
  %312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %313 unwind label %315

313:                                              ; preds = %311
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %312, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %317 unwind label %315

315:                                              ; preds = %382, %380, %378, %375, %372, %313, %311, %309, %307, %304, %301
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %384

317:                                              ; preds = %313, %303
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %318 unwind label %336

318:                                              ; preds = %317
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull %25)
          to label %319 unwind label %338

319:                                              ; preds = %318
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %176, ptr noundef nonnull %24)
          to label %320 unwind label %340

320:                                              ; preds = %319
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %26) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %28) #9
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %321 unwind label %343

321:                                              ; preds = %320
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %30, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %322 unwind label %345

322:                                              ; preds = %321
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull %29, ptr noundef nonnull %30)
          to label %323 unwind label %347

323:                                              ; preds = %322
  %324 = load ptr, ptr %189, align 8, !tbaa !38
  %325 = getelementptr inbounds i8, ptr %324, i64 56
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %177, ptr noundef nonnull align 8 dereferenceable(8) %325)
          to label %326 unwind label %349

326:                                              ; preds = %323
  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.450") align 8 %27, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %28)
          to label %327 unwind label %351

327:                                              ; preds = %326
  %328 = 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) %26, ptr noundef nonnull align 8 dereferenceable(48) %27)
          to label %329 unwind label %353

329:                                              ; preds = %327
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #9
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %330 unwind label %359

330:                                              ; preds = %329
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %331 unwind label %361

331:                                              ; preds = %330
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %34, ptr noundef nonnull align 8 dereferenceable(48) %26) #9
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %31, ptr noundef nonnull %32, ptr noundef nonnull %33, ptr noundef nonnull %34)
          to label %332 unwind label %363

332:                                              ; preds = %331
  %333 = load i32, ptr %18, align 4, !tbaa !40
  %334 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %31, i32 noundef %333)
          to label %335 unwind label %365

335:                                              ; preds = %332
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %34) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #9
  br label %.loopexit613.thread

336:                                              ; preds = %317
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %371

338:                                              ; preds = %318
  %339 = landingpad { ptr, i32 }
          cleanup
  br label %342

340:                                              ; preds = %319
  %341 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %342

342:                                              ; preds = %340, %338
  %.pn538 = phi { ptr, i32 } [ %341, %340 ], [ %339, %338 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  br label %370

343:                                              ; preds = %320
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %358

345:                                              ; preds = %321
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %357

347:                                              ; preds = %322
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %356

349:                                              ; preds = %323
  %350 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %356

351:                                              ; preds = %326
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %355

353:                                              ; preds = %327
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %27) #9
  br label %355

355:                                              ; preds = %353, %351
  %.pn540 = phi { ptr, i32 } [ %354, %353 ], [ %352, %351 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %28) #9
  br label %356

356:                                              ; preds = %355, %349, %347
  %.pn540.pn = phi { ptr, i32 } [ %.pn540, %355 ], [ %350, %349 ], [ %348, %347 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #9
  br label %357

357:                                              ; preds = %356, %345
  %.pn540.pn.pn = phi { ptr, i32 } [ %.pn540.pn, %356 ], [ %346, %345 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  br label %358

358:                                              ; preds = %357, %343
  %.pn540.pn.pn.pn = phi { ptr, i32 } [ %.pn540.pn.pn, %357 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %27) #9
  br label %369

359:                                              ; preds = %329
  %360 = landingpad { ptr, i32 }
          cleanup
  br label %369

361:                                              ; preds = %330
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %368

363:                                              ; preds = %331
  %364 = landingpad { ptr, i32 }
          cleanup
  br label %367

365:                                              ; preds = %332
  %366 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %31) #9
  br label %367

367:                                              ; preds = %365, %363
  %.pn545 = phi { ptr, i32 } [ %366, %365 ], [ %364, %363 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %34) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  br label %368

368:                                              ; preds = %367, %361
  %.pn545.pn = phi { ptr, i32 } [ %.pn545, %367 ], [ %362, %361 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  br label %369

369:                                              ; preds = %368, %359, %358
  %.pn545.pn.pn = phi { ptr, i32 } [ %.pn545.pn, %368 ], [ %360, %359 ], [ %.pn540.pn.pn.pn, %358 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %26) #9
  br label %370

370:                                              ; preds = %369, %342
  %.pn545.pn.pn.pn = phi { ptr, i32 } [ %.pn545.pn.pn, %369 ], [ %.pn538, %342 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %23) #9
  br label %371

371:                                              ; preds = %370, %336
  %.pn545.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn545.pn.pn.pn, %370 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #9
  br label %384

372:                                              ; preds = %._crit_edge1308
  %373 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %374 unwind label %315

374:                                              ; preds = %372
  br i1 %373, label %375, label %.loopexit613.thread

375:                                              ; preds = %374
  %376 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %376, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %378 unwind label %315

378:                                              ; preds = %375
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull @.str.79)
          to label %380 unwind label %315

380:                                              ; preds = %378
  %381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %382 unwind label %315

382:                                              ; preds = %380
  %383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %381, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit613.thread unwind label %315

.loopexit613.thread:                              ; preds = %335, %382, %374
  %.3 = phi i1 [ %334, %335 ], [ false, %382 ], [ false, %374 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  br label %.loopexit1730

384:                                              ; preds = %283, %284, %299, %371, %315
  %.pn553.pn = phi { ptr, i32 } [ %.pn545.pn.pn.pn.pn, %371 ], [ %316, %315 ], [ %300, %299 ], [ %285, %284 ], [ %.pn551, %283 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %19) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  br label %.loopexit.split-lp627

.preheader641:                                    ; preds = %.lr.ph1311.critedge
  %385 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %386 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %387 unwind label %.loopexit620

387:                                              ; preds = %.preheader641
  br i1 %386, label %394, label %388

388:                                              ; preds = %387
  %389 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %390 unwind label %.loopexit620

390:                                              ; preds = %388
  br i1 %389, label %394, label %391

391:                                              ; preds = %390
  %392 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %393 unwind label %.loopexit620

393:                                              ; preds = %391
  br i1 %392, label %394, label %.thread606

.loopexit620:                                     ; preds = %391, %388, %.preheader641
  %lpad.loopexit.split-lp1700 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

.loopexit.split-lp621:                            ; preds = %.invoke1775
  %lpad.loopexit.split-lp623 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

394:                                              ; preds = %393, %390, %387
  %395 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
  %.not504 = icmp eq i64 %395, 1
  br i1 %.not504, label %408, label %396

396:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %397 unwind label %401

397:                                              ; preds = %396
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %37) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 1 dereferenceable(1) %37) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %36)
          to label %398 unwind label %403

398:                                              ; preds = %397
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  %399 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %399, ptr noundef nonnull @.str.8)
          to label %.invoke1775 unwind label %406

.invoke1775:                                      ; preds = %414, %398
  %400 = phi ptr [ %399, %398 ], [ %415, %414 ]
  invoke void @__cxa_throw(ptr nonnull %400, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont1776 unwind label %.loopexit.split-lp621

.cont1776:                                        ; preds = %.invoke1775
  unreachable

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

403:                                              ; preds = %397
  %404 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %405

405:                                              ; preds = %403, %401
  %.pn529 = phi { ptr, i32 } [ %404, %403 ], [ %402, %401 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %.loopexit.split-lp627

406:                                              ; preds = %398
  %407 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %399) #9
  br label %.loopexit.split-lp627

408:                                              ; preds = %394
  %409 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %410 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %409)
  %411 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %410)
  br i1 %411, label %423, label %412

412:                                              ; preds = %408
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %413 unwind label %416

413:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %40) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 1 dereferenceable(1) %40) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull %39)
          to label %414 unwind label %418

414:                                              ; preds = %413
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  %415 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %415, ptr noundef nonnull @.str.8)
          to label %.invoke1775 unwind label %421

416:                                              ; preds = %412
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %420

418:                                              ; preds = %413
  %419 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %40) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #9
  br label %420

420:                                              ; preds = %418, %416
  %.pn505 = phi { ptr, i32 } [ %419, %418 ], [ %417, %416 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #9
  br label %.loopexit.split-lp627

421:                                              ; preds = %414
  %422 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %415) #9
  br label %.loopexit.split-lp627

423:                                              ; preds = %408
  %424 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %425 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %424)
  %426 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %425)
  %427 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %426) #9
  %428 = getelementptr inbounds i8, ptr %385, i64 120
  %429 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %428) #9
  %.not507 = icmp eq i64 %427, %429
  br i1 %.not507, label %430, label %.loopexit1730

.loopexit643:                                     ; preds = %430, %452, %455, %458, %460, %462, %464
  %lpad.loopexit645 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

.loopexit.split-lp644:                            ; preds = %438, %441, %444, %446, %448, %450
  %lpad.loopexit.split-lp646 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

430:                                              ; preds = %423
  %431 = getelementptr inbounds i8, ptr %385, i64 104
  %432 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %431, ptr noundef nonnull @.str.80)
          to label %433 unwind label %.loopexit643

433:                                              ; preds = %430
  br i1 %432, label %438, label %434

434:                                              ; preds = %433
  %435 = getelementptr inbounds i8, ptr %385, i64 96
  %436 = load i8, ptr %435, align 8, !tbaa !43, !range !69, !noundef !70
  %437 = trunc nuw i8 %436 to i1
  br i1 %437, label %438, label %452

438:                                              ; preds = %433, %434
  %439 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %440 unwind label %.loopexit.split-lp644

440:                                              ; preds = %438
  br i1 %439, label %441, label %.loopexit1730

441:                                              ; preds = %440
  %442 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %442, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %444 unwind label %.loopexit.split-lp644

444:                                              ; preds = %441
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %443, ptr noundef nonnull @.str.81)
          to label %446 unwind label %.loopexit.split-lp644

446:                                              ; preds = %444
  %447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %445, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %448 unwind label %.loopexit.split-lp644

448:                                              ; preds = %446
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %450 unwind label %.loopexit.split-lp644

450:                                              ; preds = %448
  %451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.loopexit1730 unwind label %.loopexit.split-lp644

452:                                              ; preds = %434
  %453 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %454 unwind label %.loopexit643

454:                                              ; preds = %452
  br i1 %453, label %455, label %466

455:                                              ; preds = %454
  %456 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %456, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %458 unwind label %.loopexit643

458:                                              ; preds = %455
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef nonnull @.str.82)
          to label %460 unwind label %.loopexit643

460:                                              ; preds = %458
  %461 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %459, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %462 unwind label %.loopexit643

462:                                              ; preds = %460
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %461, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %464 unwind label %.loopexit643

464:                                              ; preds = %462
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %466 unwind label %.loopexit643

466:                                              ; preds = %464, %454
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %41) #9
  store i32 0, ptr %41, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %42) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  %467 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %428) #9
  %.not1334 = icmp eq i64 %467, 0
  br i1 %.not1334, label %._crit_edge1304, label %.lr.ph1303

._crit_edge1304:                                  ; preds = %476, %466
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %46) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %489 unwind label %506

.lr.ph1303:                                       ; preds = %466, %476
  %468 = phi i64 [ %479, %476 ], [ 0, %466 ]
  %.04331301 = phi i32 [ %478, %476 ], [ 0, %466 ]
  %469 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %428, i64 noundef %468) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %470 unwind label %482

470:                                              ; preds = %.lr.ph1303
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %42, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %471 unwind label %484

471:                                              ; preds = %470
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #9
  %472 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %426, i64 noundef %468) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %45) #9
  %473 = load ptr, ptr %124, align 8, !tbaa !6
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %45, ptr noundef nonnull align 8 dereferenceable(49) %473)
          to label %474 unwind label %487

474:                                              ; preds = %471
  %475 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %476 unwind label %487

476:                                              ; preds = %474
  store i32 %475, ptr %44, align 4, !tbaa !40
  %477 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %41, ptr noundef nonnull align 4 dereferenceable(4) %44)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #9
  %478 = add i32 %.04331301, 1
  %479 = zext i32 %478 to i64
  %480 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %428) #9
  %481 = icmp ugt i64 %480, %479
  br i1 %481, label %.lr.ph1303, label %._crit_edge1304, !llvm.loop !71

482:                                              ; preds = %.lr.ph1303
  %483 = landingpad { ptr, i32 }
          cleanup
  br label %486

484:                                              ; preds = %470
  %485 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br label %486

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

487:                                              ; preds = %474, %471
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #9
  br label %545

489:                                              ; preds = %._crit_edge1304
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %48, ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull %48)
          to label %490 unwind label %508

490:                                              ; preds = %489
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull %47)
          to label %491 unwind label %510

491:                                              ; preds = %490
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %49) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %50) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %51) #9
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %492 unwind label %513

492:                                              ; preds = %491
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %53, ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %493 unwind label %515

493:                                              ; preds = %492
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull %52, ptr noundef nonnull %53)
          to label %494 unwind label %517

494:                                              ; preds = %493
  %495 = getelementptr inbounds i8, ptr %385, i64 112
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %175, ptr noundef nonnull align 8 dereferenceable(8) %495)
          to label %496 unwind label %519

496:                                              ; preds = %494
  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.450") align 8 %50, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %51)
          to label %497 unwind label %521

497:                                              ; preds = %496
  %498 = 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) %49, ptr noundef nonnull align 8 dereferenceable(48) %50)
          to label %499 unwind label %523

499:                                              ; preds = %497
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %50) #9
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %50) #9
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %55, ptr noundef nonnull align 8 dereferenceable(96) %385)
          to label %500 unwind label %529

500:                                              ; preds = %499
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %501 unwind label %531

501:                                              ; preds = %500
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %57, ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %502 unwind label %533

502:                                              ; preds = %501
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %58, ptr noundef nonnull align 8 dereferenceable(48) %49) #9
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %54, ptr noundef nonnull %55, ptr noundef nonnull %56, ptr noundef nonnull %57, ptr noundef nonnull %58)
          to label %503 unwind label %535

503:                                              ; preds = %502
  %504 = load i32, ptr %41, align 4, !tbaa !40
  %505 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %54, i32 noundef %504)
          to label %.loopexit619.thread unwind label %537

.loopexit619.thread:                              ; preds = %503
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %54) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %49) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #9
  br label %.loopexit1730

506:                                              ; preds = %._crit_edge1304
  %507 = landingpad { ptr, i32 }
          cleanup
  br label %544

508:                                              ; preds = %489
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %512

510:                                              ; preds = %490
  %511 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br label %512

512:                                              ; preds = %510, %508
  %.pn508 = phi { ptr, i32 } [ %511, %510 ], [ %509, %508 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #9
  br label %543

513:                                              ; preds = %491
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %528

515:                                              ; preds = %492
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %527

517:                                              ; preds = %493
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %526

519:                                              ; preds = %494
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %526

521:                                              ; preds = %496
  %522 = landingpad { ptr, i32 }
          cleanup
  br label %525

523:                                              ; preds = %497
  %524 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %50) #9
  br label %525

525:                                              ; preds = %523, %521
  %.pn510 = phi { ptr, i32 } [ %524, %523 ], [ %522, %521 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #9
  br label %526

526:                                              ; preds = %525, %519, %517
  %.pn510.pn = phi { ptr, i32 } [ %.pn510, %525 ], [ %520, %519 ], [ %518, %517 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #9
  br label %527

527:                                              ; preds = %526, %515
  %.pn510.pn.pn = phi { ptr, i32 } [ %.pn510.pn, %526 ], [ %516, %515 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  br label %528

528:                                              ; preds = %527, %513
  %.pn510.pn.pn.pn = phi { ptr, i32 } [ %.pn510.pn.pn, %527 ], [ %514, %513 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %51) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %50) #9
  br label %542

529:                                              ; preds = %499
  %530 = landingpad { ptr, i32 }
          cleanup
  br label %542

531:                                              ; preds = %500
  %532 = landingpad { ptr, i32 }
          cleanup
  br label %541

533:                                              ; preds = %501
  %534 = landingpad { ptr, i32 }
          cleanup
  br label %540

535:                                              ; preds = %502
  %536 = landingpad { ptr, i32 }
          cleanup
  br label %539

537:                                              ; preds = %503
  %538 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %54) #9
  br label %539

539:                                              ; preds = %537, %535
  %.pn515 = phi { ptr, i32 } [ %538, %537 ], [ %536, %535 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %58) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %57) #9
  br label %540

540:                                              ; preds = %539, %533
  %.pn515.pn = phi { ptr, i32 } [ %.pn515, %539 ], [ %534, %533 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %541

541:                                              ; preds = %540, %531
  %.pn515.pn.pn = phi { ptr, i32 } [ %.pn515.pn, %540 ], [ %532, %531 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %55) #9
  br label %542

542:                                              ; preds = %541, %529, %528
  %.pn515.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn, %541 ], [ %530, %529 ], [ %.pn510.pn.pn.pn, %528 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %49) #9
  br label %543

543:                                              ; preds = %542, %512
  %.pn515.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn, %542 ], [ %.pn508, %512 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #9
  br label %544

544:                                              ; preds = %543, %506
  %.pn515.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn.pn, %543 ], [ %507, %506 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %46) #9
  br label %545

545:                                              ; preds = %486, %487, %544
  %.pn524.pn = phi { ptr, i32 } [ %.pn515.pn.pn.pn.pn.pn, %544 ], [ %488, %487 ], [ %.pn522, %486 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %41) #9
  br label %.loopexit.split-lp627

.preheader648:                                    ; preds = %.lr.ph1311.critedge
  %546 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %547 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %164)
          to label %548 unwind label %.loopexit626

548:                                              ; preds = %.preheader648
  br i1 %547, label %555, label %549

549:                                              ; preds = %548
  %550 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %165)
          to label %551 unwind label %.loopexit626

551:                                              ; preds = %549
  br i1 %550, label %555, label %552

552:                                              ; preds = %551
  %553 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %554 unwind label %.loopexit626

554:                                              ; preds = %552
  br i1 %553, label %555, label %.thread606

.loopexit626:                                     ; preds = %552, %549, %.preheader648
  %lpad.loopexit.split-lp1691 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

.loopexit.split-lp627.loopexit:                   ; preds = %596, %594, %592, %590, %587, %584
  %lpad.loopexit650 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

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

555:                                              ; preds = %554, %551, %548
  %556 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
  %.not473 = icmp eq i64 %556, 1
  br i1 %.not473, label %568, label %557

557:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %59) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %558 unwind label %561

558:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %61) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %60, ptr noundef nonnull align 1 dereferenceable(1) %61) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull %60)
          to label %559 unwind label %563

559:                                              ; preds = %558
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  %560 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %560, ptr noundef nonnull @.str.8)
          to label %.invoke1777 unwind label %566

561:                                              ; preds = %557
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %565

563:                                              ; preds = %558
  %564 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %61) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br label %565

565:                                              ; preds = %563, %561
  %.pn500 = phi { ptr, i32 } [ %564, %563 ], [ %562, %561 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %59) #9
  br label %.loopexit.split-lp627

566:                                              ; preds = %559
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %560) #9
  br label %.loopexit.split-lp627

568:                                              ; preds = %555
  %569 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %570 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %569)
  %571 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %570)
  br i1 %571, label %584, label %572

572:                                              ; preds = %568
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %573 unwind label %577

573:                                              ; preds = %572
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %64) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 1 dereferenceable(1) %64) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull %63)
          to label %574 unwind label %579

574:                                              ; preds = %573
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  %575 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %575, ptr noundef nonnull @.str.8)
          to label %.invoke1777 unwind label %582

.invoke1777:                                      ; preds = %574, %559
  %576 = phi ptr [ %560, %559 ], [ %575, %574 ]
  invoke void @__cxa_throw(ptr nonnull %576, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %.cont1778 unwind label %.loopexit.split-lp627.loopexit.split-lp

.cont1778:                                        ; preds = %.invoke1777
  unreachable

577:                                              ; preds = %572
  %578 = landingpad { ptr, i32 }
          cleanup
  br label %581

579:                                              ; preds = %573
  %580 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %64) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %581

581:                                              ; preds = %579, %577
  %.pn474 = phi { ptr, i32 } [ %580, %579 ], [ %578, %577 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #9
  br label %.loopexit.split-lp627

582:                                              ; preds = %574
  %583 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %575) #9
  br label %.loopexit.split-lp627

584:                                              ; preds = %568
  %585 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %586 unwind label %.loopexit.split-lp627.loopexit

586:                                              ; preds = %584
  br i1 %585, label %587, label %598

587:                                              ; preds = %586
  %588 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %588, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %590 unwind label %.loopexit.split-lp627.loopexit

590:                                              ; preds = %587
  %591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull @.str.82)
          to label %592 unwind label %.loopexit.split-lp627.loopexit

592:                                              ; preds = %590
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %594 unwind label %.loopexit.split-lp627.loopexit

594:                                              ; preds = %592
  %595 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %593, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %596 unwind label %.loopexit.split-lp627.loopexit

596:                                              ; preds = %594
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %598 unwind label %.loopexit.split-lp627.loopexit

598:                                              ; preds = %596, %586
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %65) #9
  invoke void @_ZNK3HIR8TypeData18Data_NamedFunction5decayERK4Span(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::TypeData_FunctionPointer") align 8 %65, ptr noundef nonnull align 8 dereferenceable(112) %546, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %599 unwind label %617

599:                                              ; preds = %598
  %600 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %601 unwind label %619

601:                                              ; preds = %599
  br i1 %600, label %602, label %621

602:                                              ; preds = %601
  %603 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %603, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %605 unwind label %619

605:                                              ; preds = %602
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef nonnull @.str.83)
          to label %607 unwind label %619

607:                                              ; preds = %605
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull align 8 dereferenceable(8) %168)
          to label %609 unwind label %619

609:                                              ; preds = %607
  %610 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull @.str.84)
          to label %611 unwind label %619

611:                                              ; preds = %609
  %612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsIN3HIR7TypeRefEERSoS2_RKSt6vectorIT_SaIS4_EE(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull align 8 dereferenceable(24) %169)
          to label %613 unwind label %619

613:                                              ; preds = %611
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %615 unwind label %619

615:                                              ; preds = %613
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %621 unwind label %619

617:                                              ; preds = %598
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %752

619:                                              ; preds = %615, %613, %611, %609, %607, %605, %602, %599
  %620 = landingpad { ptr, i32 }
          cleanup
  br label %751

621:                                              ; preds = %615, %601
  %622 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %167, i64 noundef 0)
  %623 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %622)
  %624 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %623)
  %625 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %624) #9
  %626 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #9
  %.not476 = icmp eq i64 %625, %626
  br i1 %.not476, label %629, label %753

627:                                              ; preds = %.invoke1782, %.invoke1781, %.invoke1780, %.invoke1779, %669, %667, %665, %663, %660, %657, %648, %645, %640, %638, %635, %632, %629
  %628 = landingpad { ptr, i32 }
          cleanup
  br label %751

629:                                              ; preds = %621
  %630 = invoke noundef zeroext i1 @_ZNK8RcStringneEPKc(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull @.str.80)
          to label %631 unwind label %627

631:                                              ; preds = %629
  br i1 %630, label %632, label %642

632:                                              ; preds = %631
  %633 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %634 unwind label %627

634:                                              ; preds = %632
  br i1 %633, label %635, label %753

635:                                              ; preds = %634
  %636 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %637 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %636, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %638 unwind label %627

638:                                              ; preds = %635
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %637, ptr noundef nonnull @.str.85)
          to label %640 unwind label %627

640:                                              ; preds = %638
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %639, ptr noundef nonnull align 8 dereferenceable(8) %170)
          to label %.invoke1782 unwind label %627

642:                                              ; preds = %631
  %643 = load i8, ptr %171, align 8, !tbaa !43, !range !69, !noundef !70
  %644 = trunc nuw i8 %643 to i1
  br i1 %644, label %645, label %657

645:                                              ; preds = %642
  %646 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %647 unwind label %627

647:                                              ; preds = %645
  br i1 %646, label %648, label %753

648:                                              ; preds = %647
  %649 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %649, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %.invoke1782 unwind label %627

.invoke1782:                                      ; preds = %648, %640
  %651 = phi ptr [ %641, %640 ], [ %650, %648 ]
  %652 = phi ptr [ @.str.86, %640 ], [ @.str.87, %648 ]
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %651, ptr noundef nonnull %652)
          to label %.invoke1781 unwind label %627

.invoke1781:                                      ; preds = %.invoke1782
  %654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %.invoke1780 unwind label %627

.invoke1780:                                      ; preds = %.invoke1781
  %655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %654, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke1779 unwind label %627

.invoke1779:                                      ; preds = %.invoke1780
  %656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %753 unwind label %627

657:                                              ; preds = %642
  %658 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %659 unwind label %627

659:                                              ; preds = %657
  br i1 %658, label %660, label %671

660:                                              ; preds = %659
  %661 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %662 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %661, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %663 unwind label %627

663:                                              ; preds = %660
  %664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef nonnull @.str.82)
          to label %665 unwind label %627

665:                                              ; preds = %663
  %666 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %664, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %667 unwind label %627

667:                                              ; preds = %665
  %668 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %669 unwind label %627

669:                                              ; preds = %667
  %670 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %668, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %671 unwind label %627

671:                                              ; preds = %669, %659
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %66) #9
  store i32 0, ptr %66, align 4, !tbaa !40
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %67) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  %672 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #9
  %.not1333 = icmp eq i64 %672, 0
  br i1 %.not1333, label %._crit_edge1300, label %.lr.ph1299

._crit_edge1300:                                  ; preds = %681, %671
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %71) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %694 unwind label %711

.lr.ph1299:                                       ; preds = %671, %681
  %673 = phi i64 [ %684, %681 ], [ 0, %671 ]
  %.04361297 = phi i32 [ %683, %681 ], [ 0, %671 ]
  %674 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %169, i64 noundef %673) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %68, ptr noundef nonnull align 8 dereferenceable(8) %674)
          to label %675 unwind label %687

675:                                              ; preds = %.lr.ph1299
  invoke void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %676 unwind label %689

676:                                              ; preds = %675
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %69) #9
  %677 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %624, i64 noundef %673) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %70) #9
  %678 = load ptr, ptr %124, align 8, !tbaa !6
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %70, ptr noundef nonnull align 8 dereferenceable(49) %678)
          to label %679 unwind label %692

679:                                              ; preds = %676
  %680 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %677, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %681 unwind label %692

681:                                              ; preds = %679
  store i32 %680, ptr %69, align 4, !tbaa !40
  %682 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %66, ptr noundef nonnull align 4 dereferenceable(4) %69)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #9
  %683 = add i32 %.04361297, 1
  %684 = zext i32 %683 to i64
  %685 = call noundef i64 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %169) #9
  %686 = icmp ugt i64 %685, %684
  br i1 %686, label %.lr.ph1299, label %._crit_edge1300, !llvm.loop !72

687:                                              ; preds = %.lr.ph1299
  %688 = landingpad { ptr, i32 }
          cleanup
  br label %691

689:                                              ; preds = %675
  %690 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  br label %691

691:                                              ; preds = %689, %687
  %.pn491 = phi { ptr, i32 } [ %690, %689 ], [ %688, %687 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  br label %750

692:                                              ; preds = %679, %676
  %693 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %70) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %69) #9
  br label %750

694:                                              ; preds = %._crit_edge1300
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  invoke void @_ZN3HIR7TypeRefC2ESt6vectorIS0_SaIS0_EE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull %73)
          to label %695 unwind label %713

695:                                              ; preds = %694
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull %72)
          to label %696 unwind label %715

696:                                              ; preds = %695
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %74) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %75) #9
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %76) #9
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %166)
          to label %697 unwind label %718

697:                                              ; preds = %696
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %78, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %698 unwind label %720

698:                                              ; preds = %697
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull %77, ptr noundef nonnull %78)
          to label %699 unwind label %722

699:                                              ; preds = %698
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %173, ptr noundef nonnull align 8 dereferenceable(8) %168)
          to label %700 unwind label %724

700:                                              ; preds = %699
  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.450") align 8 %75, ptr noundef nonnull align 1 dereferenceable(7) @.str.78, ptr noundef nonnull align 8 dereferenceable(40) %76)
          to label %701 unwind label %726

701:                                              ; preds = %700
  %702 = 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) %74, ptr noundef nonnull align 8 dereferenceable(48) %75)
          to label %703 unwind label %728

703:                                              ; preds = %701
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #9
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %75) #9
  invoke void @_ZNK3HIR13GenericParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericParams") align 8 %80, ptr noundef nonnull align 8 dereferenceable(96) %65)
          to label %704 unwind label %734

704:                                              ; preds = %703
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %81, ptr noundef nonnull align 8 dereferenceable(8) %126)
          to label %705 unwind label %736

705:                                              ; preds = %704
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %82, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %706 unwind label %738

706:                                              ; preds = %705
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %83, ptr noundef nonnull align 8 dereferenceable(48) %74) #9
  invoke void @_ZN7ImplRefC2EN3HIR13GenericParamsENS0_7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEE(ptr noundef nonnull align 8 dereferenceable(184) %79, ptr noundef nonnull %80, ptr noundef nonnull %81, ptr noundef nonnull %82, ptr noundef nonnull %83)
          to label %707 unwind label %740

707:                                              ; preds = %706
  %708 = load i32, ptr %66, align 4, !tbaa !40
  %709 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %79, i32 noundef %708)
          to label %710 unwind label %742

710:                                              ; preds = %707
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %79) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %80) #9
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %74) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #9
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #9
  br label %753

711:                                              ; preds = %._crit_edge1300
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %749

713:                                              ; preds = %694
  %714 = landingpad { ptr, i32 }
          cleanup
  br label %717

715:                                              ; preds = %695
  %716 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  br label %717

717:                                              ; preds = %715, %713
  %.pn477 = phi { ptr, i32 } [ %716, %715 ], [ %714, %713 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #9
  br label %748

718:                                              ; preds = %696
  %719 = landingpad { ptr, i32 }
          cleanup
  br label %733

720:                                              ; preds = %697
  %721 = landingpad { ptr, i32 }
          cleanup
  br label %732

722:                                              ; preds = %698
  %723 = landingpad { ptr, i32 }
          cleanup
  br label %731

724:                                              ; preds = %699
  %725 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  br label %731

726:                                              ; preds = %700
  %727 = landingpad { ptr, i32 }
          cleanup
  br label %730

728:                                              ; preds = %701
  %729 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %75) #9
  br label %730

730:                                              ; preds = %728, %726
  %.pn479 = phi { ptr, i32 } [ %729, %728 ], [ %727, %726 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %76) #9
  br label %731

731:                                              ; preds = %730, %724, %722
  %.pn479.pn = phi { ptr, i32 } [ %.pn479, %730 ], [ %725, %724 ], [ %723, %722 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %78) #9
  br label %732

732:                                              ; preds = %731, %720
  %.pn479.pn.pn = phi { ptr, i32 } [ %.pn479.pn, %731 ], [ %721, %720 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #9
  br label %733

733:                                              ; preds = %732, %718
  %.pn479.pn.pn.pn = phi { ptr, i32 } [ %.pn479.pn.pn, %732 ], [ %719, %718 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %76) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %75) #9
  br label %747

734:                                              ; preds = %703
  %735 = landingpad { ptr, i32 }
          cleanup
  br label %747

736:                                              ; preds = %704
  %737 = landingpad { ptr, i32 }
          cleanup
  br label %746

738:                                              ; preds = %705
  %739 = landingpad { ptr, i32 }
          cleanup
  br label %745

740:                                              ; preds = %706
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %744

742:                                              ; preds = %707
  %743 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %79) #9
  br label %744

744:                                              ; preds = %742, %740
  %.pn484 = phi { ptr, i32 } [ %743, %742 ], [ %741, %740 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %83) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %82) #9
  br label %745

745:                                              ; preds = %744, %738
  %.pn484.pn = phi { ptr, i32 } [ %.pn484, %744 ], [ %739, %738 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br label %746

746:                                              ; preds = %745, %736
  %.pn484.pn.pn = phi { ptr, i32 } [ %.pn484.pn, %745 ], [ %737, %736 ]
  call void @_ZN3HIR13GenericParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(96) %80) #9
  br label %747

747:                                              ; preds = %746, %734, %733
  %.pn484.pn.pn.pn = phi { ptr, i32 } [ %.pn484.pn.pn, %746 ], [ %735, %734 ], [ %.pn479.pn.pn.pn, %733 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %74) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %74) #9
  br label %748

748:                                              ; preds = %747, %717
  %.pn484.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn484.pn.pn.pn, %747 ], [ %.pn477, %717 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #9
  br label %749

749:                                              ; preds = %748, %711
  %.pn484.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn484.pn.pn.pn.pn, %748 ], [ %712, %711 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %71) #9
  br label %750

750:                                              ; preds = %691, %692, %749
  %.pn493.pn = phi { ptr, i32 } [ %.pn484.pn.pn.pn.pn.pn, %749 ], [ %693, %692 ], [ %.pn491, %691 ]
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %66) #9
  br label %751

751:                                              ; preds = %627, %750, %619
  %.pn496.pn = phi { ptr, i32 } [ %620, %619 ], [ %628, %627 ], [ %.pn493.pn, %750 ]
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %65) #9
  br label %752

752:                                              ; preds = %751, %617
  %.pn496.pn.pn = phi { ptr, i32 } [ %.pn496.pn, %751 ], [ %618, %617 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %65) #9
  br label %.loopexit.split-lp627

753:                                              ; preds = %.invoke1779, %710, %621, %634, %647
  %.12 = phi i1 [ %709, %710 ], [ false, %621 ], [ false, %634 ], [ false, %647 ], [ false, %.invoke1779 ]
  call void @_ZN3HIR24TypeData_FunctionPointerD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %65) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %65) #9
  br label %.loopexit1730

.lr.ph1191:                                       ; preds = %.lr.ph1311.critedge
  %754 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %755 = getelementptr inbounds i8, ptr %754, i64 8
  %756 = getelementptr inbounds i8, ptr %754, i64 16
  %757 = getelementptr inbounds i8, ptr %754, i64 144
  %758 = getelementptr inbounds i8, ptr %754, i64 136
  %759 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %755)
          to label %762 unwind label %760

760:                                              ; preds = %.lr.ph1191
  %761 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

762:                                              ; preds = %.lr.ph1191
  br i1 %759, label %763, label %.thread574

763:                                              ; preds = %762
  %764 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %756, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %765 unwind label %.loopexit633

765:                                              ; preds = %763
  %.not461 = icmp eq i32 %764, 2
  br i1 %.not461, label %.thread574, label %766

766:                                              ; preds = %765
  %767 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %768 unwind label %.loopexit.split-lp634

768:                                              ; preds = %766
  br i1 %767, label %769, label %780

769:                                              ; preds = %768
  %770 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %771 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %770, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %772 unwind label %.loopexit.split-lp634

772:                                              ; preds = %769
  %773 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %771, ptr noundef nonnull @.str.88)
          to label %774 unwind label %.loopexit.split-lp634

774:                                              ; preds = %772
  %775 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %773, ptr noundef nonnull align 8 dereferenceable(24) %756)
          to label %776 unwind label %.loopexit.split-lp634

776:                                              ; preds = %774
  %777 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %775, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %778 unwind label %.loopexit.split-lp634

778:                                              ; preds = %776
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %777, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %780 unwind label %.loopexit.split-lp634

.loopexit633:                                     ; preds = %763
  %lpad.loopexit635 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

.loopexit.split-lp634:                            ; preds = %766, %769, %772, %774, %776, %778, %780
  %lpad.loopexit.split-lp636 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

780:                                              ; preds = %778, %768
  %781 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %754) #9
  %782 = getelementptr inbounds i8, ptr %754, i64 40
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %84, ptr noundef %781, ptr noundef nonnull %126, ptr noundef nonnull %756, ptr noundef nonnull %782)
          to label %783 unwind label %.loopexit.split-lp634

783:                                              ; preds = %780
  %784 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %84, i32 noundef %764)
          to label %.thread583 unwind label %785

785:                                              ; preds = %783
  %786 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %84) #9
  br label %.loopexit.split-lp627

.thread583:                                       ; preds = %783
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %84) #9
  br label %.loopexit1730

.thread574:                                       ; preds = %765, %762
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %85) #9
  %787 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %757) #9
  store ptr %787, ptr %85, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %86) #9
  %788 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %757) #9
  store ptr %788, ptr %86, align 8
  %789 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #9
  br i1 %789, label %.lr.ph1184, label %._crit_edge1185

.lr.ph1184:                                       ; preds = %.thread574, %804
  %790 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  %791 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %790)
          to label %792 unwind label %801

792:                                              ; preds = %.lr.ph1184
  br i1 %791, label %793, label %804

793:                                              ; preds = %792
  %794 = getelementptr inbounds i8, ptr %790, i64 8
  %795 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %794, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %796 unwind label %.loopexit

796:                                              ; preds = %793
  %.not464 = icmp eq i32 %795, 2
  br i1 %.not464, label %804, label %797

797:                                              ; preds = %796
  %798 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %754) #9
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %87, ptr noundef %798, ptr noundef nonnull %126, ptr noundef nonnull %794, ptr noundef nonnull @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc)
          to label %799 unwind label %.loopexit.split-lp

799:                                              ; preds = %797
  %800 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %87, i32 noundef %795)
          to label %.thread581 unwind label %802

801:                                              ; preds = %.lr.ph1184
  %lpad.loopexit1683 = landingpad { ptr, i32 }
          cleanup
  br label %807

.loopexit:                                        ; preds = %793
  %lpad.loopexit1686 = landingpad { ptr, i32 }
          cleanup
  br label %807

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

802:                                              ; preds = %799
  %803 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #9
  br label %807

.thread581:                                       ; preds = %799
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  br label %.loopexit1730

804:                                              ; preds = %792, %796
  %805 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %85) #9
  %806 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #9
  br i1 %806, label %.lr.ph1184, label %._crit_edge1185

807:                                              ; preds = %.loopexit, %.loopexit.split-lp, %802, %801
  %.pn465.pn = phi { ptr, i32 } [ %lpad.loopexit1683, %801 ], [ %803, %802 ], [ %lpad.loopexit1686, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  br label %.loopexit.split-lp627

._crit_edge1185:                                  ; preds = %804, %.thread574
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %86) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %85) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %88) #9
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %808 unwind label %819

808:                                              ; preds = %._crit_edge1185
  %809 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %755, ptr noundef nonnull align 8 dereferenceable(8) %88)
          to label %810 unwind label %821

810:                                              ; preds = %808
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #9
  br i1 %809, label %811, label %.thread606

811:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %89) #9
  store i8 0, ptr %89, align 1, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %90) #9
  store i8 0, ptr %90, align 1, !tbaa !73
  %812 = load ptr, ptr %758, align 8, !tbaa !74
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %92) #9
  store ptr %0, ptr %92, align 8, !tbaa !101
  store ptr %1, ptr %157, align 8, !tbaa !33
  store ptr %3, ptr %158, align 8, !tbaa !33
  store ptr %754, ptr %159, align 8, !tbaa !33
  store ptr %126, ptr %160, align 8, !tbaa !33
  store ptr %90, ptr %161, align 8, !tbaa !33
  store ptr %89, ptr %162, align 8, !tbaa !33
  store ptr %5, ptr %163, align 8, !tbaa !33
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %91, ptr noundef nonnull align 8 dereferenceable(64) %92)
          to label %813 unwind label %824

813:                                              ; preds = %811
  %814 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(400) %812, ptr noundef nonnull align 8 dereferenceable(8) %755, ptr noundef nonnull align 8 dereferenceable(24) %756, ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull %91)
          to label %815 unwind label %826

815:                                              ; preds = %813
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %92) #9
  %816 = load i8, ptr %90, align 1, !tbaa !73, !range !69, !noundef !70
  %817 = trunc nuw i8 %816 to i1
  %818 = load i8, ptr %89, align 1, !range !69
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #9
  br i1 %817, label %.loopexit632.split.loop.exit, label %.thread606

819:                                              ; preds = %._crit_edge1185
  %820 = landingpad { ptr, i32 }
          cleanup
  br label %823

821:                                              ; preds = %808
  %822 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #9
  br label %823

823:                                              ; preds = %821, %819
  %.pn468 = phi { ptr, i32 } [ %822, %821 ], [ %820, %819 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %88) #9
  br label %.loopexit.split-lp627

824:                                              ; preds = %811
  %825 = landingpad { ptr, i32 }
          cleanup
  br label %828

826:                                              ; preds = %813
  %827 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #9
  br label %828

828:                                              ; preds = %826, %824
  %.pn470 = phi { ptr, i32 } [ %827, %826 ], [ %825, %824 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %92) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %89) #9
  br label %.loopexit.split-lp627

.loopexit632.split.loop.exit:                     ; preds = %815
  %829 = trunc nuw i8 %818 to i1
  br label %.loopexit1730

.lr.ph1183:                                       ; preds = %.lr.ph1311.critedge
  %830 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %178)
  %831 = getelementptr inbounds i8, ptr %830, i64 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #9
  %832 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %831) #9
  store ptr %832, ptr %93, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %94) #9
  %833 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %831) #9
  store ptr %833, ptr %94, align 8
  %834 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  br i1 %834, label %.lr.ph1181, label %.thread566.loopexit1340

.lr.ph1181:                                       ; preds = %.lr.ph1183, %879
  %835 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  %836 = getelementptr inbounds i8, ptr %835, i64 8
  %837 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %836)
          to label %838 unwind label %857

838:                                              ; preds = %.lr.ph1181
  br i1 %837, label %839, label %.thread587

839:                                              ; preds = %838
  %840 = getelementptr inbounds i8, ptr %835, i64 16
  %841 = invoke noundef i32 @_ZNK15TraitResolution10compare_ppERK4SpanRKN3HIR10PathParamsES6_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %840, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %842 unwind label %.loopexit608

842:                                              ; preds = %839
  %.not455 = icmp eq i32 %841, 2
  br i1 %.not455, label %.thread587, label %843

843:                                              ; preds = %842
  %844 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %845 unwind label %.loopexit.split-lp609

845:                                              ; preds = %843
  br i1 %844, label %846, label %858

846:                                              ; preds = %845
  %847 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %848 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %847, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %849 unwind label %.loopexit.split-lp609

849:                                              ; preds = %846
  %850 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %848, ptr noundef nonnull @.str.88)
          to label %851 unwind label %.loopexit.split-lp609

851:                                              ; preds = %849
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %850, ptr noundef nonnull align 8 dereferenceable(24) %840)
          to label %853 unwind label %.loopexit.split-lp609

853:                                              ; preds = %851
  %854 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %855 unwind label %.loopexit.split-lp609

855:                                              ; preds = %853
  %856 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %854, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %858 unwind label %.loopexit.split-lp609

857:                                              ; preds = %.lr.ph1181
  %lpad.loopexit1666 = landingpad { ptr, i32 }
          cleanup
  br label %882

.loopexit608:                                     ; preds = %839
  %lpad.loopexit1668 = landingpad { ptr, i32 }
          cleanup
  br label %882

.loopexit.split-lp609:                            ; preds = %843, %846, %849, %851, %853, %855, %858
  %lpad.loopexit.split-lp611 = landingpad { ptr, i32 }
          cleanup
  br label %882

858:                                              ; preds = %855, %845
  %859 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %835) #9
  %860 = getelementptr inbounds i8, ptr %835, i64 40
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %95, ptr noundef %859, ptr noundef nonnull %126, ptr noundef nonnull %840, ptr noundef nonnull %860)
          to label %861 unwind label %.loopexit.split-lp609

861:                                              ; preds = %858
  %862 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %95, i32 noundef %841)
          to label %865 unwind label %863

863:                                              ; preds = %861
  %864 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %95) #9
  br label %882

865:                                              ; preds = %861
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %95) #9
  br label %883

.thread587:                                       ; preds = %842, %838
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %96) #9
  store i8 0, ptr %96, align 1, !tbaa !73
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #9
  store i8 0, ptr %97, align 1, !tbaa !73
  %866 = getelementptr inbounds i8, ptr %835, i64 136
  %867 = load ptr, ptr %866, align 8, !tbaa !103
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %99) #9
  store ptr %0, ptr %99, align 8, !tbaa !104
  store ptr %1, ptr %150, align 8, !tbaa !33
  store ptr %3, ptr %151, align 8, !tbaa !33
  store ptr %835, ptr %152, align 8, !tbaa !33
  store ptr %126, ptr %153, align 8, !tbaa !33
  store ptr %97, ptr %154, align 8, !tbaa !33
  store ptr %96, ptr %155, align 8, !tbaa !33
  store ptr %5, ptr %156, align 8, !tbaa !33
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(64) %99)
          to label %868 unwind label %875

868:                                              ; preds = %.thread587
  %869 = getelementptr inbounds i8, ptr %835, i64 16
  %870 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(400) %867, ptr noundef nonnull align 8 dereferenceable(8) %836, ptr noundef nonnull align 8 dereferenceable(24) %869, ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull %98)
          to label %871 unwind label %876

871:                                              ; preds = %868
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %99) #9
  %872 = load i8, ptr %97, align 1, !tbaa !73, !range !69, !noundef !70
  %873 = trunc nuw i8 %872 to i1
  %874 = load i8, ptr %96, align 1, !range !69
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  br i1 %873, label %.thread594.loopexit, label %879

875:                                              ; preds = %.thread587
  %lpad.loopexit1673 = landingpad { ptr, i32 }
          cleanup
  br label %877

876:                                              ; preds = %868
  %lpad.loopexit1678 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #9
  br label %877

877:                                              ; preds = %876, %875
  %.pn458 = phi { ptr, i32 } [ %lpad.loopexit1678, %876 ], [ %lpad.loopexit1673, %875 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %99) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %96) #9
  br label %882

.thread594.loopexit:                              ; preds = %871
  %878 = trunc nuw i8 %874 to i1
  br label %883

879:                                              ; preds = %871
  %880 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  %881 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #9
  br i1 %881, label %.lr.ph1181, label %.thread566.loopexit1340

882:                                              ; preds = %.loopexit608, %.loopexit.split-lp609, %863, %877, %857
  %.pn458.pn = phi { ptr, i32 } [ %.pn458, %877 ], [ %lpad.loopexit1666, %857 ], [ %864, %863 ], [ %lpad.loopexit1668, %.loopexit608 ], [ %lpad.loopexit.split-lp611, %.loopexit.split-lp609 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #9
  br label %.loopexit.split-lp627

883:                                              ; preds = %865, %.thread594.loopexit
  %.34.ph = phi i1 [ %862, %865 ], [ %878, %.thread594.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #9
  br label %.loopexit1730

.split1168.us:                                    ; preds = %.preheader660.split
  %884 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %887 unwind label %885

885:                                              ; preds = %897, %895, %893, %891, %888, %.split1168.us
  %886 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

887:                                              ; preds = %.split1168.us
  br i1 %884, label %888, label %897

888:                                              ; preds = %887
  %889 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !36
  %890 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %889, ptr noundef nonnull @__func__._ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb)
          to label %891 unwind label %885

891:                                              ; preds = %888
  %892 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %890, ptr noundef nonnull @.str.89)
          to label %893 unwind label %885

893:                                              ; preds = %891
  %894 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %892, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %895 unwind label %885

895:                                              ; preds = %893
  %896 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %894, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %897 unwind label %885

897:                                              ; preds = %895, %887
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %100, ptr noundef null, ptr noundef nonnull %126, ptr noundef nonnull @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE11null_params, ptr noundef nonnull @_ZZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE10null_assoc)
          to label %898 unwind label %885

898:                                              ; preds = %897
  %899 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %100, i32 noundef 1)
          to label %._crit_edge1327 unwind label %900

900:                                              ; preds = %898
  %901 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %100) #9
  br label %.loopexit.split-lp627

._crit_edge1327:                                  ; preds = %898
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %100) #9
  br label %.loopexit1730

902:                                              ; preds = %909
  %903 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp627

904:                                              ; preds = %.preheader662.split.split
  %905 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %180)
  br i1 %905, label %917, label %.split

.split:                                           ; preds = %904
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %906 unwind label %910

906:                                              ; preds = %.split
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #9
  store ptr %126, ptr %103, align 8, !tbaa !33
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %102, ptr noundef nonnull align 8 dereferenceable(8) %103) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull %102)
          to label %907 unwind label %912

907:                                              ; preds = %906
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #9
  %908 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %908, ptr noundef nonnull @.str.8)
          to label %909 unwind label %915

909:                                              ; preds = %907
  invoke void @__cxa_throw(ptr nonnull %908, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %942 unwind label %902

910:                                              ; preds = %.split
  %911 = landingpad { ptr, i32 }
          cleanup
  br label %914

912:                                              ; preds = %906
  %913 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %101) #9
  br label %914

914:                                              ; preds = %912, %910
  %.pn = phi { ptr, i32 } [ %913, %912 ], [ %911, %910 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #9
  br label %.loopexit.split-lp627

915:                                              ; preds = %907
  %916 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %908) #9
  br label %.loopexit.split-lp627

917:                                              ; preds = %904
  %918 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %180)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %104) #9
  %919 = getelementptr inbounds i8, ptr %918, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %104, ptr noundef nonnull %918, ptr noundef nonnull %919, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %920 unwind label %.split1095.split

920:                                              ; preds = %917
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %106) #9
  store ptr %104, ptr %106, align 8, !tbaa !33
  store ptr %1, ptr %144, align 8, !tbaa !33
  store ptr %2, ptr %145, align 8, !tbaa !33
  store ptr %0, ptr %146, align 8, !tbaa !106
  store ptr %3, ptr %147, align 8, !tbaa !33
  store ptr %5, ptr %148, align 8, !tbaa !33
  store ptr %126, ptr %149, align 8, !tbaa !33
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(56) %106)
          to label %921 unwind label %.split1097.split

921:                                              ; preds = %920
  %922 = invoke noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(80) %918, ptr noundef nonnull %105)
          to label %923 unwind label %.split1100.split

923:                                              ; preds = %921
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %106) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %104) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %104) #9
  br i1 %922, label %.loopexit1730, label %.thread606

.split1095.split:                                 ; preds = %917
  %924 = landingpad { ptr, i32 }
          cleanup
  br label %928

.split1097.split:                                 ; preds = %920
  %925 = landingpad { ptr, i32 }
          cleanup
  br label %927

.split1100.split:                                 ; preds = %921
  %926 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  br label %927

927:                                              ; preds = %.split1100.split, %.split1097.split
  %.pn449 = phi { ptr, i32 } [ %926, %.split1100.split ], [ %925, %.split1097.split ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %106) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %104) #9
  br label %928

928:                                              ; preds = %927, %.split1095.split
  %.pn449.pn = phi { ptr, i32 } [ %.pn449, %927 ], [ %924, %.split1095.split ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %104) #9
  br label %.loopexit.split-lp627

.thread566.loopexit1340:                          ; preds = %879, %.lr.ph1183
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %94) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #9
  br label %.thread606

.thread606:                                       ; preds = %815, %810, %.preheader660.split, %.thread566.loopexit1340, %.preheader653.split, %.preheader662.split.split, %.lr.ph1311.critedge, %923, %213, %393, %554
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %929 unwind label %140

929:                                              ; preds = %.thread606
  %930 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull %107)
          to label %931 unwind label %932

931:                                              ; preds = %929
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br i1 %930, label %.loopexit1730, label %934

932:                                              ; preds = %929
  %933 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br label %.loopexit.split-lp627

934:                                              ; preds = %931
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %935 unwind label %140

935:                                              ; preds = %934
  %936 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %126, ptr noundef nonnull %108)
          to label %937 unwind label %938

937:                                              ; preds = %935
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %.loopexit1730

938:                                              ; preds = %935
  %939 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  br label %.loopexit.split-lp627

.loopexit1730:                                    ; preds = %923, %.thread583, %.thread581, %.loopexit632.split.loop.exit, %450, %440, %.loopexit619.thread, %423, %243, %.loopexit613.thread, %883, %753, %._crit_edge1327, %931, %135, %937
  %.50 = phi i1 [ %936, %937 ], [ true, %135 ], [ true, %931 ], [ %800, %.thread581 ], [ %829, %.loopexit632.split.loop.exit ], [ %784, %.thread583 ], [ %505, %.loopexit619.thread ], [ false, %423 ], [ false, %440 ], [ false, %450 ], [ %.3, %.loopexit613.thread ], [ false, %243 ], [ %.34.ph, %883 ], [ %.12, %753 ], [ %899, %._crit_edge1327 ], [ true, %923 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #9
  ret i1 %.50

.loopexit.split-lp627:                            ; preds = %.loopexit633, %.loopexit.split-lp634, %.loopexit626, %.loopexit.split-lp627.loopexit.split-lp, %.loopexit.split-lp627.loopexit, %.loopexit643, %.loopexit.split-lp644, %.loopexit620, %.loopexit.split-lp621, %.loopexit614, %.loopexit.split-lp615, %882, %384, %241, %240, %226, %225, %545, %421, %420, %406, %405, %752, %582, %581, %566, %565, %785, %828, %823, %807, %760, %900, %885, %928, %915, %914, %902, %938, %932, %142, %140
  %.pn561 = phi { ptr, i32 } [ %939, %938 ], [ %141, %140 ], [ %933, %932 ], [ %143, %142 ], [ %.pn458.pn, %882 ], [ %227, %226 ], [ %.pn556, %225 ], [ %.pn553.pn, %384 ], [ %242, %241 ], [ %.pn534, %240 ], [ %407, %406 ], [ %.pn529, %405 ], [ %422, %421 ], [ %.pn505, %420 ], [ %.pn524.pn, %545 ], [ %567, %566 ], [ %.pn500, %565 ], [ %.pn496.pn.pn, %752 ], [ %583, %582 ], [ %.pn474, %581 ], [ %.pn470, %828 ], [ %.pn468, %823 ], [ %.pn465.pn, %807 ], [ %761, %760 ], [ %786, %785 ], [ %901, %900 ], [ %886, %885 ], [ %.pn449.pn, %928 ], [ %903, %902 ], [ %916, %915 ], [ %.pn, %914 ], [ %lpad.loopexit.split-lp1709, %.loopexit614 ], [ %lpad.loopexit.split-lp617, %.loopexit.split-lp615 ], [ %lpad.loopexit.split-lp1700, %.loopexit620 ], [ %lpad.loopexit.split-lp623, %.loopexit.split-lp621 ], [ %lpad.loopexit645, %.loopexit643 ], [ %lpad.loopexit.split-lp646, %.loopexit.split-lp644 ], [ %lpad.loopexit.split-lp1691, %.loopexit626 ], [ %lpad.loopexit650, %.loopexit.split-lp627.loopexit ], [ %lpad.loopexit.split-lp651, %.loopexit.split-lp627.loopexit.split-lp ], [ %lpad.loopexit635, %.loopexit633 ], [ %lpad.loopexit.split-lp636, %.loopexit.split-lp634 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  br label %940

940:                                              ; preds = %.loopexit.split-lp627, %138
  %.pn561.pn = phi { ptr, i32 } [ %.pn561, %.loopexit.split-lp627 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #9
  br label %941

941:                                              ; preds = %940, %136
  %.pn561.pn.pn = phi { ptr, i32 } [ %.pn561.pn, %940 ], [ %137, %136 ]
  resume { ptr, i32 } %.pn561.pn.pn

942:                                              ; preds = %909
  unreachable
}

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7CompareE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #3

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 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 #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 #4 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: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #8 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 #2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #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 #8 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280), 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(64)) unnamed_addr #4 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 #8 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #8 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 #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280), 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(8), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!"branch_weights", i32 1, i32 1048575}
!6 = !{!7, !9, i64 224}
!7 = !{!"_ZTS15TraitResolution", !8, i64 0, !9, i64 216, !9, i64 224, !9, i64 232, !9, i64 240, !9, i64 248, !29, i64 256}
!8 = !{!"_ZTS18TraitResolveCommon", !9, i64 0, !9, i64 8, !9, i64 16, !12, i64 24, !21, i64 72, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208}
!9 = !{!"any pointer", !10, i64 0}
!10 = !{!"omnipotent char", !11, i64 0}
!11 = !{!"Simple C++ TBAA"}
!12 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !9, i64 8, !9, i64 16, !9, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !10, i64 0}
!20 = !{!"long", !10, i64 0}
!21 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !22, i64 0, !26, i64 24}
!22 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!26 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!27 = !{!"_ZTSN3HIR10SimplePathE", !28, i64 0}
!28 = !{!"_ZTS10ThinVectorI8RcStringE", !9, i64 0}
!29 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!33 = !{!9, !9, i64 0}
!34 = distinct !{!34, !35}
!35 = !{!"llvm.loop.mustprogress"}
!36 = !{!37, !37, i64 0}
!37 = !{!"int", !10, i64 0}
!38 = !{!39, !9, i64 0}
!39 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !9, i64 0}
!40 = !{!41, !41, i64 0}
!41 = !{!"_ZTSN3HIR7CompareE", !10, i64 0}
!42 = distinct !{!42, !35}
!43 = !{!44, !62, i64 96}
!44 = !{!"_ZTSN3HIR24TypeData_FunctionPointerE", !45, i64 0, !62, i64 96, !62, i64 97, !63, i64 104, !64, i64 112, !65, i64 120}
!45 = !{!"_ZTSN3HIR13GenericParamsE", !46, i64 0, !50, i64 24, !54, i64 48, !58, i64 72}
!46 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!50 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!54 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!58 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!62 = !{!"bool", !10, i64 0}
!63 = !{!"_ZTS8RcString", !9, i64 0}
!64 = !{!"_ZTSN3HIR7TypeRefE", !9, i64 0}
!65 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!69 = !{i8 0, i8 2}
!70 = !{}
!71 = distinct !{!71, !35}
!72 = distinct !{!72, !35}
!73 = !{!62, !62, i64 0}
!74 = !{!75, !9, i64 136}
!75 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !76, i64 0, !96, i64 144, !100, i64 168}
!76 = !{!"_ZTSN3HIR9TraitPathE", !77, i64 0, !83, i64 8, !88, i64 40, !93, i64 88, !9, i64 136}
!77 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !78, i64 0}
!78 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !79, i64 0}
!79 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !81, i64 0}
!81 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !82, i64 0}
!82 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !9, i64 0}
!83 = !{!"_ZTSN3HIR11GenericPathE", !27, i64 0, !84, i64 8}
!84 = !{!"_ZTSN3HIR10PathParamsE", !85, i64 0, !86, i64 8, !87, i64 16}
!85 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !9, i64 0}
!86 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !9, i64 0}
!87 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !9, i64 0}
!88 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !89, i64 0}
!89 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !90, i64 0}
!90 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !91, i64 0, !17, i64 8}
!91 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !92, i64 0}
!92 = !{!"_ZTSSt4lessI8RcStringE"}
!93 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !94, i64 0}
!94 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !95, i64 0}
!95 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !91, i64 0, !17, i64 8}
!96 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !97, i64 0}
!97 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !98, i64 0}
!98 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !99, i64 0}
!99 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !9, i64 0, !9, i64 8, !9, i64 16}
!100 = !{!"_ZTSN3HIR11LifetimeRefE", !37, i64 0}
!101 = !{!102, !9, i64 0}
!102 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE3$_7", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48, !9, i64 56}
!103 = !{!76, !9, i64 136}
!104 = !{!105, !9, i64 0}
!105 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE3$_8", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48, !9, i64 56}
!106 = !{!107, !9, i64 24}
!107 = !{!"_ZTSZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEbE4$_10", !9, i64 0, !9, i64 8, !9, i64 16, !9, i64 24, !9, i64 32, !9, i64 40, !9, i64 48}


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