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

%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%struct.LList = type { ptr, ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.517 = type { ptr }
%class.anon.518 = type { ptr }
%class.anon.519 = type { i8 }
%"class.std::function.521" = type { %"class.std::_Function_base", ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%struct.Span = type { ptr }
%class.anon.524 = type { ptr }
%class.anon.525 = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.528 = type { ptr, ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.529 = type { ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%"struct.HIR::TypePathBinding::Data_Opaque" = type { i8 }
%"struct.std::_Rb_tree_const_iterator.530" = type { ptr }
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.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.anon.533 = type { ptr, ptr, ptr, ptr, ptr }
%"struct.std::_Rb_tree_const_iterator.534" = type { ptr }
%"class.std::function.221" = type { %"class.std::_Function_base", ptr }
%class.anon.537 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.538 = 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.539 = type { ptr, ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.540 = 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.541 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.542 = type { i8 }
%class.anon.544 = type { ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"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.RcString = type { ptr }
%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 }
%"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.HIR::TypeData::Data_Generator" = type { ptr }
%"struct.HIR::ExprNode_Generator" = type { %"class.HIR::ExprNode.base", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.std::unique_ptr.98", i8, i8, %struct.anon, ptr, %"class.HIR::GenericPath", %"class.std::vector.111", %"class.HIR::TypeRef" }
%struct.anon = type { %"class.std::vector.85", %"class.std::vector.452" }
%"class.std::vector.452" = type { %"struct.std::_Vector_base.453" }
%"struct.std::_Vector_base.453" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.60" }
%"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.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.45", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"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 }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%"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.std::pair.165" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"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.std::pair.531" = type { %class.RcString, %"struct.HIR::TraitPath::AtyBound" }
%"struct.HIR::TraitPath::AtyBound" = type { %"class.HIR::GenericPath", %"class.std::vector.50" }
%"struct.std::pair.535" = type { %"class.HIR::TypeRef", %"struct.TraitResolveCommon::CachedEquality" }
%"struct.TraitResolveCommon::CachedEquality" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef" }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.50", i8, %"class.std::unordered_map.385", %"class.std::unordered_map.399", %"class.std::unordered_multimap", %"class.std::unordered_map.426", i32, %"class.std::vector.50", %"struct.HIR::SimplePath" }
%"class.std::unordered_map.385" = type { %"class.std::_Hashtable.386" }
%"class.std::_Hashtable.386" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.399" = type { %"class.std::_Hashtable.400" }
%"class.std::_Hashtable.400" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.413" }
%"class.std::_Hashtable.413" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.426" = type { %"class.std::_Hashtable.427" }
%"class.std::_Hashtable.427" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.50", %"class.HIR::TypeRef" }

@g_debug_indent_level = external global i32, align 4
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.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
@.str.53 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [43 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [134 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: 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) #1

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

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 nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184)) #5 align 2

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: readwrite)
declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #8

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

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

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

declare void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) #3 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4) #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %struct.LList, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.517, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.518, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %struct.LList, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca ptr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.LList, align 8
  %25 = alloca i32, align 4
  %26 = alloca %class.anon.519, align 1
  %27 = alloca i8, align 1
  %28 = alloca %"class.std::function.521", align 8
  %29 = alloca ptr, align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.std::function.521", align 8
  %34 = alloca %"class.HIR::GenericPath", align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.524, align 8
  %38 = alloca i8, align 1
  %39 = alloca ptr, align 8
  %40 = alloca i8, align 1
  %41 = alloca ptr, align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %struct.Span, align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.525, align 8
  %46 = alloca i8, align 1
  %47 = alloca ptr, align 8
  %48 = alloca %"class.HIR::TypeRef", align 8
  %49 = alloca %"class.HIR::TypeRef", align 8
  %50 = alloca %struct.Span, align 8
  %51 = alloca %"class.std::function", align 8
  %52 = alloca %class.anon.526, align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %struct.Span, align 8
  %57 = alloca %"class.std::function", align 8
  %58 = alloca %class.anon.527, align 8
  %59 = alloca i8, align 1
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca i32, align 4
  %63 = alloca i32, align 4
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca i32, align 4
  %67 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %68 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %69 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %70 = alloca ptr, align 8
  %71 = alloca %struct.Span, align 8
  %72 = alloca %"class.std::function", align 8
  %73 = alloca %class.anon.528, align 8
  %74 = alloca %"class.HIR::TypeRef", align 8
  %75 = alloca i8, align 1
  %76 = alloca %"class.std::function.229", align 8
  %77 = alloca %class.anon.529, align 8
  %78 = alloca i8, align 1
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %83 = alloca ptr, align 8
  %84 = alloca ptr, align 8
  %85 = alloca i32, align 4
  %86 = alloca i32, align 4
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca i32, align 4
  %90 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %91 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %92 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::TypePathBinding", align 8
  %95 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %96 = alloca %"struct.std::_Rb_tree_const_iterator.530", align 8
  %97 = alloca %"struct.std::_Rb_tree_const_iterator.530", align 8
  %98 = alloca ptr, align 8
  %99 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %100 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %101 = alloca ptr, align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca %"class.HIR::TraitPath", align 8
  %104 = alloca i8, align 1
  %105 = alloca %"class.std::function.229", align 8
  %106 = alloca %class.anon.533, align 8
  %107 = alloca i8, align 1
  %108 = alloca i8, align 1
  %109 = alloca i32, align 4
  %110 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %111 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %112 = alloca %"class.HIR::TypeRef", align 8
  %113 = alloca %"class.std::function.221", align 8
  %114 = alloca %class.anon.537, align 8
  %115 = alloca %struct.LList, align 8
  %116 = alloca ptr, align 8
  %117 = alloca ptr, align 8
  %118 = alloca ptr, align 8
  %119 = alloca %"class.HIR::GenericPath", align 8
  %120 = alloca %struct.Span, align 8
  %121 = alloca %"class.std::function", align 8
  %122 = alloca %class.anon.538, align 8
  %123 = alloca ptr, align 8
  %124 = alloca ptr, align 8
  %125 = alloca %struct.MonomorphStatePtr, align 8
  %126 = alloca ptr, align 8
  %127 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %128 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %129 = alloca ptr, align 8
  %130 = alloca %"class.HIR::GenericPath", align 8
  %131 = alloca ptr, align 8
  %132 = alloca ptr, align 8
  %133 = alloca ptr, align 8
  %134 = alloca ptr, align 8
  %135 = alloca ptr, align 8
  %136 = alloca %struct.LList, align 8
  %137 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %138 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %139 = alloca %"class.HIR::TypeRef", align 8
  %140 = alloca %"class.HIR::TypeRef", align 8
  %141 = alloca %struct.LList, align 8
  %142 = alloca ptr, align 8
  %143 = alloca i8, align 1
  %144 = alloca %"class.std::function.229", align 8
  %145 = alloca %class.anon.539, align 8
  %146 = alloca %"class.std::function.444", align 8
  %147 = alloca %class.anon.540, align 8
  %148 = alloca i8, align 1
  %149 = alloca i32, align 4
  %150 = alloca i8, align 1
  %151 = alloca i8, align 1
  %152 = alloca %struct.ImplRef, align 8
  %153 = alloca %class.anon.541, align 8
  %154 = alloca %"class.std::function.444", align 8
  %155 = alloca %"class.std::function.444", align 8
  %156 = alloca %"class.HIR::TypePathBinding", align 8
  %157 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %158 = alloca %"class.HIR::TypeRef", align 8
  %159 = alloca %"class.HIR::TypeRef", align 8
  %160 = alloca %"class.HIR::TypePathBinding", align 8
  %161 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %162 = alloca %struct.LList, align 8
  %163 = alloca %"class.HIR::TypePathBinding", align 8
  %164 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %165 = alloca %"class.std::function.521", align 8
  %166 = alloca %class.anon.542, align 1
  %167 = alloca %struct.Span, align 8
  %168 = alloca %"class.std::function", align 8
  %169 = alloca %class.anon.544, align 8
  %170 = alloca ptr, align 8
  %171 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %172 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %173 = alloca ptr, align 8
  %174 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %175 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %176 = alloca %"class.HIR::TypeRef", align 8
  %177 = alloca %struct.LList, align 8
  %178 = alloca %"class.HIR::TypePathBinding", align 8
  %179 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %180 = getelementptr inbounds { ptr, ptr }, ptr %6, i32 0, i32 0
  store ptr %3, ptr %180, align 8
  %181 = getelementptr inbounds { ptr, ptr }, ptr %6, i32 0, i32 1
  store ptr %4, ptr %181, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  %182 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %10) #9
  %183 = call noundef zeroext i1 @_Z13debug_enabledv()
  %184 = zext i1 %183 to i64
  %185 = select i1 %183, ptr @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %186 = getelementptr inbounds %class.anon.517, ptr %12, i32 0, i32 0
  %187 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %187, ptr %186, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %188 = getelementptr inbounds %class.anon.518, ptr %14, i32 0, i32 0
  %189 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %189, ptr %188, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %185, ptr noundef %11, ptr noundef %13)
          to label %190 unwind label %224

190:                                              ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #9
  %191 = load ptr, ptr %9, align 8, !tbaa !5
  %192 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %191)
          to label %193 unwind label %228

193:                                              ; preds = %190
  %194 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %192)
          to label %195 unwind label %228

195:                                              ; preds = %193
  store ptr %194, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %196 = load ptr, ptr %17, align 8, !tbaa !5
  %197 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %196, i32 0, i32 0
  %198 = getelementptr inbounds %"class.HIR::Path", ptr %197, i32 0, i32 0
  %199 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %198)
          to label %200 unwind label %232

200:                                              ; preds = %195
  store ptr %199, ptr %18, align 8, !tbaa !5
  %201 = load ptr, ptr %8, align 8, !tbaa !5
  %202 = load ptr, ptr %18, align 8, !tbaa !5
  %203 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %202, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %19, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %204 = getelementptr inbounds { ptr, ptr }, ptr %19, i32 0, i32 0
  %205 = load ptr, ptr %204, align 8
  %206 = getelementptr inbounds { ptr, ptr }, ptr %19, i32 0, i32 1
  %207 = load ptr, ptr %206, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull align 8 dereferenceable(8) %203, ptr %205, ptr %207)
          to label %208 unwind label %232

208:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %209, i32 0, i32 1
  %211 = getelementptr inbounds %"class.HIR::GenericPath", ptr %210, i32 0, i32 1
  %212 = getelementptr inbounds %"struct.HIR::PathParams", ptr %211, i32 0, i32 1
  store ptr %212, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %213 = load ptr, ptr %20, align 8, !tbaa !5
  %214 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %215 unwind label %236

215:                                              ; preds = %208
  store ptr %214, ptr %21, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #9
  %216 = load ptr, ptr %20, align 8, !tbaa !5
  %217 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %218 unwind label %240

218:                                              ; preds = %215
  store ptr %217, ptr %22, align 8, !tbaa !5
  br label %219

219:                                              ; preds = %253, %218
  %220 = load ptr, ptr %21, align 8, !tbaa !5
  %221 = load ptr, ptr %22, align 8, !tbaa !5
  %222 = icmp ne ptr %220, %221
  br i1 %222, label %244, label %223

223:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %262

224:                                              ; preds = %5
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %15, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  br label %2529

228:                                              ; preds = %193, %190
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %15, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %16, align 4
  br label %2528

232:                                              ; preds = %292, %290, %286, %283, %279, %275, %273, %269, %266, %262, %200, %195
  %233 = landingpad { ptr, i32 }
          cleanup
  %234 = extractvalue { ptr, i32 } %233, 0
  store ptr %234, ptr %15, align 8
  %235 = extractvalue { ptr, i32 } %233, 1
  store i32 %235, ptr %16, align 4
  br label %2527

236:                                              ; preds = %208
  %237 = landingpad { ptr, i32 }
          cleanup
  %238 = extractvalue { ptr, i32 } %237, 0
  store ptr %238, ptr %15, align 8
  %239 = extractvalue { ptr, i32 } %237, 1
  store i32 %239, ptr %16, align 4
  br label %261

240:                                              ; preds = %215
  %241 = landingpad { ptr, i32 }
          cleanup
  %242 = extractvalue { ptr, i32 } %241, 0
  store ptr %242, ptr %15, align 8
  %243 = extractvalue { ptr, i32 } %241, 1
  store i32 %243, ptr %16, align 4
  br label %260

244:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #9
  %245 = load ptr, ptr %21, align 8, !tbaa !5
  store ptr %245, ptr %23, align 8, !tbaa !5
  %246 = load ptr, ptr %8, align 8, !tbaa !5
  %247 = load ptr, ptr %23, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %24, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %248 = getelementptr inbounds { ptr, ptr }, ptr %24, i32 0, i32 0
  %249 = load ptr, ptr %248, align 8
  %250 = getelementptr inbounds { ptr, ptr }, ptr %24, i32 0, i32 1
  %251 = load ptr, ptr %250, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull align 8 dereferenceable(8) %247, ptr %249, ptr %251)
          to label %252 unwind label %256

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

253:                                              ; preds = %252
  %254 = load ptr, ptr %21, align 8, !tbaa !5
  %255 = getelementptr inbounds %"class.HIR::TypeRef", ptr %254, i32 1
  store ptr %255, ptr %21, align 8, !tbaa !5
  br label %219

256:                                              ; preds = %244
  %257 = landingpad { ptr, i32 }
          cleanup
  %258 = extractvalue { ptr, i32 } %257, 0
  store ptr %258, ptr %15, align 8
  %259 = extractvalue { ptr, i32 } %257, 1
  store i32 %259, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #9
  br label %260

260:                                              ; preds = %256, %240
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #9
  br label %261

261:                                              ; preds = %260, %236
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %2527

262:                                              ; preds = %223
  %263 = load ptr, ptr %18, align 8, !tbaa !5
  %264 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %263, i32 0, i32 0
  %265 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %264)
          to label %266 unwind label %232

266:                                              ; preds = %262
  %267 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %265)
          to label %268 unwind label %232

268:                                              ; preds = %266
  br i1 %267, label %269, label %279

269:                                              ; preds = %268
  %270 = load ptr, ptr %18, align 8, !tbaa !5
  %271 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %270, i32 0, i32 0
  %272 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %273 unwind label %232

273:                                              ; preds = %269
  %274 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %272)
          to label %275 unwind label %232

275:                                              ; preds = %273
  %276 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %274)
          to label %277 unwind label %232

277:                                              ; preds = %275
  br i1 %276, label %279, label %278

278:                                              ; preds = %277
  store i32 1, ptr %25, align 4
  br label %2519

279:                                              ; preds = %277, %268
  %280 = load ptr, ptr %18, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %280, i32 0, i32 0
  %282 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %281)
          to label %283 unwind label %232

283:                                              ; preds = %279
  %284 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %282)
          to label %285 unwind label %232

285:                                              ; preds = %283
  br i1 %284, label %286, label %296

286:                                              ; preds = %285
  %287 = load ptr, ptr %18, align 8, !tbaa !5
  %288 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %287, i32 0, i32 0
  %289 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %288)
          to label %290 unwind label %232

290:                                              ; preds = %286
  %291 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %289)
          to label %292 unwind label %232

292:                                              ; preds = %290
  %293 = invoke noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %291)
          to label %294 unwind label %232

294:                                              ; preds = %292
  br i1 %293, label %295, label %296

295:                                              ; preds = %294
  store i32 1, ptr %25, align 4
  br label %2519

296:                                              ; preds = %294, %285
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #9
  store i8 0, ptr %27, align 1, !tbaa !10
  %297 = load ptr, ptr %18, align 8, !tbaa !5
  %298 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %297, i32 0, i32 0
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  %299 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %298, ptr noundef %28)
          to label %300 unwind label %303

300:                                              ; preds = %296
  %301 = xor i1 %299, true
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br i1 %301, label %302, label %307

302:                                              ; preds = %300
  store i8 1, ptr %27, align 1, !tbaa !10
  br label %307

303:                                              ; preds = %296
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %15, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #9
  br label %403

307:                                              ; preds = %302, %300
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %308 = load ptr, ptr %18, align 8, !tbaa !5
  %309 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %308, i32 0, i32 1
  %310 = getelementptr inbounds %"class.HIR::GenericPath", ptr %309, i32 0, i32 1
  %311 = getelementptr inbounds %"struct.HIR::PathParams", ptr %310, i32 0, i32 1
  store ptr %311, ptr %29, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %312 = load ptr, ptr %29, align 8, !tbaa !5
  %313 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %312)
          to label %314 unwind label %323

314:                                              ; preds = %307
  store ptr %313, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %315 = load ptr, ptr %29, align 8, !tbaa !5
  %316 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %315)
          to label %317 unwind label %327

317:                                              ; preds = %314
  store ptr %316, ptr %31, align 8, !tbaa !5
  br label %318

318:                                              ; preds = %343, %317
  %319 = load ptr, ptr %30, align 8, !tbaa !5
  %320 = load ptr, ptr %31, align 8, !tbaa !5
  %321 = icmp ne ptr %319, %320
  br i1 %321, label %331, label %322

322:                                              ; preds = %318
  store i32 4, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %348

323:                                              ; preds = %307
  %324 = landingpad { ptr, i32 }
          cleanup
  %325 = extractvalue { ptr, i32 } %324, 0
  store ptr %325, ptr %15, align 8
  %326 = extractvalue { ptr, i32 } %324, 1
  store i32 %326, ptr %16, align 4
  br label %347

327:                                              ; preds = %314
  %328 = landingpad { ptr, i32 }
          cleanup
  %329 = extractvalue { ptr, i32 } %328, 0
  store ptr %329, ptr %15, align 8
  %330 = extractvalue { ptr, i32 } %328, 1
  store i32 %330, ptr %16, align 4
  br label %346

331:                                              ; preds = %318
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #9
  %332 = load ptr, ptr %30, align 8, !tbaa !5
  store ptr %332, ptr %32, align 8, !tbaa !5
  %333 = load ptr, ptr %32, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 1 dereferenceable(1) %26) #9
  %334 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %333, ptr noundef %33)
          to label %335 unwind label %338

335:                                              ; preds = %331
  %336 = xor i1 %334, true
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br i1 %336, label %337, label %342

337:                                              ; preds = %335
  store i8 1, ptr %27, align 1, !tbaa !10
  br label %342

338:                                              ; preds = %331
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %15, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %346

342:                                              ; preds = %337, %335
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #9
  br label %343

343:                                              ; preds = %342
  %344 = load ptr, ptr %30, align 8, !tbaa !5
  %345 = getelementptr inbounds %"class.HIR::TypeRef", ptr %344, i32 1
  store ptr %345, ptr %30, align 8, !tbaa !5
  br label %318

346:                                              ; preds = %338, %327
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  br label %347

347:                                              ; preds = %346, %323
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  br label %403

348:                                              ; preds = %322
  %349 = load i8, ptr %27, align 1, !tbaa !10, !range !12, !noundef !13
  %350 = trunc i8 %349 to i1
  br i1 %350, label %351, label %372

351:                                              ; preds = %348
  br label %352

352:                                              ; preds = %351
  %353 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %354 unwind label %365

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

355:                                              ; preds = %354
  %356 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %357 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %356, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %358 unwind label %365

358:                                              ; preds = %355
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef @.str.93)
          to label %360 unwind label %365

360:                                              ; preds = %358
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef @_ZSt3decRSt8ios_base)
          to label %362 unwind label %365

362:                                              ; preds = %360
  %363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %361, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %364 unwind label %365

364:                                              ; preds = %362
  br label %369

365:                                              ; preds = %362, %360, %358, %355, %352
  %366 = landingpad { ptr, i32 }
          cleanup
  %367 = extractvalue { ptr, i32 } %366, 0
  store ptr %367, ptr %15, align 8
  %368 = extractvalue { ptr, i32 } %366, 1
  store i32 %368, ptr %16, align 4
  br label %403

369:                                              ; preds = %364, %354
  br label %370

370:                                              ; preds = %369
  br label %371

371:                                              ; preds = %370
  store i32 1, ptr %25, align 4
  br label %373

372:                                              ; preds = %348
  store i32 0, ptr %25, align 4
  br label %373

373:                                              ; preds = %372, %371
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  %374 = load i32, ptr %25, align 4
  switch i32 %374, label %2519 [
    i32 0, label %375
  ]

375:                                              ; preds = %373
  call void @llvm.lifetime.start.p0(i64 32, ptr %34) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %376 unwind label %404

376:                                              ; preds = %375
  %377 = load ptr, ptr %8, align 8, !tbaa !5
  %378 = load ptr, ptr %18, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %378, i32 0, i32 1
  %380 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 0
  %381 = load ptr, ptr %380, align 8, !tbaa !16
  %382 = load ptr, ptr %8, align 8, !tbaa !5
  %383 = load ptr, ptr %18, align 8, !tbaa !5
  %384 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %383, i32 0, i32 1
  %385 = getelementptr inbounds %"class.HIR::GenericPath", ptr %384, i32 0, i32 0
  %386 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %381, ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull align 8 dereferenceable(8) %385)
          to label %387 unwind label %408

387:                                              ; preds = %376
  %388 = load ptr, ptr %18, align 8, !tbaa !5
  %389 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %388, i32 0, i32 2
  %390 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %389)
          to label %391 unwind label %408

391:                                              ; preds = %387
  %392 = invoke noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull align 8 dereferenceable(32) %379, ptr noundef nonnull align 8 dereferenceable(400) %386, ptr noundef %390, ptr noundef nonnull align 8 dereferenceable(32) %34)
          to label %393 unwind label %408

393:                                              ; preds = %391
  br i1 %392, label %427, label %394

394:                                              ; preds = %393
  br label %395

395:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #9
  %396 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %396)
          to label %397 unwind label %412

397:                                              ; preds = %395
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #9
  %398 = getelementptr inbounds %class.anon.524, ptr %37, i32 0, i32 0
  %399 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %399, ptr %398, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef %36)
          to label %400 unwind label %416

400:                                              ; preds = %397
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  %401 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %401, ptr noundef @.str.8)
          to label %402 unwind label %421

402:                                              ; preds = %400
  invoke void @__cxa_throw(ptr %401, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %408

403:                                              ; preds = %365, %347, %303
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %2527

404:                                              ; preds = %375
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %15, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %16, align 4
  br label %2526

408:                                              ; preds = %402, %391, %387, %376
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %15, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %16, align 4
  br label %2525

412:                                              ; preds = %395
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %15, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %16, align 4
  br label %420

416:                                              ; preds = %397
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %15, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %420

420:                                              ; preds = %416, %412
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #9
  br label %2525

421:                                              ; preds = %400
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %15, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %16, align 4
  call void @__cxa_free_exception(ptr %401) #9
  br label %2525

425:                                              ; No predecessors!
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426, %393
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #9
  store i8 1, ptr %38, align 1, !tbaa !10
  br label %428

428:                                              ; preds = %1322, %427
  %429 = load i8, ptr %38, align 1, !tbaa !10, !range !12, !noundef !13
  %430 = trunc i8 %429 to i1
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  store i32 10, ptr %25, align 4
  br label %1323

432:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  %433 = load ptr, ptr %18, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %433, i32 0, i32 0
  %435 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %436 unwind label %441

436:                                              ; preds = %432
  store ptr %435, ptr %39, align 8, !tbaa !5
  br label %437

437:                                              ; preds = %1317, %436
  %438 = load i8, ptr %38, align 1, !tbaa !10, !range !12, !noundef !13
  %439 = trunc i8 %438 to i1
  br i1 %439, label %445, label %440

440:                                              ; preds = %437
  store i32 13, ptr %25, align 4
  br label %1318

441:                                              ; preds = %445, %432
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %15, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %16, align 4
  br label %1320

445:                                              ; preds = %437
  %446 = load ptr, ptr %39, align 8, !tbaa !5
  %447 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %446)
          to label %448 unwind label %441

448:                                              ; preds = %445
  switch i32 %447, label %450 [
    i32 0, label %449
    i32 15, label %451
    i32 16, label %548
    i32 14, label %655
    i32 6, label %761
    i32 7, label %1006
  ]

449:                                              ; preds = %448
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 2333, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #11
  unreachable

450:                                              ; preds = %448
  br label %1316

451:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #9
  store i8 1, ptr %40, align 1, !tbaa !10
  br label %452

452:                                              ; preds = %544, %451
  %453 = load i8, ptr %40, align 1, !tbaa !10, !range !12, !noundef !13
  %454 = trunc i8 %453 to i1
  br i1 %454, label %456, label %455

455:                                              ; preds = %452
  store i32 17, ptr %25, align 4
  br label %545

456:                                              ; preds = %452
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #9
  %457 = load ptr, ptr %39, align 8, !tbaa !5
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %457)
          to label %459 unwind label %465

459:                                              ; preds = %456
  store ptr %458, ptr %41, align 8, !tbaa !5
  br label %460

460:                                              ; preds = %539, %459
  %461 = load ptr, ptr %41, align 8, !tbaa !5
  %462 = load i8, ptr %40, align 1, !tbaa !10, !range !12, !noundef !13
  %463 = trunc i8 %462 to i1
  br i1 %463, label %469, label %464

464:                                              ; preds = %460
  store i32 20, ptr %25, align 4
  br label %540

465:                                              ; preds = %521, %490, %483, %476, %469, %456
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %15, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %16, align 4
  br label %542

469:                                              ; preds = %460
  %470 = load ptr, ptr %18, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %470, i32 0, i32 1
  %472 = getelementptr inbounds %"class.HIR::GenericPath", ptr %471, i32 0, i32 0
  %473 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 10
  %474 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %473)
          to label %475 unwind label %465

475:                                              ; preds = %469
  br i1 %474, label %490, label %476

476:                                              ; preds = %475
  %477 = load ptr, ptr %18, align 8, !tbaa !5
  %478 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %477, i32 0, i32 1
  %479 = getelementptr inbounds %"class.HIR::GenericPath", ptr %478, i32 0, i32 0
  %480 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 11
  %481 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %479, ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %482 unwind label %465

482:                                              ; preds = %476
  br i1 %481, label %490, label %483

483:                                              ; preds = %482
  %484 = load ptr, ptr %18, align 8, !tbaa !5
  %485 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %484, i32 0, i32 1
  %486 = getelementptr inbounds %"class.HIR::GenericPath", ptr %485, i32 0, i32 0
  %487 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 12
  %488 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %486, ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %489 unwind label %465

489:                                              ; preds = %483
  br i1 %488, label %490, label %538

490:                                              ; preds = %489, %482, %475
  %491 = load ptr, ptr %18, align 8, !tbaa !5
  %492 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %491, i32 0, i32 2
  %493 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %492, ptr noundef @.str.78)
          to label %494 unwind label %465

494:                                              ; preds = %490
  br i1 %493, label %495, label %513

495:                                              ; preds = %494
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #9
  %496 = load ptr, ptr %41, align 8, !tbaa !5
  %497 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %496, i32 0, i32 0
  %498 = load ptr, ptr %497, align 8, !tbaa !35
  %499 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %498, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(8) %499)
          to label %500 unwind label %504

500:                                              ; preds = %495
  %501 = load ptr, ptr %9, align 8, !tbaa !5
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %503 unwind label %508

503:                                              ; preds = %500
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  store i32 1, ptr %25, align 4
  br label %540

504:                                              ; preds = %495
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %15, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %16, align 4
  br label %512

508:                                              ; preds = %500
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %15, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %512

512:                                              ; preds = %508, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #9
  br label %542

513:                                              ; preds = %494
  br label %514

514:                                              ; preds = %513
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %515 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %515)
          to label %516 unwind label %522

516:                                              ; preds = %514
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %517 = getelementptr inbounds %class.anon.525, ptr %45, i32 0, i32 0
  %518 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %518, ptr %517, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %43, i32 noundef 0, ptr noundef %44)
          to label %519 unwind label %526

519:                                              ; preds = %516
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  %520 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %520, ptr noundef @.str.53)
          to label %521 unwind label %531

521:                                              ; preds = %519
  invoke void @__cxa_throw(ptr %520, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %465

522:                                              ; preds = %514
  %523 = landingpad { ptr, i32 }
          cleanup
  %524 = extractvalue { ptr, i32 } %523, 0
  store ptr %524, ptr %15, align 8
  %525 = extractvalue { ptr, i32 } %523, 1
  store i32 %525, ptr %16, align 4
  br label %530

526:                                              ; preds = %516
  %527 = landingpad { ptr, i32 }
          cleanup
  %528 = extractvalue { ptr, i32 } %527, 0
  store ptr %528, ptr %15, align 8
  %529 = extractvalue { ptr, i32 } %527, 1
  store i32 %529, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  br label %530

530:                                              ; preds = %526, %522
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %542

531:                                              ; preds = %519
  %532 = landingpad { ptr, i32 }
          cleanup
  %533 = extractvalue { ptr, i32 } %532, 0
  store ptr %533, ptr %15, align 8
  %534 = extractvalue { ptr, i32 } %532, 1
  store i32 %534, ptr %16, align 4
  call void @__cxa_free_exception(ptr %520) #9
  br label %542

535:                                              ; No predecessors!
  br label %536

536:                                              ; preds = %535
  br label %537

537:                                              ; preds = %536
  br label %538

538:                                              ; preds = %537, %489
  br label %539

539:                                              ; preds = %538
  store i8 0, ptr %40, align 1, !tbaa !10
  br label %460, !llvm.loop !37

540:                                              ; preds = %503, %464
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  %541 = load i32, ptr %25, align 4
  switch i32 %541, label %545 [
    i32 20, label %543
  ]

542:                                              ; preds = %531, %530, %512, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  br label %1320

543:                                              ; preds = %540
  br label %544

544:                                              ; preds = %543
  store i8 0, ptr %40, align 1, !tbaa !10
  br label %452, !llvm.loop !39

545:                                              ; preds = %540, %455
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #9
  %546 = load i32, ptr %25, align 4
  switch i32 %546, label %1318 [
    i32 17, label %547
  ]

547:                                              ; preds = %545
  br label %1316

548:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %46) #9
  store i8 1, ptr %46, align 1, !tbaa !10
  br label %549

549:                                              ; preds = %651, %548
  %550 = load i8, ptr %46, align 1, !tbaa !10, !range !12, !noundef !13
  %551 = trunc i8 %550 to i1
  br i1 %551, label %553, label %552

552:                                              ; preds = %549
  store i32 25, ptr %25, align 4
  br label %652

553:                                              ; preds = %549
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  %554 = load ptr, ptr %39, align 8, !tbaa !5
  %555 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %554)
          to label %556 unwind label %562

556:                                              ; preds = %553
  store ptr %555, ptr %47, align 8, !tbaa !5
  br label %557

557:                                              ; preds = %646, %556
  %558 = load ptr, ptr %47, align 8, !tbaa !5
  %559 = load i8, ptr %46, align 1, !tbaa !10, !range !12, !noundef !13
  %560 = trunc i8 %559 to i1
  br i1 %560, label %566, label %561

561:                                              ; preds = %557
  store i32 28, ptr %25, align 4
  br label %647

562:                                              ; preds = %627, %596, %573, %566, %553
  %563 = landingpad { ptr, i32 }
          cleanup
  %564 = extractvalue { ptr, i32 } %563, 0
  store ptr %564, ptr %15, align 8
  %565 = extractvalue { ptr, i32 } %563, 1
  store i32 %565, ptr %16, align 4
  br label %649

566:                                              ; preds = %557
  %567 = load ptr, ptr %18, align 8, !tbaa !5
  %568 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %567, i32 0, i32 1
  %569 = getelementptr inbounds %"class.HIR::GenericPath", ptr %568, i32 0, i32 0
  %570 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 15
  %571 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %569, ptr noundef nonnull align 8 dereferenceable(8) %570)
          to label %572 unwind label %562

572:                                              ; preds = %566
  br i1 %571, label %573, label %645

573:                                              ; preds = %572
  %574 = load ptr, ptr %18, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %574, i32 0, i32 2
  %576 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %575, ptr noundef @.str.64)
          to label %577 unwind label %562

577:                                              ; preds = %573
  br i1 %576, label %578, label %596

578:                                              ; preds = %577
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #9
  %579 = load ptr, ptr %47, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %579, i32 0, i32 0
  %581 = load ptr, ptr %580, align 8, !tbaa !40
  %582 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %581, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %48, ptr noundef nonnull align 8 dereferenceable(8) %582)
          to label %583 unwind label %587

583:                                              ; preds = %578
  %584 = load ptr, ptr %9, align 8, !tbaa !5
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %584, ptr noundef nonnull align 8 dereferenceable(8) %48)
          to label %586 unwind label %591

586:                                              ; preds = %583
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  store i32 1, ptr %25, align 4
  br label %647

587:                                              ; preds = %578
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %15, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %16, align 4
  br label %595

591:                                              ; preds = %583
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %15, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %595

595:                                              ; preds = %591, %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #9
  br label %649

596:                                              ; preds = %577
  %597 = load ptr, ptr %18, align 8, !tbaa !5
  %598 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %597, i32 0, i32 2
  %599 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef @.str.63)
          to label %600 unwind label %562

600:                                              ; preds = %596
  br i1 %599, label %601, label %619

601:                                              ; preds = %600
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #9
  %602 = load ptr, ptr %47, align 8, !tbaa !5
  %603 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %602, i32 0, i32 0
  %604 = load ptr, ptr %603, align 8, !tbaa !40
  %605 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %604, i32 0, i32 3
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %49, ptr noundef nonnull align 8 dereferenceable(8) %605)
          to label %606 unwind label %610

606:                                              ; preds = %601
  %607 = load ptr, ptr %9, align 8, !tbaa !5
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %609 unwind label %614

609:                                              ; preds = %606
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  store i32 1, ptr %25, align 4
  br label %647

610:                                              ; preds = %601
  %611 = landingpad { ptr, i32 }
          cleanup
  %612 = extractvalue { ptr, i32 } %611, 0
  store ptr %612, ptr %15, align 8
  %613 = extractvalue { ptr, i32 } %611, 1
  store i32 %613, ptr %16, align 4
  br label %618

614:                                              ; preds = %606
  %615 = landingpad { ptr, i32 }
          cleanup
  %616 = extractvalue { ptr, i32 } %615, 0
  store ptr %616, ptr %15, align 8
  %617 = extractvalue { ptr, i32 } %615, 1
  store i32 %617, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  br label %618

618:                                              ; preds = %614, %610
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #9
  br label %649

619:                                              ; preds = %600
  br label %620

620:                                              ; preds = %619
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #9
  %621 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %622 unwind label %628

622:                                              ; preds = %620
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #9
  %623 = getelementptr inbounds %class.anon.526, ptr %52, i32 0, i32 0
  %624 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %624, ptr %623, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %50, i32 noundef 0, ptr noundef %51)
          to label %625 unwind label %632

625:                                              ; preds = %622
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  %626 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %626, ptr noundef @.str.53)
          to label %627 unwind label %637

627:                                              ; preds = %625
  invoke void @__cxa_throw(ptr %626, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %562

628:                                              ; preds = %620
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %15, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %16, align 4
  br label %636

632:                                              ; preds = %622
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %15, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #9
  br label %636

636:                                              ; preds = %632, %628
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #9
  br label %649

637:                                              ; preds = %625
  %638 = landingpad { ptr, i32 }
          cleanup
  %639 = extractvalue { ptr, i32 } %638, 0
  store ptr %639, ptr %15, align 8
  %640 = extractvalue { ptr, i32 } %638, 1
  store i32 %640, ptr %16, align 4
  call void @__cxa_free_exception(ptr %626) #9
  br label %649

641:                                              ; No predecessors!
  br label %642

642:                                              ; preds = %641
  br label %643

643:                                              ; preds = %642
  br label %644

644:                                              ; preds = %643
  br label %645

645:                                              ; preds = %644, %572
  br label %646

646:                                              ; preds = %645
  store i8 0, ptr %46, align 1, !tbaa !10
  br label %557, !llvm.loop !42

647:                                              ; preds = %609, %586, %561
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  %648 = load i32, ptr %25, align 4
  switch i32 %648, label %652 [
    i32 28, label %650
  ]

649:                                              ; preds = %637, %636, %618, %595, %562
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  br label %1320

650:                                              ; preds = %647
  br label %651

651:                                              ; preds = %650
  store i8 0, ptr %46, align 1, !tbaa !10
  br label %549, !llvm.loop !43

652:                                              ; preds = %647, %552
  call void @llvm.lifetime.end.p0(i64 1, ptr %46) #9
  %653 = load i32, ptr %25, align 4
  switch i32 %653, label %1318 [
    i32 25, label %654
  ]

654:                                              ; preds = %652
  br label %1316

655:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #9
  store i8 1, ptr %53, align 1, !tbaa !10
  br label %656

656:                                              ; preds = %757, %655
  %657 = load i8, ptr %53, align 1, !tbaa !10, !range !12, !noundef !13
  %658 = trunc i8 %657 to i1
  br i1 %658, label %660, label %659

659:                                              ; preds = %656
  store i32 33, ptr %25, align 4
  br label %758

660:                                              ; preds = %656
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %661 = load ptr, ptr %39, align 8, !tbaa !5
  %662 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %661)
          to label %663 unwind label %669

663:                                              ; preds = %660
  store ptr %662, ptr %54, align 8, !tbaa !5
  br label %664

664:                                              ; preds = %752, %663
  %665 = load ptr, ptr %54, align 8, !tbaa !5
  %666 = load i8, ptr %53, align 1, !tbaa !10, !range !12, !noundef !13
  %667 = trunc i8 %666 to i1
  br i1 %667, label %673, label %668

668:                                              ; preds = %664
  store i32 36, ptr %25, align 4
  br label %753

669:                                              ; preds = %733, %704, %697, %690, %683, %673, %660
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %15, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %16, align 4
  br label %755

673:                                              ; preds = %664
  %674 = load ptr, ptr %54, align 8, !tbaa !5
  %675 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %674, i32 0, i32 3
  %676 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef @.str.80)
          to label %677 unwind label %669

677:                                              ; preds = %673
  br i1 %676, label %678, label %751

678:                                              ; preds = %677
  %679 = load ptr, ptr %54, align 8, !tbaa !5
  %680 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %679, i32 0, i32 1
  %681 = load i8, ptr %680, align 8, !tbaa !44, !range !12, !noundef !13
  %682 = trunc i8 %681 to i1
  br i1 %682, label %751, label %683

683:                                              ; preds = %678
  %684 = load ptr, ptr %18, align 8, !tbaa !5
  %685 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %684, i32 0, i32 1
  %686 = getelementptr inbounds %"class.HIR::GenericPath", ptr %685, i32 0, i32 0
  %687 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 10
  %688 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %686, ptr noundef nonnull align 8 dereferenceable(8) %687)
          to label %689 unwind label %669

689:                                              ; preds = %683
  br i1 %688, label %704, label %690

690:                                              ; preds = %689
  %691 = load ptr, ptr %18, align 8, !tbaa !5
  %692 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %691, i32 0, i32 1
  %693 = getelementptr inbounds %"class.HIR::GenericPath", ptr %692, i32 0, i32 0
  %694 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 11
  %695 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %693, ptr noundef nonnull align 8 dereferenceable(8) %694)
          to label %696 unwind label %669

696:                                              ; preds = %690
  br i1 %695, label %704, label %697

697:                                              ; preds = %696
  %698 = load ptr, ptr %18, align 8, !tbaa !5
  %699 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %698, i32 0, i32 1
  %700 = getelementptr inbounds %"class.HIR::GenericPath", ptr %699, i32 0, i32 0
  %701 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 12
  %702 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef nonnull align 8 dereferenceable(8) %701)
          to label %703 unwind label %669

703:                                              ; preds = %697
  br i1 %702, label %704, label %750

704:                                              ; preds = %703, %696, %689
  %705 = load ptr, ptr %18, align 8, !tbaa !5
  %706 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %705, i32 0, i32 2
  %707 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %706, ptr noundef @.str.78)
          to label %708 unwind label %669

708:                                              ; preds = %704
  br i1 %707, label %709, label %725

709:                                              ; preds = %708
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %710 = load ptr, ptr %54, align 8, !tbaa !5
  %711 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %710, i32 0, i32 4
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %55, ptr noundef nonnull align 8 dereferenceable(8) %711)
          to label %712 unwind label %716

712:                                              ; preds = %709
  %713 = load ptr, ptr %9, align 8, !tbaa !5
  %714 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %713, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %715 unwind label %720

715:                                              ; preds = %712
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  store i32 1, ptr %25, align 4
  br label %753

716:                                              ; preds = %709
  %717 = landingpad { ptr, i32 }
          cleanup
  %718 = extractvalue { ptr, i32 } %717, 0
  store ptr %718, ptr %15, align 8
  %719 = extractvalue { ptr, i32 } %717, 1
  store i32 %719, ptr %16, align 4
  br label %724

720:                                              ; preds = %712
  %721 = landingpad { ptr, i32 }
          cleanup
  %722 = extractvalue { ptr, i32 } %721, 0
  store ptr %722, ptr %15, align 8
  %723 = extractvalue { ptr, i32 } %721, 1
  store i32 %723, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  br label %724

724:                                              ; preds = %720, %716
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %755

725:                                              ; preds = %708
  br label %726

726:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #9
  %727 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %727)
          to label %728 unwind label %734

728:                                              ; preds = %726
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #9
  %729 = getelementptr inbounds %class.anon.527, ptr %58, i32 0, i32 0
  %730 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %730, ptr %729, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %56, i32 noundef 0, ptr noundef %57)
          to label %731 unwind label %738

731:                                              ; preds = %728
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  %732 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %732, ptr noundef @.str.53)
          to label %733 unwind label %743

733:                                              ; preds = %731
  invoke void @__cxa_throw(ptr %732, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %669

734:                                              ; preds = %726
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %15, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %16, align 4
  br label %742

738:                                              ; preds = %728
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %15, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %742

742:                                              ; preds = %738, %734
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #9
  br label %755

743:                                              ; preds = %731
  %744 = landingpad { ptr, i32 }
          cleanup
  %745 = extractvalue { ptr, i32 } %744, 0
  store ptr %745, ptr %15, align 8
  %746 = extractvalue { ptr, i32 } %744, 1
  store i32 %746, ptr %16, align 4
  call void @__cxa_free_exception(ptr %732) #9
  br label %755

747:                                              ; No predecessors!
  br label %748

748:                                              ; preds = %747
  br label %749

749:                                              ; preds = %748
  br label %750

750:                                              ; preds = %749, %703
  br label %751

751:                                              ; preds = %750, %678, %677
  br label %752

752:                                              ; preds = %751
  store i8 0, ptr %53, align 1, !tbaa !10
  br label %664, !llvm.loop !69

753:                                              ; preds = %715, %668
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  %754 = load i32, ptr %25, align 4
  switch i32 %754, label %758 [
    i32 36, label %756
  ]

755:                                              ; preds = %743, %742, %724, %669
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  br label %1320

756:                                              ; preds = %753
  br label %757

757:                                              ; preds = %756
  store i8 0, ptr %53, align 1, !tbaa !10
  br label %656, !llvm.loop !70

758:                                              ; preds = %753, %659
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  %759 = load i32, ptr %25, align 4
  switch i32 %759, label %1318 [
    i32 33, label %760
  ]

760:                                              ; preds = %758
  br label %1316

761:                                              ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #9
  store i8 1, ptr %59, align 1, !tbaa !10
  br label %762

762:                                              ; preds = %1002, %761
  %763 = load i8, ptr %59, align 1, !tbaa !10, !range !12, !noundef !13
  %764 = trunc i8 %763 to i1
  br i1 %764, label %766, label %765

765:                                              ; preds = %762
  store i32 41, ptr %25, align 4
  br label %1003

766:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #9
  %767 = load ptr, ptr %39, align 8, !tbaa !5
  %768 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %767)
          to label %769 unwind label %775

769:                                              ; preds = %766
  store ptr %768, ptr %60, align 8, !tbaa !5
  br label %770

770:                                              ; preds = %996, %769
  %771 = load ptr, ptr %60, align 8, !tbaa !5
  %772 = load i8, ptr %59, align 1, !tbaa !10, !range !12, !noundef !13
  %773 = trunc i8 %772 to i1
  br i1 %773, label %779, label %774

774:                                              ; preds = %770
  store i32 44, ptr %25, align 4
  br label %998

775:                                              ; preds = %766
  %776 = landingpad { ptr, i32 }
          cleanup
  %777 = extractvalue { ptr, i32 } %776, 0
  store ptr %777, ptr %15, align 8
  %778 = extractvalue { ptr, i32 } %776, 1
  store i32 %778, ptr %16, align 4
  br label %1000

779:                                              ; preds = %770
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %780 = load ptr, ptr %60, align 8, !tbaa !5
  %781 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %780, i32 0, i32 0
  %782 = getelementptr inbounds %"class.HIR::TraitPath", ptr %781, i32 0, i32 1
  store ptr %782, ptr %61, align 8, !tbaa !5
  %783 = load ptr, ptr %18, align 8, !tbaa !5
  %784 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %783, i32 0, i32 1
  %785 = getelementptr inbounds %"class.HIR::GenericPath", ptr %784, i32 0, i32 0
  %786 = load ptr, ptr %61, align 8, !tbaa !5
  %787 = getelementptr inbounds %"class.HIR::GenericPath", ptr %786, i32 0, i32 0
  %788 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %785, ptr noundef nonnull align 8 dereferenceable(8) %787)
          to label %789 unwind label %804

789:                                              ; preds = %779
  br i1 %788, label %790, label %948

790:                                              ; preds = %789
  call void @llvm.lifetime.start.p0(i64 4, ptr %62) #9
  store i32 0, ptr %62, align 4, !tbaa !71
  %791 = load ptr, ptr %18, align 8, !tbaa !5
  %792 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %791, i32 0, i32 1
  %793 = getelementptr inbounds %"class.HIR::GenericPath", ptr %792, i32 0, i32 1
  %794 = getelementptr inbounds %"struct.HIR::PathParams", ptr %793, i32 0, i32 1
  %795 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %794)
          to label %796 unwind label %808

796:                                              ; preds = %790
  %797 = load ptr, ptr %61, align 8, !tbaa !5
  %798 = getelementptr inbounds %"class.HIR::GenericPath", ptr %797, i32 0, i32 1
  %799 = getelementptr inbounds %"struct.HIR::PathParams", ptr %798, i32 0, i32 1
  %800 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %799)
          to label %801 unwind label %808

801:                                              ; preds = %796
  %802 = icmp ne i64 %795, %800
  br i1 %802, label %803, label %812

803:                                              ; preds = %801
  store i32 2, ptr %62, align 4, !tbaa !71
  br label %873

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

808:                                              ; preds = %796, %790
  %809 = landingpad { ptr, i32 }
          cleanup
  %810 = extractvalue { ptr, i32 } %809, 0
  store ptr %810, ptr %15, align 8
  %811 = extractvalue { ptr, i32 } %809, 1
  store i32 %811, ptr %16, align 4
  br label %947

812:                                              ; preds = %801
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #9
  store i32 0, ptr %63, align 4, !tbaa !14
  br label %813

813:                                              ; preds = %854, %812
  %814 = load i32, ptr %63, align 4, !tbaa !14
  %815 = zext i32 %814 to i64
  %816 = load ptr, ptr %18, align 8, !tbaa !5
  %817 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %816, i32 0, i32 1
  %818 = getelementptr inbounds %"class.HIR::GenericPath", ptr %817, i32 0, i32 1
  %819 = getelementptr inbounds %"struct.HIR::PathParams", ptr %818, i32 0, i32 1
  %820 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %819)
          to label %821 unwind label %824

821:                                              ; preds = %813
  %822 = icmp ult i64 %815, %820
  br i1 %822, label %828, label %823

823:                                              ; preds = %821
  store i32 47, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %872

824:                                              ; preds = %813
  %825 = landingpad { ptr, i32 }
          cleanup
  %826 = extractvalue { ptr, i32 } %825, 0
  store ptr %826, ptr %15, align 8
  %827 = extractvalue { ptr, i32 } %825, 1
  store i32 %827, ptr %16, align 4
  br label %871

828:                                              ; preds = %821
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %829 = load ptr, ptr %18, align 8, !tbaa !5
  %830 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %829, i32 0, i32 1
  %831 = getelementptr inbounds %"class.HIR::GenericPath", ptr %830, i32 0, i32 1
  %832 = getelementptr inbounds %"struct.HIR::PathParams", ptr %831, i32 0, i32 1
  %833 = load i32, ptr %63, align 4, !tbaa !14
  %834 = zext i32 %833 to i64
  %835 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %832, i64 noundef %834)
          to label %836 unwind label %857

836:                                              ; preds = %828
  store ptr %835, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %837 = load ptr, ptr %61, align 8, !tbaa !5
  %838 = getelementptr inbounds %"class.HIR::GenericPath", ptr %837, i32 0, i32 1
  %839 = getelementptr inbounds %"struct.HIR::PathParams", ptr %838, i32 0, i32 1
  %840 = load i32, ptr %63, align 4, !tbaa !14
  %841 = zext i32 %840 to i64
  %842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %839, i64 noundef %841)
          to label %843 unwind label %861

843:                                              ; preds = %836
  store ptr %842, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #9
  %844 = load ptr, ptr %64, align 8, !tbaa !5
  %845 = load ptr, ptr %8, align 8, !tbaa !5
  %846 = load ptr, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %67) #9
  %847 = getelementptr inbounds %class.TraitResolution, ptr %182, i32 0, i32 2
  %848 = load ptr, ptr %847, align 8, !tbaa !73
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %67, ptr noundef nonnull align 8 dereferenceable(49) %848)
          to label %849 unwind label %865

849:                                              ; preds = %843
  %850 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %844, ptr noundef nonnull align 8 dereferenceable(8) %845, ptr noundef nonnull align 8 dereferenceable(8) %846, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %851 unwind label %865

851:                                              ; preds = %849
  store i32 %850, ptr %66, align 4, !tbaa !71
  %852 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %62, ptr noundef nonnull align 4 dereferenceable(4) %66)
          to label %853 unwind label %865

853:                                              ; preds = %851
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %854

854:                                              ; preds = %853
  %855 = load i32, ptr %63, align 4, !tbaa !14
  %856 = add i32 %855, 1
  store i32 %856, ptr %63, align 4, !tbaa !14
  br label %813, !llvm.loop !79

857:                                              ; preds = %828
  %858 = landingpad { ptr, i32 }
          cleanup
  %859 = extractvalue { ptr, i32 } %858, 0
  store ptr %859, ptr %15, align 8
  %860 = extractvalue { ptr, i32 } %858, 1
  store i32 %860, ptr %16, align 4
  br label %870

861:                                              ; preds = %836
  %862 = landingpad { ptr, i32 }
          cleanup
  %863 = extractvalue { ptr, i32 } %862, 0
  store ptr %863, ptr %15, align 8
  %864 = extractvalue { ptr, i32 } %862, 1
  store i32 %864, ptr %16, align 4
  br label %869

865:                                              ; preds = %851, %849, %843
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %15, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #9
  br label %869

869:                                              ; preds = %865, %861
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  br label %870

870:                                              ; preds = %869, %857
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  br label %871

871:                                              ; preds = %870, %824
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #9
  br label %947

872:                                              ; preds = %823
  br label %873

873:                                              ; preds = %872, %803
  %874 = load i32, ptr %62, align 4, !tbaa !71
  %875 = icmp ne i32 %874, 2
  br i1 %875, label %876, label %943

876:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #9
  %877 = load ptr, ptr %60, align 8, !tbaa !5
  %878 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %877, i32 0, i32 0
  %879 = getelementptr inbounds %"class.HIR::TraitPath", ptr %878, i32 0, i32 2
  %880 = load ptr, ptr %18, align 8, !tbaa !5
  %881 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %880, i32 0, i32 2
  %882 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %879, ptr noundef nonnull align 8 dereferenceable(8) %881)
          to label %883 unwind label %901

883:                                              ; preds = %876
  %884 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %68, i32 0, i32 0
  store ptr %882, ptr %884, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %885 = load ptr, ptr %60, align 8, !tbaa !5
  %886 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %885, i32 0, i32 0
  %887 = getelementptr inbounds %"class.HIR::TraitPath", ptr %886, i32 0, i32 2
  %888 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %887) #9
  %889 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %69, i32 0, i32 0
  store ptr %888, ptr %889, align 8
  %890 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br i1 %890, label %891, label %925

891:                                              ; preds = %883
  br label %892

892:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  store ptr @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %893 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %893)
          to label %894 unwind label %905

894:                                              ; preds = %892
  call void @llvm.lifetime.start.p0(i64 16, ptr %73) #9
  %895 = getelementptr inbounds %class.anon.528, ptr %73, i32 0, i32 0
  store ptr %70, ptr %895, align 8, !tbaa !5
  %896 = getelementptr inbounds %class.anon.528, ptr %73, i32 0, i32 1
  %897 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %897, ptr %896, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef %72)
          to label %898 unwind label %909

898:                                              ; preds = %894
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  %899 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %899, ptr noundef @.str.70)
          to label %900 unwind label %914

900:                                              ; preds = %898
  invoke void @__cxa_throw(ptr %899, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %918

901:                                              ; preds = %876
  %902 = landingpad { ptr, i32 }
          cleanup
  %903 = extractvalue { ptr, i32 } %902, 0
  store ptr %903, ptr %15, align 8
  %904 = extractvalue { ptr, i32 } %902, 1
  store i32 %904, ptr %16, align 4
  br label %942

905:                                              ; preds = %892
  %906 = landingpad { ptr, i32 }
          cleanup
  %907 = extractvalue { ptr, i32 } %906, 0
  store ptr %907, ptr %15, align 8
  %908 = extractvalue { ptr, i32 } %906, 1
  store i32 %908, ptr %16, align 4
  br label %913

909:                                              ; preds = %894
  %910 = landingpad { ptr, i32 }
          cleanup
  %911 = extractvalue { ptr, i32 } %910, 0
  store ptr %911, ptr %15, align 8
  %912 = extractvalue { ptr, i32 } %910, 1
  store i32 %912, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %73) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %913

913:                                              ; preds = %909, %905
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %922

914:                                              ; preds = %898
  %915 = landingpad { ptr, i32 }
          cleanup
  %916 = extractvalue { ptr, i32 } %915, 0
  store ptr %916, ptr %15, align 8
  %917 = extractvalue { ptr, i32 } %915, 1
  store i32 %917, ptr %16, align 4
  call void @__cxa_free_exception(ptr %899) #9
  br label %922

918:                                              ; preds = %900
  %919 = landingpad { ptr, i32 }
          cleanup
  %920 = extractvalue { ptr, i32 } %919, 0
  store ptr %920, ptr %15, align 8
  %921 = extractvalue { ptr, i32 } %919, 1
  store i32 %921, ptr %16, align 4
  br label %922

922:                                              ; preds = %918, %914, %913
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  br label %942

923:                                              ; No predecessors!
  br label %924

924:                                              ; preds = %923
  br label %925

925:                                              ; preds = %924, %883
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %926 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  %927 = getelementptr inbounds %"struct.std::pair.165", ptr %926, i32 0, i32 1
  %928 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %927, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %74, ptr noundef nonnull align 8 dereferenceable(8) %928)
          to label %929 unwind label %933

929:                                              ; preds = %925
  %930 = load ptr, ptr %9, align 8, !tbaa !5
  %931 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %930, ptr noundef nonnull align 8 dereferenceable(8) %74)
          to label %932 unwind label %937

932:                                              ; preds = %929
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  store i32 1, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %944

933:                                              ; preds = %925
  %934 = landingpad { ptr, i32 }
          cleanup
  %935 = extractvalue { ptr, i32 } %934, 0
  store ptr %935, ptr %15, align 8
  %936 = extractvalue { ptr, i32 } %934, 1
  store i32 %936, ptr %16, align 4
  br label %941

937:                                              ; preds = %929
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %15, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #9
  br label %941

941:                                              ; preds = %937, %933
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %942

942:                                              ; preds = %941, %922, %901
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #9
  br label %947

943:                                              ; preds = %873
  store i32 0, ptr %25, align 4
  br label %944

944:                                              ; preds = %943, %932
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  %945 = load i32, ptr %25, align 4
  switch i32 %945, label %993 [
    i32 0, label %946
  ]

946:                                              ; preds = %944
  br label %948

947:                                              ; preds = %942, %871, %808
  call void @llvm.lifetime.end.p0(i64 4, ptr %62) #9
  br label %997

948:                                              ; preds = %946, %789
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #9
  %949 = load ptr, ptr %8, align 8, !tbaa !5
  %950 = load ptr, ptr %18, align 8, !tbaa !5
  %951 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %950, i32 0, i32 1
  %952 = getelementptr inbounds %"class.HIR::GenericPath", ptr %951, i32 0, i32 0
  %953 = load ptr, ptr %18, align 8, !tbaa !5
  %954 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %953, i32 0, i32 1
  %955 = getelementptr inbounds %"class.HIR::GenericPath", ptr %954, i32 0, i32 1
  %956 = load ptr, ptr %60, align 8, !tbaa !5
  %957 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %956, i32 0, i32 0
  %958 = getelementptr inbounds %"class.HIR::TraitPath", ptr %957, i32 0, i32 4
  %959 = load ptr, ptr %958, align 8, !tbaa !80
  %960 = load ptr, ptr %61, align 8, !tbaa !5
  %961 = getelementptr inbounds %"class.HIR::GenericPath", ptr %960, i32 0, i32 0
  %962 = load ptr, ptr %61, align 8, !tbaa !5
  %963 = getelementptr inbounds %"class.HIR::GenericPath", ptr %962, i32 0, i32 1
  %964 = load ptr, ptr %18, align 8, !tbaa !5
  %965 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %964, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 40, ptr %77) #9
  %966 = getelementptr inbounds %class.anon.529, ptr %77, i32 0, i32 0
  store ptr %182, ptr %966, align 8, !tbaa !107
  %967 = getelementptr inbounds %class.anon.529, ptr %77, i32 0, i32 1
  %968 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %968, ptr %967, align 8, !tbaa !5
  %969 = getelementptr inbounds %class.anon.529, ptr %77, i32 0, i32 2
  %970 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %970, ptr %969, align 8, !tbaa !5
  %971 = getelementptr inbounds %class.anon.529, ptr %77, i32 0, i32 3
  %972 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %972, ptr %971, align 8, !tbaa !5
  %973 = getelementptr inbounds %class.anon.529, ptr %77, i32 0, i32 4
  %974 = load ptr, ptr %60, align 8, !tbaa !5
  store ptr %974, ptr %973, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(40) %77)
          to label %975 unwind label %982

975:                                              ; preds = %948
  %976 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %949, ptr noundef nonnull align 8 dereferenceable(8) %952, ptr noundef nonnull align 8 dereferenceable(24) %955, ptr noundef nonnull align 8 dereferenceable(400) %959, ptr noundef nonnull align 8 dereferenceable(8) %961, ptr noundef nonnull align 8 dereferenceable(24) %963, ptr noundef nonnull align 8 dereferenceable(8) %965, ptr noundef %76)
          to label %977 unwind label %986

977:                                              ; preds = %975
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %77) #9
  %978 = zext i1 %976 to i8
  store i8 %978, ptr %75, align 1, !tbaa !10
  %979 = load i8, ptr %75, align 1, !tbaa !10, !range !12, !noundef !13
  %980 = trunc i8 %979 to i1
  br i1 %980, label %981, label %991

981:                                              ; preds = %977
  store i32 1, ptr %25, align 4
  br label %992

982:                                              ; preds = %948
  %983 = landingpad { ptr, i32 }
          cleanup
  %984 = extractvalue { ptr, i32 } %983, 0
  store ptr %984, ptr %15, align 8
  %985 = extractvalue { ptr, i32 } %983, 1
  store i32 %985, ptr %16, align 4
  br label %990

986:                                              ; preds = %975
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %15, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  br label %990

990:                                              ; preds = %986, %982
  call void @llvm.lifetime.end.p0(i64 40, ptr %77) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  br label %997

991:                                              ; preds = %977
  store i32 0, ptr %25, align 4
  br label %992

992:                                              ; preds = %991, %981
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #9
  br label %993

993:                                              ; preds = %992, %944
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  %994 = load i32, ptr %25, align 4
  switch i32 %994, label %998 [
    i32 0, label %995
  ]

995:                                              ; preds = %993
  br label %996

996:                                              ; preds = %995
  store i8 0, ptr %59, align 1, !tbaa !10
  br label %770, !llvm.loop !109

997:                                              ; preds = %990, %947, %804
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %1000

998:                                              ; preds = %993, %774
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  %999 = load i32, ptr %25, align 4
  switch i32 %999, label %1003 [
    i32 44, label %1001
  ]

1000:                                             ; preds = %997, %775
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #9
  br label %1320

1001:                                             ; preds = %998
  br label %1002

1002:                                             ; preds = %1001
  store i8 0, ptr %59, align 1, !tbaa !10
  br label %762, !llvm.loop !110

1003:                                             ; preds = %998, %765
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #9
  %1004 = load i32, ptr %25, align 4
  switch i32 %1004, label %1318 [
    i32 41, label %1005
  ]

1005:                                             ; preds = %1003
  br label %1316

1006:                                             ; preds = %448
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #9
  store i8 1, ptr %78, align 1, !tbaa !10
  br label %1007

1007:                                             ; preds = %1312, %1006
  %1008 = load i8, ptr %78, align 1, !tbaa !10, !range !12, !noundef !13
  %1009 = trunc i8 %1008 to i1
  br i1 %1009, label %1011, label %1010

1010:                                             ; preds = %1007
  store i32 52, ptr %25, align 4
  br label %1313

1011:                                             ; preds = %1007
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %1012 = load ptr, ptr %39, align 8, !tbaa !5
  %1013 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %1012)
          to label %1014 unwind label %1020

1014:                                             ; preds = %1011
  store ptr %1013, ptr %79, align 8, !tbaa !5
  br label %1015

1015:                                             ; preds = %1307, %1014
  %1016 = load ptr, ptr %79, align 8, !tbaa !5
  %1017 = load i8, ptr %78, align 1, !tbaa !10, !range !12, !noundef !13
  %1018 = trunc i8 %1017 to i1
  br i1 %1018, label %1024, label %1019

1019:                                             ; preds = %1015
  store i32 55, ptr %25, align 4
  br label %1308

1020:                                             ; preds = %1035, %1033, %1031, %1028, %1025, %1011
  %1021 = landingpad { ptr, i32 }
          cleanup
  %1022 = extractvalue { ptr, i32 } %1021, 0
  store ptr %1022, ptr %15, align 8
  %1023 = extractvalue { ptr, i32 } %1021, 1
  store i32 %1023, ptr %16, align 4
  br label %1310

1024:                                             ; preds = %1015
  br label %1025

1025:                                             ; preds = %1024
  %1026 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1027 unwind label %1020

1027:                                             ; preds = %1025
  br i1 %1026, label %1028, label %1038

1028:                                             ; preds = %1027
  %1029 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1030 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1029, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1031 unwind label %1020

1031:                                             ; preds = %1028
  %1032 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1030, ptr noundef @.str.94)
          to label %1033 unwind label %1020

1033:                                             ; preds = %1031
  %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 %1020

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 %1020

1037:                                             ; preds = %1035
  br label %1038

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

1039:                                             ; preds = %1038
  br label %1040

1040:                                             ; preds = %1039
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %1041 = load ptr, ptr %79, align 8, !tbaa !5
  %1042 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %1041, i32 0, i32 1
  store ptr %1042, ptr %80, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %1043 = load ptr, ptr %80, align 8, !tbaa !5
  %1044 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1043) #9
  %1045 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %81, i32 0, i32 0
  store ptr %1044, ptr %1045, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #9
  %1046 = load ptr, ptr %80, align 8, !tbaa !5
  %1047 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1046) #9
  %1048 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %82, i32 0, i32 0
  store ptr %1047, ptr %1048, align 8
  br label %1049

1049:                                             ; preds = %1301, %1040
  %1050 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #9
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1049
  store i32 60, ptr %25, align 4
  br label %1304

1052:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #9
  %1053 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  store ptr %1053, ptr %83, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %1054 = load ptr, ptr %83, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1054, i32 0, i32 1
  store ptr %1055, ptr %84, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  %1057 = load ptr, ptr %84, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1057, i32 0, i32 0
  %1059 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef nonnull align 8 dereferenceable(8) %1058)
          to label %1060 unwind label %1073

1060:                                             ; preds = %1052
  br i1 %1059, label %1061, label %1255

1061:                                             ; preds = %1060
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #9
  store i32 0, ptr %85, align 4, !tbaa !71
  %1062 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1063 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1062, i32 0, i32 1
  %1064 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1063)
          to label %1065 unwind label %1077

1065:                                             ; preds = %1061
  %1066 = load ptr, ptr %84, align 8, !tbaa !5
  %1067 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1066, i32 0, i32 1
  %1068 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1067, i32 0, i32 1
  %1069 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1068)
          to label %1070 unwind label %1077

1070:                                             ; preds = %1065
  %1071 = icmp ne i64 %1064, %1069
  br i1 %1071, label %1072, label %1081

1072:                                             ; preds = %1070
  store i32 2, ptr %85, align 4, !tbaa !71
  br label %1138

1073:                                             ; preds = %1052
  %1074 = landingpad { ptr, i32 }
          cleanup
  %1075 = extractvalue { ptr, i32 } %1074, 0
  store ptr %1075, ptr %15, align 8
  %1076 = extractvalue { ptr, i32 } %1074, 1
  store i32 %1076, ptr %16, align 4
  br label %1303

1077:                                             ; preds = %1065, %1061
  %1078 = landingpad { ptr, i32 }
          cleanup
  %1079 = extractvalue { ptr, i32 } %1078, 0
  store ptr %1079, ptr %15, align 8
  %1080 = extractvalue { ptr, i32 } %1078, 1
  store i32 %1080, ptr %16, align 4
  br label %1254

1081:                                             ; preds = %1070
  call void @llvm.lifetime.start.p0(i64 4, ptr %86) #9
  store i32 0, ptr %86, align 4, !tbaa !14
  br label %1082

1082:                                             ; preds = %1119, %1081
  %1083 = load i32, ptr %86, align 4, !tbaa !14
  %1084 = zext i32 %1083 to i64
  %1085 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1086 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1085, i32 0, i32 1
  %1087 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1086)
          to label %1088 unwind label %1091

1088:                                             ; preds = %1082
  %1089 = icmp ult i64 %1084, %1087
  br i1 %1089, label %1095, label %1090

1090:                                             ; preds = %1088
  store i32 62, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #9
  br label %1137

1091:                                             ; preds = %1082
  %1092 = landingpad { ptr, i32 }
          cleanup
  %1093 = extractvalue { ptr, i32 } %1092, 0
  store ptr %1093, ptr %15, align 8
  %1094 = extractvalue { ptr, i32 } %1092, 1
  store i32 %1094, ptr %16, align 4
  br label %1136

1095:                                             ; preds = %1088
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %1096 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1097 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1096, i32 0, i32 1
  %1098 = load i32, ptr %86, align 4, !tbaa !14
  %1099 = zext i32 %1098 to i64
  %1100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1097, i64 noundef %1099)
          to label %1101 unwind label %1122

1101:                                             ; preds = %1095
  store ptr %1100, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #9
  %1102 = load ptr, ptr %84, align 8, !tbaa !5
  %1103 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1102, i32 0, i32 1
  %1104 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1103, i32 0, i32 1
  %1105 = load i32, ptr %86, align 4, !tbaa !14
  %1106 = zext i32 %1105 to i64
  %1107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1104, i64 noundef %1106)
          to label %1108 unwind label %1126

1108:                                             ; preds = %1101
  store ptr %1107, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %89) #9
  %1109 = load ptr, ptr %87, align 8, !tbaa !5
  %1110 = load ptr, ptr %8, align 8, !tbaa !5
  %1111 = load ptr, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %90) #9
  %1112 = getelementptr inbounds %class.TraitResolution, ptr %182, i32 0, i32 2
  %1113 = load ptr, ptr %1112, align 8, !tbaa !73
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %90, ptr noundef nonnull align 8 dereferenceable(49) %1113)
          to label %1114 unwind label %1130

1114:                                             ; preds = %1108
  %1115 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1109, ptr noundef nonnull align 8 dereferenceable(8) %1110, ptr noundef nonnull align 8 dereferenceable(8) %1111, ptr noundef nonnull align 8 dereferenceable(8) %90)
          to label %1116 unwind label %1130

1116:                                             ; preds = %1114
  store i32 %1115, ptr %89, align 4, !tbaa !71
  %1117 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %85, ptr noundef nonnull align 4 dereferenceable(4) %89)
          to label %1118 unwind label %1130

1118:                                             ; preds = %1116
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %1119

1119:                                             ; preds = %1118
  %1120 = load i32, ptr %86, align 4, !tbaa !14
  %1121 = add i32 %1120, 1
  store i32 %1121, ptr %86, align 4, !tbaa !14
  br label %1082, !llvm.loop !111

1122:                                             ; preds = %1095
  %1123 = landingpad { ptr, i32 }
          cleanup
  %1124 = extractvalue { ptr, i32 } %1123, 0
  store ptr %1124, ptr %15, align 8
  %1125 = extractvalue { ptr, i32 } %1123, 1
  store i32 %1125, ptr %16, align 4
  br label %1135

1126:                                             ; preds = %1101
  %1127 = landingpad { ptr, i32 }
          cleanup
  %1128 = extractvalue { ptr, i32 } %1127, 0
  store ptr %1128, ptr %15, align 8
  %1129 = extractvalue { ptr, i32 } %1127, 1
  store i32 %1129, ptr %16, align 4
  br label %1134

1130:                                             ; preds = %1116, %1114, %1108
  %1131 = landingpad { ptr, i32 }
          cleanup
  %1132 = extractvalue { ptr, i32 } %1131, 0
  store ptr %1132, ptr %15, align 8
  %1133 = extractvalue { ptr, i32 } %1131, 1
  store i32 %1133, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %89) #9
  br label %1134

1134:                                             ; preds = %1130, %1126
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #9
  br label %1135

1135:                                             ; preds = %1134, %1122
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %1136

1136:                                             ; preds = %1135, %1091
  call void @llvm.lifetime.end.p0(i64 4, ptr %86) #9
  br label %1254

1137:                                             ; preds = %1090
  br label %1138

1138:                                             ; preds = %1137, %1072
  %1139 = load i32, ptr %85, align 4, !tbaa !71
  %1140 = icmp ne i32 %1139, 2
  br i1 %1140, label %1141, label %1250

1141:                                             ; preds = %1138
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #9
  %1142 = load ptr, ptr %83, align 8, !tbaa !5
  %1143 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1142, i32 0, i32 2
  %1144 = load ptr, ptr %18, align 8, !tbaa !5
  %1145 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1144, i32 0, i32 2
  %1146 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1143, ptr noundef nonnull align 8 dereferenceable(8) %1145)
          to label %1147 unwind label %1162

1147:                                             ; preds = %1141
  %1148 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %91, i32 0, i32 0
  store ptr %1146, ptr %1148, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %1149 = load ptr, ptr %83, align 8, !tbaa !5
  %1150 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1149, i32 0, i32 2
  %1151 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1150) #9
  %1152 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %92, i32 0, i32 0
  store ptr %1151, ptr %1152, align 8
  %1153 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br i1 %1153, label %1154, label %1175

1154:                                             ; preds = %1147
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #9
  %1155 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #9
  %1156 = getelementptr inbounds %"struct.std::pair.165", ptr %1155, i32 0, i32 1
  %1157 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1156, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %93, ptr noundef nonnull align 8 dereferenceable(8) %1157)
          to label %1158 unwind label %1166

1158:                                             ; preds = %1154
  %1159 = load ptr, ptr %9, align 8, !tbaa !5
  %1160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1159, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %1161 unwind label %1170

1161:                                             ; preds = %1158
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  store i32 1, ptr %25, align 4
  br label %1176

1162:                                             ; preds = %1141
  %1163 = landingpad { ptr, i32 }
          cleanup
  %1164 = extractvalue { ptr, i32 } %1163, 0
  store ptr %1164, ptr %15, align 8
  %1165 = extractvalue { ptr, i32 } %1163, 1
  store i32 %1165, ptr %16, align 4
  br label %1209

1166:                                             ; preds = %1154
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %15, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %16, align 4
  br label %1174

1170:                                             ; preds = %1158
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %15, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #9
  br label %1174

1174:                                             ; preds = %1170, %1166
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #9
  br label %1209

1175:                                             ; preds = %1147
  store i32 0, ptr %25, align 4
  br label %1176

1176:                                             ; preds = %1175, %1161
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  %1177 = load i32, ptr %25, align 4
  switch i32 %1177, label %1251 [
    i32 0, label %1178
  ]

1178:                                             ; preds = %1176
  call void @llvm.lifetime.start.p0(i64 16, ptr %94) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %94)
          to label %1179 unwind label %1210

1179:                                             ; preds = %1178
  %1180 = load ptr, ptr %17, align 8, !tbaa !5
  %1181 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1180, i32 0, i32 1
  %1182 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %1181, ptr noundef nonnull align 8 dereferenceable(16) %94)
          to label %1183 unwind label %1214

1183:                                             ; preds = %1179
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #9
  %1184 = load ptr, ptr %83, align 8, !tbaa !5
  %1185 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1184, i32 0, i32 3
  %1186 = load ptr, ptr %18, align 8, !tbaa !5
  %1187 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1186, i32 0, i32 2
  %1188 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1185, ptr noundef nonnull align 8 dereferenceable(8) %1187)
          to label %1189 unwind label %1219

1189:                                             ; preds = %1183
  %1190 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.530", ptr %96, i32 0, i32 0
  store ptr %1188, ptr %1190, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %1191 = load ptr, ptr %83, align 8, !tbaa !5
  %1192 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1191, i32 0, i32 3
  %1193 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1192) #9
  %1194 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.530", ptr %97, i32 0, i32 0
  store ptr %1193, ptr %1194, align 8
  %1195 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  br i1 %1195, label %1196, label %1248

1196:                                             ; preds = %1189
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %1197 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #9
  %1198 = getelementptr inbounds %"struct.std::pair.531", ptr %1197, i32 0, i32 1
  %1199 = getelementptr inbounds %"struct.HIR::TraitPath::AtyBound", ptr %1198, i32 0, i32 1
  store ptr %1199, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %1200 = load ptr, ptr %98, align 8, !tbaa !5
  %1201 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1200) #9
  %1202 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %99, i32 0, i32 0
  store ptr %1201, ptr %1202, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #9
  %1203 = load ptr, ptr %98, align 8, !tbaa !5
  %1204 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1203) #9
  %1205 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %100, i32 0, i32 0
  store ptr %1204, ptr %1205, align 8
  br label %1206

1206:                                             ; preds = %1231, %1196
  %1207 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull align 8 dereferenceable(8) %100) #9
  br i1 %1207, label %1223, label %1208

1208:                                             ; preds = %1206
  store i32 65, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1247

1209:                                             ; preds = %1174, %1162
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #9
  br label %1254

1210:                                             ; preds = %1178
  %1211 = landingpad { ptr, i32 }
          cleanup
  %1212 = extractvalue { ptr, i32 } %1211, 0
  store ptr %1212, ptr %15, align 8
  %1213 = extractvalue { ptr, i32 } %1211, 1
  store i32 %1213, ptr %16, align 4
  br label %1218

1214:                                             ; preds = %1179
  %1215 = landingpad { ptr, i32 }
          cleanup
  %1216 = extractvalue { ptr, i32 } %1215, 0
  store ptr %1216, ptr %15, align 8
  %1217 = extractvalue { ptr, i32 } %1215, 1
  store i32 %1217, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #9
  br label %1218

1218:                                             ; preds = %1214, %1210
  call void @llvm.lifetime.end.p0(i64 16, ptr %94) #9
  br label %1254

1219:                                             ; preds = %1183
  %1220 = landingpad { ptr, i32 }
          cleanup
  %1221 = extractvalue { ptr, i32 } %1220, 0
  store ptr %1221, ptr %15, align 8
  %1222 = extractvalue { ptr, i32 } %1220, 1
  store i32 %1222, ptr %16, align 4
  br label %1249

1223:                                             ; preds = %1206
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %1224 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  store ptr %1224, ptr %101, align 8, !tbaa !5
  %1225 = load ptr, ptr %8, align 8, !tbaa !5
  %1226 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(8) %1226)
          to label %1227 unwind label %1233

1227:                                             ; preds = %1223
  %1228 = load ptr, ptr %101, align 8, !tbaa !5
  invoke void @_ZNK3HIR9TraitPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %103, ptr noundef nonnull align 8 dereferenceable(144) %1228)
          to label %1229 unwind label %1237

1229:                                             ; preds = %1227
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %182, ptr noundef nonnull align 8 dereferenceable(8) %1225, ptr noundef null, ptr noundef %102, ptr noundef %103, i1 noundef zeroext true)
          to label %1230 unwind label %1241

1230:                                             ; preds = %1229
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %1231

1231:                                             ; preds = %1230
  %1232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %99) #9
  br label %1206

1233:                                             ; preds = %1223
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %15, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %16, align 4
  br label %1246

1237:                                             ; preds = %1227
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %15, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %16, align 4
  br label %1245

1241:                                             ; preds = %1229
  %1242 = landingpad { ptr, i32 }
          cleanup
  %1243 = extractvalue { ptr, i32 } %1242, 0
  store ptr %1243, ptr %15, align 8
  %1244 = extractvalue { ptr, i32 } %1242, 1
  store i32 %1244, ptr %16, align 4
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #9
  br label %1245

1245:                                             ; preds = %1241, %1237
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #9
  br label %1246

1246:                                             ; preds = %1245, %1233
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1249

1247:                                             ; preds = %1208
  br label %1248

1248:                                             ; preds = %1247, %1189
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  store i32 1, ptr %25, align 4
  br label %1251

1249:                                             ; preds = %1246, %1219
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #9
  br label %1254

1250:                                             ; preds = %1138
  store i32 0, ptr %25, align 4
  br label %1251

1251:                                             ; preds = %1250, %1248, %1176
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  %1252 = load i32, ptr %25, align 4
  switch i32 %1252, label %1295 [
    i32 0, label %1253
  ]

1253:                                             ; preds = %1251
  br label %1255

1254:                                             ; preds = %1249, %1218, %1209, %1136, %1077
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #9
  br label %1303

1255:                                             ; preds = %1253, %1060
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #9
  %1256 = load ptr, ptr %8, align 8, !tbaa !5
  %1257 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  %1258 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1259 = load ptr, ptr %83, align 8, !tbaa !5
  %1260 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1259, i32 0, i32 4
  %1261 = load ptr, ptr %1260, align 8, !tbaa !112
  %1262 = load ptr, ptr %84, align 8, !tbaa !5
  %1263 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1262, i32 0, i32 0
  %1264 = load ptr, ptr %84, align 8, !tbaa !5
  %1265 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1264, i32 0, i32 1
  %1266 = load ptr, ptr %18, align 8, !tbaa !5
  %1267 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1266, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 40, ptr %106) #9
  %1268 = getelementptr inbounds %class.anon.533, ptr %106, i32 0, i32 0
  store ptr %182, ptr %1268, align 8, !tbaa !113
  %1269 = getelementptr inbounds %class.anon.533, ptr %106, i32 0, i32 1
  %1270 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1270, ptr %1269, align 8, !tbaa !5
  %1271 = getelementptr inbounds %class.anon.533, ptr %106, i32 0, i32 2
  %1272 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1272, ptr %1271, align 8, !tbaa !5
  %1273 = getelementptr inbounds %class.anon.533, ptr %106, i32 0, i32 3
  %1274 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1274, ptr %1273, align 8, !tbaa !5
  %1275 = getelementptr inbounds %class.anon.533, ptr %106, i32 0, i32 4
  %1276 = load ptr, ptr %83, align 8, !tbaa !5
  store ptr %1276, ptr %1275, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(40) %106)
          to label %1277 unwind label %1284

1277:                                             ; preds = %1255
  %1278 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1256, ptr noundef nonnull align 8 dereferenceable(8) %1257, ptr noundef nonnull align 8 dereferenceable(24) %1258, ptr noundef nonnull align 8 dereferenceable(400) %1261, ptr noundef nonnull align 8 dereferenceable(8) %1263, ptr noundef nonnull align 8 dereferenceable(24) %1265, ptr noundef nonnull align 8 dereferenceable(8) %1267, ptr noundef %105)
          to label %1279 unwind label %1288

1279:                                             ; preds = %1277
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %106) #9
  %1280 = zext i1 %1278 to i8
  store i8 %1280, ptr %104, align 1, !tbaa !10
  %1281 = load i8, ptr %104, align 1, !tbaa !10, !range !12, !noundef !13
  %1282 = trunc i8 %1281 to i1
  br i1 %1282, label %1283, label %1293

1283:                                             ; preds = %1279
  store i32 1, ptr %25, align 4
  br label %1294

1284:                                             ; preds = %1255
  %1285 = landingpad { ptr, i32 }
          cleanup
  %1286 = extractvalue { ptr, i32 } %1285, 0
  store ptr %1286, ptr %15, align 8
  %1287 = extractvalue { ptr, i32 } %1285, 1
  store i32 %1287, ptr %16, align 4
  br label %1292

1288:                                             ; preds = %1277
  %1289 = landingpad { ptr, i32 }
          cleanup
  %1290 = extractvalue { ptr, i32 } %1289, 0
  store ptr %1290, ptr %15, align 8
  %1291 = extractvalue { ptr, i32 } %1289, 1
  store i32 %1291, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #9
  br label %1292

1292:                                             ; preds = %1288, %1284
  call void @llvm.lifetime.end.p0(i64 40, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #9
  br label %1303

1293:                                             ; preds = %1279
  store i32 0, ptr %25, align 4
  br label %1294

1294:                                             ; preds = %1293, %1283
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #9
  br label %1295

1295:                                             ; preds = %1294, %1251
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  %1296 = load i32, ptr %25, align 4
  switch i32 %1296, label %1298 [
    i32 0, label %1297
  ]

1297:                                             ; preds = %1295
  store i32 0, ptr %25, align 4
  br label %1298

1298:                                             ; preds = %1297, %1295
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  %1299 = load i32, ptr %25, align 4
  switch i32 %1299, label %1304 [
    i32 0, label %1300
  ]

1300:                                             ; preds = %1298
  br label %1301

1301:                                             ; preds = %1300
  %1302 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #9
  br label %1049

1303:                                             ; preds = %1292, %1254, %1073
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %1310

1304:                                             ; preds = %1298, %1051
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  %1305 = load i32, ptr %25, align 4
  switch i32 %1305, label %1308 [
    i32 60, label %1306
  ]

1306:                                             ; preds = %1304
  br label %1307

1307:                                             ; preds = %1306
  store i8 0, ptr %78, align 1, !tbaa !10
  br label %1015, !llvm.loop !115

1308:                                             ; preds = %1304, %1019
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  %1309 = load i32, ptr %25, align 4
  switch i32 %1309, label %1313 [
    i32 55, label %1311
  ]

1310:                                             ; preds = %1303, %1020
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  br label %1320

1311:                                             ; preds = %1308
  br label %1312

1312:                                             ; preds = %1311
  store i8 0, ptr %78, align 1, !tbaa !10
  br label %1007, !llvm.loop !116

1313:                                             ; preds = %1308, %1010
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #9
  %1314 = load i32, ptr %25, align 4
  switch i32 %1314, label %1318 [
    i32 52, label %1315
  ]

1315:                                             ; preds = %1313
  br label %1316

1316:                                             ; preds = %1315, %1005, %760, %654, %547, %450
  br label %1317

1317:                                             ; preds = %1316
  store i8 0, ptr %38, align 1, !tbaa !10
  br label %437, !llvm.loop !117

1318:                                             ; preds = %1313, %1003, %758, %652, %545, %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  %1319 = load i32, ptr %25, align 4
  switch i32 %1319, label %1323 [
    i32 13, label %1321
  ]

1320:                                             ; preds = %1310, %1000, %755, %649, %542, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  br label %2525

1321:                                             ; preds = %1318
  br label %1322

1322:                                             ; preds = %1321
  store i8 0, ptr %38, align 1, !tbaa !10
  br label %428, !llvm.loop !118

1323:                                             ; preds = %1318, %431
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #9
  %1324 = load i32, ptr %25, align 4
  switch i32 %1324, label %2518 [
    i32 10, label %1325
  ]

1325:                                             ; preds = %1323
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #9
  store i8 0, ptr %107, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 1, ptr %108) #9
  store i8 0, ptr %108, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %109) #9
  store i32 0, ptr %109, align 4, !tbaa !119
  %1326 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %1327 = trunc i8 %1326 to i1
  br i1 %1327, label %1377, label %1328

1328:                                             ; preds = %1325
  call void @llvm.lifetime.start.p0(i64 8, ptr %110) #9
  %1329 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  %1330 = load ptr, ptr %9, align 8, !tbaa !5
  %1331 = invoke ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1329, ptr noundef nonnull align 8 dereferenceable(8) %1330)
          to label %1332 unwind label %1352

1332:                                             ; preds = %1328
  %1333 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %110, i32 0, i32 0
  store ptr %1331, ptr %1333, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %1334 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  %1335 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1334) #9
  %1336 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %111, i32 0, i32 0
  store ptr %1335, ptr %1336, align 8
  %1337 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %111) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br i1 %1337, label %1338, label %1375

1338:                                             ; preds = %1332
  store i32 2, ptr %109, align 4, !tbaa !119
  br label %1339

1339:                                             ; preds = %1338
  %1340 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1341 unwind label %1352

1341:                                             ; preds = %1339
  br i1 %1340, label %1342, label %1356

1342:                                             ; preds = %1341
  %1343 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1344 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1343, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1345 unwind label %1352

1345:                                             ; preds = %1342
  %1346 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1344, ptr noundef @.str.95)
          to label %1347 unwind label %1352

1347:                                             ; preds = %1345
  %1348 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1346, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1349 unwind label %1352

1349:                                             ; preds = %1347
  %1350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1348, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1351 unwind label %1352

1351:                                             ; preds = %1349
  br label %1356

1352:                                             ; preds = %1349, %1347, %1345, %1342, %1339, %1328
  %1353 = landingpad { ptr, i32 }
          cleanup
  %1354 = extractvalue { ptr, i32 } %1353, 0
  store ptr %1354, ptr %15, align 8
  %1355 = extractvalue { ptr, i32 } %1353, 1
  store i32 %1355, ptr %16, align 4
  br label %1376

1356:                                             ; preds = %1351, %1341
  br label %1357

1357:                                             ; preds = %1356
  br label %1358

1358:                                             ; preds = %1357
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %1359 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %110) #9
  %1360 = getelementptr inbounds %"struct.std::pair.535", ptr %1359, i32 0, i32 1
  %1361 = getelementptr inbounds %"struct.TraitResolveCommon::CachedEquality", ptr %1360, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %112, ptr noundef nonnull align 8 dereferenceable(8) %1361)
          to label %1362 unwind label %1366

1362:                                             ; preds = %1358
  %1363 = load ptr, ptr %9, align 8, !tbaa !5
  %1364 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1363, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %1365 unwind label %1370

1365:                                             ; preds = %1362
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  store i8 1, ptr %107, align 1, !tbaa !10
  br label %1375

1366:                                             ; preds = %1358
  %1367 = landingpad { ptr, i32 }
          cleanup
  %1368 = extractvalue { ptr, i32 } %1367, 0
  store ptr %1368, ptr %15, align 8
  %1369 = extractvalue { ptr, i32 } %1367, 1
  store i32 %1369, ptr %16, align 4
  br label %1374

1370:                                             ; preds = %1362
  %1371 = landingpad { ptr, i32 }
          cleanup
  %1372 = extractvalue { ptr, i32 } %1371, 0
  store ptr %1372, ptr %15, align 8
  %1373 = extractvalue { ptr, i32 } %1371, 1
  store i32 %1373, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #9
  br label %1374

1374:                                             ; preds = %1370, %1366
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %1376

1375:                                             ; preds = %1365, %1332
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  br label %1377

1376:                                             ; preds = %1374, %1352
  call void @llvm.lifetime.end.p0(i64 8, ptr %110) #9
  br label %2524

1377:                                             ; preds = %1375, %1325
  %1378 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %1379 = trunc i8 %1378 to i1
  br i1 %1379, label %1408, label %1380

1380:                                             ; preds = %1377
  %1381 = load ptr, ptr %8, align 8, !tbaa !5
  %1382 = load ptr, ptr %18, align 8, !tbaa !5
  %1383 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1382, i32 0, i32 0
  %1384 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 56, ptr %114) #9
  %1385 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 0
  %1386 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1386, ptr %1385, align 8, !tbaa !5
  %1387 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 1
  store ptr %34, ptr %1387, align 8, !tbaa !5
  %1388 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 2
  store ptr %182, ptr %1388, align 8, !tbaa !120
  %1389 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 3
  %1390 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1390, ptr %1389, align 8, !tbaa !5
  %1391 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 4
  %1392 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1392, ptr %1391, align 8, !tbaa !5
  %1393 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 5
  store ptr %108, ptr %1393, align 8, !tbaa !5
  %1394 = getelementptr inbounds %class.anon.537, ptr %114, i32 0, i32 6
  store ptr %109, ptr %1394, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbN3HIR7CompareERKNS0_7TypeRefERKNS0_11GenericPathERKN18TraitResolveCommon11CachedBoundEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS2_5LListIPS3_EE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %113, ptr noundef nonnull align 8 dereferenceable(56) %114)
          to label %1395 unwind label %1399

1395:                                             ; preds = %1380
  %1396 = invoke noundef zeroext i1 @_ZNK15TraitResolution21iterate_bounds_traitsERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathESt8functionIFbNS3_7CompareES6_RKNS3_11GenericPathERKN18TraitResolveCommon11CachedBoundEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1381, ptr noundef nonnull align 8 dereferenceable(8) %1383, ptr noundef nonnull align 8 dereferenceable(8) %1384, ptr noundef %113)
          to label %1397 unwind label %1403

1397:                                             ; preds = %1395
  %1398 = zext i1 %1396 to i8
  store i8 %1398, ptr %107, align 1, !tbaa !10
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr %114) #9
  br label %1408

1399:                                             ; preds = %1380
  %1400 = landingpad { ptr, i32 }
          cleanup
  %1401 = extractvalue { ptr, i32 } %1400, 0
  store ptr %1401, ptr %15, align 8
  %1402 = extractvalue { ptr, i32 } %1400, 1
  store i32 %1402, ptr %16, align 4
  br label %1407

1403:                                             ; preds = %1395
  %1404 = landingpad { ptr, i32 }
          cleanup
  %1405 = extractvalue { ptr, i32 } %1404, 0
  store ptr %1405, ptr %15, align 8
  %1406 = extractvalue { ptr, i32 } %1404, 1
  store i32 %1406, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %113) #9
  br label %1407

1407:                                             ; preds = %1403, %1399
  call void @llvm.lifetime.end.p0(i64 56, ptr %114) #9
  br label %2524

1408:                                             ; preds = %1397, %1377
  %1409 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %1410 = trunc i8 %1409 to i1
  br i1 %1410, label %1411, label %1448

1411:                                             ; preds = %1408
  %1412 = load i32, ptr %109, align 4, !tbaa !119
  %1413 = icmp eq i32 %1412, 2
  br i1 %1413, label %1414, label %1415

1414:                                             ; preds = %1411
  br label %1417

1415:                                             ; preds = %1411
  call void @__assert_fail(ptr noundef @.str.96, ptr noundef @.str.7, i32 noundef 2575, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #11
  unreachable

1416:                                             ; No predecessors!
  br label %1417

1417:                                             ; preds = %1416, %1414
  br label %1418

1418:                                             ; preds = %1417
  %1419 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1420 unwind label %1434

1420:                                             ; preds = %1418
  br i1 %1419, label %1421, label %1438

1421:                                             ; preds = %1420
  %1422 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1423 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1422, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1424 unwind label %1434

1424:                                             ; preds = %1421
  %1425 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1423, ptr noundef @.str.97)
          to label %1426 unwind label %1434

1426:                                             ; preds = %1424
  %1427 = load ptr, ptr %9, align 8, !tbaa !5
  %1428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1425, ptr noundef nonnull align 8 dereferenceable(8) %1427)
          to label %1429 unwind label %1434

1429:                                             ; preds = %1426
  %1430 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1428, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1431 unwind label %1434

1431:                                             ; preds = %1429
  %1432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1430, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1433 unwind label %1434

1433:                                             ; preds = %1431
  br label %1438

1434:                                             ; preds = %1912, %1910, %1908, %1905, %1902, %1440, %1431, %1429, %1426, %1424, %1421, %1418
  %1435 = landingpad { ptr, i32 }
          cleanup
  %1436 = extractvalue { ptr, i32 } %1435, 0
  store ptr %1436, ptr %15, align 8
  %1437 = extractvalue { ptr, i32 } %1435, 1
  store i32 %1437, ptr %16, align 4
  br label %2524

1438:                                             ; preds = %1433, %1420
  br label %1439

1439:                                             ; preds = %1438
  br label %1440

1440:                                             ; preds = %1439
  %1441 = load ptr, ptr %8, align 8, !tbaa !5
  %1442 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %115, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %1443 = getelementptr inbounds { ptr, ptr }, ptr %115, i32 0, i32 0
  %1444 = load ptr, ptr %1443, align 8
  %1445 = getelementptr inbounds { ptr, ptr }, ptr %115, i32 0, i32 1
  %1446 = load ptr, ptr %1445, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1441, ptr noundef nonnull align 8 dereferenceable(8) %1442, ptr %1444, ptr %1446)
          to label %1447 unwind label %1434

1447:                                             ; preds = %1440
  store i32 1, ptr %25, align 4
  br label %2517

1448:                                             ; preds = %1408
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #9
  %1449 = load ptr, ptr %18, align 8, !tbaa !5
  %1450 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1449, i32 0, i32 0
  %1451 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1450)
          to label %1452 unwind label %1479

1452:                                             ; preds = %1448
  %1453 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1451)
          to label %1454 unwind label %1479

1454:                                             ; preds = %1452
  store ptr %1453, ptr %116, align 8, !tbaa !5
  %1455 = load ptr, ptr %116, align 8, !tbaa !5
  %1456 = icmp ne ptr %1455, null
  br i1 %1456, label %1457, label %1872

1457:                                             ; preds = %1454
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #9
  %1458 = load ptr, ptr %116, align 8, !tbaa !5
  %1459 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1458, i32 0, i32 0
  %1460 = getelementptr inbounds %"class.HIR::Path", ptr %1459, i32 0, i32 0
  %1461 = invoke noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1460)
          to label %1462 unwind label %1483

1462:                                             ; preds = %1457
  store ptr %1461, ptr %117, align 8, !tbaa !5
  %1463 = load ptr, ptr %117, align 8, !tbaa !5
  %1464 = icmp ne ptr %1463, null
  br i1 %1464, label %1465, label %1867

1465:                                             ; preds = %1462
  br label %1466

1466:                                             ; preds = %1465
  %1467 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1468 unwind label %1483

1468:                                             ; preds = %1466
  br i1 %1467, label %1469, label %1487

1469:                                             ; preds = %1468
  %1470 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1470, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1472 unwind label %1483

1472:                                             ; preds = %1469
  %1473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1471, ptr noundef @.str.98)
          to label %1474 unwind label %1483

1474:                                             ; preds = %1472
  %1475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1473, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1476 unwind label %1483

1476:                                             ; preds = %1474
  %1477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1475, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1478 unwind label %1483

1478:                                             ; preds = %1476
  br label %1487

1479:                                             ; preds = %1452, %1448
  %1480 = landingpad { ptr, i32 }
          cleanup
  %1481 = extractvalue { ptr, i32 } %1480, 0
  store ptr %1481, ptr %15, align 8
  %1482 = extractvalue { ptr, i32 } %1480, 1
  store i32 %1482, ptr %16, align 4
  br label %1891

1483:                                             ; preds = %1476, %1474, %1472, %1469, %1466, %1457
  %1484 = landingpad { ptr, i32 }
          cleanup
  %1485 = extractvalue { ptr, i32 } %1484, 0
  store ptr %1485, ptr %15, align 8
  %1486 = extractvalue { ptr, i32 } %1484, 1
  store i32 %1486, ptr %16, align 4
  br label %1871

1487:                                             ; preds = %1478, %1468
  br label %1488

1488:                                             ; preds = %1487
  br label %1489

1489:                                             ; preds = %1488
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #9
  %1490 = load ptr, ptr %117, align 8, !tbaa !5
  store ptr %1490, ptr %118, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %119) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1491 unwind label %1518

1491:                                             ; preds = %1489
  %1492 = load ptr, ptr %8, align 8, !tbaa !5
  %1493 = load ptr, ptr %118, align 8, !tbaa !5
  %1494 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1493, i32 0, i32 1
  %1495 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 0
  %1496 = load ptr, ptr %1495, align 8, !tbaa !16
  %1497 = load ptr, ptr %8, align 8, !tbaa !5
  %1498 = load ptr, ptr %118, align 8, !tbaa !5
  %1499 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1498, i32 0, i32 1
  %1500 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1499, i32 0, i32 0
  %1501 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1496, ptr noundef nonnull align 8 dereferenceable(8) %1497, ptr noundef nonnull align 8 dereferenceable(8) %1500)
          to label %1502 unwind label %1522

1502:                                             ; preds = %1491
  %1503 = load ptr, ptr %118, align 8, !tbaa !5
  %1504 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1503, i32 0, i32 2
  %1505 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %1504)
          to label %1506 unwind label %1522

1506:                                             ; preds = %1502
  %1507 = invoke noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1492, ptr noundef nonnull align 8 dereferenceable(32) %1494, ptr noundef nonnull align 8 dereferenceable(400) %1501, ptr noundef %1505, ptr noundef nonnull align 8 dereferenceable(32) %119)
          to label %1508 unwind label %1522

1508:                                             ; preds = %1506
  br i1 %1507, label %1541, label %1509

1509:                                             ; preds = %1508
  br label %1510

1510:                                             ; preds = %1509
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #9
  %1511 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull align 8 dereferenceable(8) %1511)
          to label %1512 unwind label %1526

1512:                                             ; preds = %1510
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #9
  %1513 = getelementptr inbounds %class.anon.538, ptr %122, i32 0, i32 0
  %1514 = load ptr, ptr %118, align 8, !tbaa !5
  store ptr %1514, ptr %1513, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %121, ptr noundef nonnull align 8 dereferenceable(8) %122) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef %121)
          to label %1515 unwind label %1530

1515:                                             ; preds = %1512
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #9
  %1516 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1516, ptr noundef @.str.8)
          to label %1517 unwind label %1535

1517:                                             ; preds = %1515
  invoke void @__cxa_throw(ptr %1516, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %1522

1518:                                             ; preds = %1489
  %1519 = landingpad { ptr, i32 }
          cleanup
  %1520 = extractvalue { ptr, i32 } %1519, 0
  store ptr %1520, ptr %15, align 8
  %1521 = extractvalue { ptr, i32 } %1519, 1
  store i32 %1521, ptr %16, align 4
  br label %1866

1522:                                             ; preds = %1517, %1506, %1502, %1491
  %1523 = landingpad { ptr, i32 }
          cleanup
  %1524 = extractvalue { ptr, i32 } %1523, 0
  store ptr %1524, ptr %15, align 8
  %1525 = extractvalue { ptr, i32 } %1523, 1
  store i32 %1525, ptr %16, align 4
  br label %1865

1526:                                             ; preds = %1510
  %1527 = landingpad { ptr, i32 }
          cleanup
  %1528 = extractvalue { ptr, i32 } %1527, 0
  store ptr %1528, ptr %15, align 8
  %1529 = extractvalue { ptr, i32 } %1527, 1
  store i32 %1529, ptr %16, align 4
  br label %1534

1530:                                             ; preds = %1512
  %1531 = landingpad { ptr, i32 }
          cleanup
  %1532 = extractvalue { ptr, i32 } %1531, 0
  store ptr %1532, ptr %15, align 8
  %1533 = extractvalue { ptr, i32 } %1531, 1
  store i32 %1533, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %121) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #9
  br label %1534

1534:                                             ; preds = %1530, %1526
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #9
  br label %1865

1535:                                             ; preds = %1515
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %15, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %16, align 4
  call void @__cxa_free_exception(ptr %1516) #9
  br label %1865

1539:                                             ; No predecessors!
  br label %1540

1540:                                             ; preds = %1539
  br label %1541

1541:                                             ; preds = %1540, %1508
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #9
  %1542 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 0
  %1543 = load ptr, ptr %1542, align 8, !tbaa !16
  %1544 = load ptr, ptr %8, align 8, !tbaa !5
  %1545 = getelementptr inbounds %"class.HIR::GenericPath", ptr %119, i32 0, i32 0
  %1546 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1543, ptr noundef nonnull align 8 dereferenceable(8) %1544, ptr noundef nonnull align 8 dereferenceable(8) %1545)
          to label %1547 unwind label %1571

1547:                                             ; preds = %1541
  store ptr %1546, ptr %123, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %124) #9
  %1548 = load ptr, ptr %123, align 8, !tbaa !5
  %1549 = getelementptr inbounds %"class.HIR::Trait", ptr %1548, i32 0, i32 4
  %1550 = load ptr, ptr %118, align 8, !tbaa !5
  %1551 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1550, i32 0, i32 2
  %1552 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %1549, ptr noundef nonnull align 8 dereferenceable(8) %1551)
          to label %1553 unwind label %1575

1553:                                             ; preds = %1547
  store ptr %1552, ptr %124, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %125) #9
  %1554 = load ptr, ptr %118, align 8, !tbaa !5
  %1555 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1554, i32 0, i32 0
  %1556 = load ptr, ptr %118, align 8, !tbaa !5
  %1557 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1556, i32 0, i32 1
  %1558 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1557, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %125, ptr noundef %1555, ptr noundef %1558, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1559 unwind label %1579

1559:                                             ; preds = %1553
  call void @llvm.lifetime.start.p0(i64 8, ptr %126) #9
  %1560 = load ptr, ptr %124, align 8, !tbaa !5
  %1561 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %1560, i32 0, i32 3
  store ptr %1561, ptr %126, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #9
  %1562 = load ptr, ptr %126, align 8, !tbaa !5
  %1563 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1562) #9
  %1564 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %127, i32 0, i32 0
  store ptr %1563, ptr %1564, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #9
  %1565 = load ptr, ptr %126, align 8, !tbaa !5
  %1566 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1565) #9
  %1567 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.154", ptr %128, i32 0, i32 0
  store ptr %1566, ptr %1567, align 8
  br label %1568

1568:                                             ; preds = %1821, %1559
  %1569 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %128) #9
  br i1 %1569, label %1583, label %1570

1570:                                             ; preds = %1568
  store i32 75, ptr %25, align 4
  br label %1826

1571:                                             ; preds = %1541
  %1572 = landingpad { ptr, i32 }
          cleanup
  %1573 = extractvalue { ptr, i32 } %1572, 0
  store ptr %1573, ptr %15, align 8
  %1574 = extractvalue { ptr, i32 } %1572, 1
  store i32 %1574, ptr %16, align 4
  br label %1864

1575:                                             ; preds = %1547
  %1576 = landingpad { ptr, i32 }
          cleanup
  %1577 = extractvalue { ptr, i32 } %1576, 0
  store ptr %1577, ptr %15, align 8
  %1578 = extractvalue { ptr, i32 } %1576, 1
  store i32 %1578, ptr %16, align 4
  br label %1863

1579:                                             ; preds = %1553
  %1580 = landingpad { ptr, i32 }
          cleanup
  %1581 = extractvalue { ptr, i32 } %1580, 0
  store ptr %1581, ptr %15, align 8
  %1582 = extractvalue { ptr, i32 } %1580, 1
  store i32 %1582, ptr %16, align 4
  br label %1862

1583:                                             ; preds = %1568
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #9
  %1584 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %127) #9
  store ptr %1584, ptr %129, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %130) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %130)
          to label %1585 unwind label %1604

1585:                                             ; preds = %1583
  call void @llvm.lifetime.start.p0(i64 8, ptr %131) #9
  %1586 = load ptr, ptr %8, align 8, !tbaa !5
  %1587 = load ptr, ptr %129, align 8, !tbaa !5
  %1588 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1587, i32 0, i32 1
  %1589 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZL33monomorphise_genericpath_with_optRK4SpanRN3HIR11GenericPathERKS3_RK13Monomorphiserb(ptr noundef nonnull align 8 dereferenceable(8) %1586, ptr noundef nonnull align 8 dereferenceable(32) %130, ptr noundef nonnull align 8 dereferenceable(32) %1588, ptr noundef nonnull align 8 dereferenceable(96) %125, i1 noundef zeroext true)
          to label %1590 unwind label %1608

1590:                                             ; preds = %1585
  store ptr %1589, ptr %131, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #9
  %1591 = getelementptr inbounds %"class.HIR::GenericPath", ptr %130, i32 0, i32 1
  %1592 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1591, i32 0, i32 1
  store ptr %1592, ptr %132, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %133) #9
  %1593 = load ptr, ptr %132, align 8, !tbaa !5
  %1594 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %1593)
          to label %1595 unwind label %1612

1595:                                             ; preds = %1590
  store ptr %1594, ptr %133, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %134) #9
  %1596 = load ptr, ptr %132, align 8, !tbaa !5
  %1597 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %1596)
          to label %1598 unwind label %1616

1598:                                             ; preds = %1595
  store ptr %1597, ptr %134, align 8, !tbaa !5
  br label %1599

1599:                                             ; preds = %1629, %1598
  %1600 = load ptr, ptr %133, align 8, !tbaa !5
  %1601 = load ptr, ptr %134, align 8, !tbaa !5
  %1602 = icmp ne ptr %1600, %1601
  br i1 %1602, label %1620, label %1603

1603:                                             ; preds = %1599
  store i32 77, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  br label %1638

1604:                                             ; preds = %1583
  %1605 = landingpad { ptr, i32 }
          cleanup
  %1606 = extractvalue { ptr, i32 } %1605, 0
  store ptr %1606, ptr %15, align 8
  %1607 = extractvalue { ptr, i32 } %1605, 1
  store i32 %1607, ptr %16, align 4
  br label %1825

1608:                                             ; preds = %1677, %1672, %1670, %1667, %1665, %1662, %1659, %1653, %1651, %1647, %1645, %1642, %1639, %1585
  %1609 = landingpad { ptr, i32 }
          cleanup
  %1610 = extractvalue { ptr, i32 } %1609, 0
  store ptr %1610, ptr %15, align 8
  %1611 = extractvalue { ptr, i32 } %1609, 1
  store i32 %1611, ptr %16, align 4
  br label %1824

1612:                                             ; preds = %1590
  %1613 = landingpad { ptr, i32 }
          cleanup
  %1614 = extractvalue { ptr, i32 } %1613, 0
  store ptr %1614, ptr %15, align 8
  %1615 = extractvalue { ptr, i32 } %1613, 1
  store i32 %1615, ptr %16, align 4
  br label %1637

1616:                                             ; preds = %1595
  %1617 = landingpad { ptr, i32 }
          cleanup
  %1618 = extractvalue { ptr, i32 } %1617, 0
  store ptr %1618, ptr %15, align 8
  %1619 = extractvalue { ptr, i32 } %1617, 1
  store i32 %1619, ptr %16, align 4
  br label %1636

1620:                                             ; preds = %1599
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #9
  %1621 = load ptr, ptr %133, align 8, !tbaa !5
  store ptr %1621, ptr %135, align 8, !tbaa !5
  %1622 = load ptr, ptr %8, align 8, !tbaa !5
  %1623 = load ptr, ptr %135, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %136, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %1624 = getelementptr inbounds { ptr, ptr }, ptr %136, i32 0, i32 0
  %1625 = load ptr, ptr %1624, align 8
  %1626 = getelementptr inbounds { ptr, ptr }, ptr %136, i32 0, i32 1
  %1627 = load ptr, ptr %1626, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1622, ptr noundef nonnull align 8 dereferenceable(8) %1623, ptr %1625, ptr %1627)
          to label %1628 unwind label %1632

1628:                                             ; preds = %1620
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  br label %1629

1629:                                             ; preds = %1628
  %1630 = load ptr, ptr %133, align 8, !tbaa !5
  %1631 = getelementptr inbounds %"class.HIR::TypeRef", ptr %1630, i32 1
  store ptr %1631, ptr %133, align 8, !tbaa !5
  br label %1599

1632:                                             ; preds = %1620
  %1633 = landingpad { ptr, i32 }
          cleanup
  %1634 = extractvalue { ptr, i32 } %1633, 0
  store ptr %1634, ptr %15, align 8
  %1635 = extractvalue { ptr, i32 } %1633, 1
  store i32 %1635, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #9
  br label %1636

1636:                                             ; preds = %1632, %1616
  call void @llvm.lifetime.end.p0(i64 8, ptr %134) #9
  br label %1637

1637:                                             ; preds = %1636, %1612
  call void @llvm.lifetime.end.p0(i64 8, ptr %133) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #9
  br label %1824

1638:                                             ; preds = %1603
  br label %1639

1639:                                             ; preds = %1638
  %1640 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1641 unwind label %1608

1641:                                             ; preds = %1639
  br i1 %1640, label %1642, label %1656

1642:                                             ; preds = %1641
  %1643 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1643, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1645 unwind label %1608

1645:                                             ; preds = %1642
  %1646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1644, ptr noundef @.str.99)
          to label %1647 unwind label %1608

1647:                                             ; preds = %1645
  %1648 = load ptr, ptr %129, align 8, !tbaa !5
  %1649 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1648, i32 0, i32 1
  %1650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1646, ptr noundef nonnull align 8 dereferenceable(32) %1649)
          to label %1651 unwind label %1608

1651:                                             ; preds = %1647
  %1652 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1650, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1653 unwind label %1608

1653:                                             ; preds = %1651
  %1654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1652, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1655 unwind label %1608

1655:                                             ; preds = %1653
  br label %1656

1656:                                             ; preds = %1655, %1641
  br label %1657

1657:                                             ; preds = %1656
  br label %1658

1658:                                             ; preds = %1657
  br label %1659

1659:                                             ; preds = %1658
  %1660 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1661 unwind label %1608

1661:                                             ; preds = %1659
  br i1 %1660, label %1662, label %1675

1662:                                             ; preds = %1661
  %1663 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1663, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1665 unwind label %1608

1665:                                             ; preds = %1662
  %1666 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1664, ptr noundef @.str.100)
          to label %1667 unwind label %1608

1667:                                             ; preds = %1665
  %1668 = load ptr, ptr %131, align 8, !tbaa !5
  %1669 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1666, ptr noundef nonnull align 8 dereferenceable(32) %1668)
          to label %1670 unwind label %1608

1670:                                             ; preds = %1667
  %1671 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1669, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1672 unwind label %1608

1672:                                             ; preds = %1670
  %1673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1671, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1674 unwind label %1608

1674:                                             ; preds = %1672
  br label %1675

1675:                                             ; preds = %1674, %1661
  br label %1676

1676:                                             ; preds = %1675
  br label %1677

1677:                                             ; preds = %1676
  %1678 = load ptr, ptr %131, align 8, !tbaa !5
  %1679 = load ptr, ptr %18, align 8, !tbaa !5
  %1680 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1679, i32 0, i32 1
  %1681 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %1678, ptr noundef nonnull align 8 dereferenceable(32) %1680)
          to label %1682 unwind label %1608

1682:                                             ; preds = %1677
  br i1 %1681, label %1683, label %1773

1683:                                             ; preds = %1682
  call void @llvm.lifetime.start.p0(i64 8, ptr %137) #9
  %1684 = load ptr, ptr %129, align 8, !tbaa !5
  %1685 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1684, i32 0, i32 2
  %1686 = load ptr, ptr %18, align 8, !tbaa !5
  %1687 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1686, i32 0, i32 2
  %1688 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1685, ptr noundef nonnull align 8 dereferenceable(8) %1687)
          to label %1689 unwind label %1711

1689:                                             ; preds = %1683
  %1690 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %137, i32 0, i32 0
  store ptr %1688, ptr %1690, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %138) #9
  %1691 = load ptr, ptr %129, align 8, !tbaa !5
  %1692 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1691, i32 0, i32 2
  %1693 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1692) #9
  %1694 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %138, i32 0, i32 0
  store ptr %1693, ptr %1694, align 8
  %1695 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %138) #9
  br i1 %1695, label %1696, label %1768

1696:                                             ; preds = %1689
  %1697 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  %1698 = getelementptr inbounds %"struct.std::pair.165", ptr %1697, i32 0, i32 1
  %1699 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1698, i32 0, i32 1
  %1700 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %1699, i1 noundef zeroext false)
          to label %1701 unwind label %1711

1701:                                             ; preds = %1696
  br i1 %1700, label %1702, label %1724

1702:                                             ; preds = %1701
  call void @llvm.lifetime.start.p0(i64 8, ptr %139) #9
  %1703 = load ptr, ptr %8, align 8, !tbaa !5
  %1704 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  %1705 = getelementptr inbounds %"struct.std::pair.165", ptr %1704, i32 0, i32 1
  %1706 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1705, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %139, ptr noundef nonnull align 8 dereferenceable(96) %125, ptr noundef nonnull align 8 dereferenceable(8) %1703, ptr noundef nonnull align 8 dereferenceable(8) %1706, i1 noundef zeroext true)
          to label %1707 unwind label %1715

1707:                                             ; preds = %1702
  %1708 = load ptr, ptr %9, align 8, !tbaa !5
  %1709 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1708, ptr noundef nonnull align 8 dereferenceable(8) %139)
          to label %1710 unwind label %1719

1710:                                             ; preds = %1707
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #9
  br label %1741

1711:                                             ; preds = %1760, %1755, %1753, %1750, %1748, %1745, %1742, %1696, %1683
  %1712 = landingpad { ptr, i32 }
          cleanup
  %1713 = extractvalue { ptr, i32 } %1712, 0
  store ptr %1713, ptr %15, align 8
  %1714 = extractvalue { ptr, i32 } %1712, 1
  store i32 %1714, ptr %16, align 4
  br label %1772

1715:                                             ; preds = %1702
  %1716 = landingpad { ptr, i32 }
          cleanup
  %1717 = extractvalue { ptr, i32 } %1716, 0
  store ptr %1717, ptr %15, align 8
  %1718 = extractvalue { ptr, i32 } %1716, 1
  store i32 %1718, ptr %16, align 4
  br label %1723

1719:                                             ; preds = %1707
  %1720 = landingpad { ptr, i32 }
          cleanup
  %1721 = extractvalue { ptr, i32 } %1720, 0
  store ptr %1721, ptr %15, align 8
  %1722 = extractvalue { ptr, i32 } %1720, 1
  store i32 %1722, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %139) #9
  br label %1723

1723:                                             ; preds = %1719, %1715
  call void @llvm.lifetime.end.p0(i64 8, ptr %139) #9
  br label %1772

1724:                                             ; preds = %1701
  call void @llvm.lifetime.start.p0(i64 8, ptr %140) #9
  %1725 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %137) #9
  %1726 = getelementptr inbounds %"struct.std::pair.165", ptr %1725, i32 0, i32 1
  %1727 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1726, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %140, ptr noundef nonnull align 8 dereferenceable(8) %1727)
          to label %1728 unwind label %1732

1728:                                             ; preds = %1724
  %1729 = load ptr, ptr %9, align 8, !tbaa !5
  %1730 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1729, ptr noundef nonnull align 8 dereferenceable(8) %140)
          to label %1731 unwind label %1736

1731:                                             ; preds = %1728
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #9
  br label %1741

1732:                                             ; preds = %1724
  %1733 = landingpad { ptr, i32 }
          cleanup
  %1734 = extractvalue { ptr, i32 } %1733, 0
  store ptr %1734, ptr %15, align 8
  %1735 = extractvalue { ptr, i32 } %1733, 1
  store i32 %1735, ptr %16, align 4
  br label %1740

1736:                                             ; preds = %1728
  %1737 = landingpad { ptr, i32 }
          cleanup
  %1738 = extractvalue { ptr, i32 } %1737, 0
  store ptr %1738, ptr %15, align 8
  %1739 = extractvalue { ptr, i32 } %1737, 1
  store i32 %1739, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %140) #9
  br label %1740

1740:                                             ; preds = %1736, %1732
  call void @llvm.lifetime.end.p0(i64 8, ptr %140) #9
  br label %1772

1741:                                             ; preds = %1731, %1710
  br label %1742

1742:                                             ; preds = %1741
  %1743 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1744 unwind label %1711

1744:                                             ; preds = %1742
  br i1 %1743, label %1745, label %1758

1745:                                             ; preds = %1744
  %1746 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1746, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1748 unwind label %1711

1748:                                             ; preds = %1745
  %1749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1747, ptr noundef @.str.97)
          to label %1750 unwind label %1711

1750:                                             ; preds = %1748
  %1751 = load ptr, ptr %9, align 8, !tbaa !5
  %1752 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1749, ptr noundef nonnull align 8 dereferenceable(8) %1751)
          to label %1753 unwind label %1711

1753:                                             ; preds = %1750
  %1754 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1752, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1755 unwind label %1711

1755:                                             ; preds = %1753
  %1756 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1754, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1757 unwind label %1711

1757:                                             ; preds = %1755
  br label %1758

1758:                                             ; preds = %1757, %1744
  br label %1759

1759:                                             ; preds = %1758
  br label %1760

1760:                                             ; preds = %1759
  %1761 = load ptr, ptr %8, align 8, !tbaa !5
  %1762 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %141, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %1763 = getelementptr inbounds { ptr, ptr }, ptr %141, i32 0, i32 0
  %1764 = load ptr, ptr %1763, align 8
  %1765 = getelementptr inbounds { ptr, ptr }, ptr %141, i32 0, i32 1
  %1766 = load ptr, ptr %1765, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1761, ptr noundef nonnull align 8 dereferenceable(8) %1762, ptr %1764, ptr %1766)
          to label %1767 unwind label %1711

1767:                                             ; preds = %1760
  store i32 1, ptr %25, align 4
  br label %1769

1768:                                             ; preds = %1689
  store i32 0, ptr %25, align 4
  br label %1769

1769:                                             ; preds = %1768, %1767
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  %1770 = load i32, ptr %25, align 4
  switch i32 %1770, label %1815 [
    i32 0, label %1771
  ]

1771:                                             ; preds = %1769
  br label %1773

1772:                                             ; preds = %1740, %1723, %1711
  call void @llvm.lifetime.end.p0(i64 8, ptr %137) #9
  br label %1824

1773:                                             ; preds = %1771, %1682
  call void @llvm.lifetime.start.p0(i64 8, ptr %142) #9
  %1774 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 0
  %1775 = load ptr, ptr %1774, align 8, !tbaa !16
  %1776 = load ptr, ptr %8, align 8, !tbaa !5
  %1777 = load ptr, ptr %131, align 8, !tbaa !5
  %1778 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1777, i32 0, i32 0
  %1779 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1775, ptr noundef nonnull align 8 dereferenceable(8) %1776, ptr noundef nonnull align 8 dereferenceable(8) %1778)
          to label %1780 unwind label %1805

1780:                                             ; preds = %1773
  store ptr %1779, ptr %142, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %143) #9
  %1781 = load ptr, ptr %8, align 8, !tbaa !5
  %1782 = load ptr, ptr %18, align 8, !tbaa !5
  %1783 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1782, i32 0, i32 1
  %1784 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1783, i32 0, i32 0
  %1785 = load ptr, ptr %18, align 8, !tbaa !5
  %1786 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1785, i32 0, i32 1
  %1787 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1786, i32 0, i32 1
  %1788 = load ptr, ptr %142, align 8, !tbaa !5
  %1789 = load ptr, ptr %131, align 8, !tbaa !5
  %1790 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1789, i32 0, i32 0
  %1791 = load ptr, ptr %131, align 8, !tbaa !5
  %1792 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1791, i32 0, i32 1
  %1793 = load ptr, ptr %18, align 8, !tbaa !5
  %1794 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1793, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %145) #9
  %1795 = getelementptr inbounds %class.anon.539, ptr %145, i32 0, i32 0
  %1796 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1796, ptr %1795, align 8, !tbaa !5
  %1797 = getelementptr inbounds %class.anon.539, ptr %145, i32 0, i32 1
  %1798 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1798, ptr %1797, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %144, ptr noundef nonnull align 8 dereferenceable(16) %145) #9
  %1799 = invoke noundef zeroext i1 @_ZNK15TraitResolution25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1781, ptr noundef nonnull align 8 dereferenceable(8) %1784, ptr noundef nonnull align 8 dereferenceable(24) %1787, ptr noundef nonnull align 8 dereferenceable(400) %1788, ptr noundef nonnull align 8 dereferenceable(8) %1790, ptr noundef nonnull align 8 dereferenceable(24) %1792, ptr noundef nonnull align 8 dereferenceable(8) %1794, ptr noundef %144)
          to label %1800 unwind label %1809

1800:                                             ; preds = %1780
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #9
  %1801 = zext i1 %1799 to i8
  store i8 %1801, ptr %143, align 1, !tbaa !10
  %1802 = load i8, ptr %143, align 1, !tbaa !10, !range !12, !noundef !13
  %1803 = trunc i8 %1802 to i1
  br i1 %1803, label %1804, label %1813

1804:                                             ; preds = %1800
  store i32 1, ptr %25, align 4
  br label %1814

1805:                                             ; preds = %1773
  %1806 = landingpad { ptr, i32 }
          cleanup
  %1807 = extractvalue { ptr, i32 } %1806, 0
  store ptr %1807, ptr %15, align 8
  %1808 = extractvalue { ptr, i32 } %1806, 1
  store i32 %1808, ptr %16, align 4
  br label %1823

1809:                                             ; preds = %1780
  %1810 = landingpad { ptr, i32 }
          cleanup
  %1811 = extractvalue { ptr, i32 } %1810, 0
  store ptr %1811, ptr %15, align 8
  %1812 = extractvalue { ptr, i32 } %1810, 1
  store i32 %1812, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %144) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %145) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #9
  br label %1823

1813:                                             ; preds = %1800
  store i32 0, ptr %25, align 4
  br label %1814

1814:                                             ; preds = %1813, %1804
  call void @llvm.lifetime.end.p0(i64 1, ptr %143) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  br label %1815

1815:                                             ; preds = %1814, %1769
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #9
  %1816 = load i32, ptr %25, align 4
  switch i32 %1816, label %1818 [
    i32 0, label %1817
  ]

1817:                                             ; preds = %1815
  store i32 0, ptr %25, align 4
  br label %1818

1818:                                             ; preds = %1817, %1815
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  %1819 = load i32, ptr %25, align 4
  switch i32 %1819, label %1826 [
    i32 0, label %1820
  ]

1820:                                             ; preds = %1818
  br label %1821

1821:                                             ; preds = %1820
  %1822 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %127) #9
  br label %1568

1823:                                             ; preds = %1809, %1805
  call void @llvm.lifetime.end.p0(i64 8, ptr %142) #9
  br label %1824

1824:                                             ; preds = %1823, %1772, %1637, %1608
  call void @llvm.lifetime.end.p0(i64 8, ptr %131) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %130) #9
  br label %1825

1825:                                             ; preds = %1824, %1604
  call void @llvm.lifetime.end.p0(i64 32, ptr %130) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  br label %1861

1826:                                             ; preds = %1818, %1570
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %126) #9
  %1827 = load i32, ptr %25, align 4
  switch i32 %1827, label %1858 [
    i32 75, label %1828
  ]

1828:                                             ; preds = %1826
  br label %1829

1829:                                             ; preds = %1828
  %1830 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1831 unwind label %1851

1831:                                             ; preds = %1829
  br i1 %1830, label %1832, label %1855

1832:                                             ; preds = %1831
  %1833 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1834 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1833, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1835 unwind label %1851

1835:                                             ; preds = %1832
  %1836 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1834, ptr noundef @.str.101)
          to label %1837 unwind label %1851

1837:                                             ; preds = %1835
  %1838 = load ptr, ptr %18, align 8, !tbaa !5
  %1839 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1838, i32 0, i32 0
  %1840 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1836, ptr noundef nonnull align 8 dereferenceable(8) %1839)
          to label %1841 unwind label %1851

1841:                                             ; preds = %1837
  %1842 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1840, ptr noundef @.str.102)
          to label %1843 unwind label %1851

1843:                                             ; preds = %1841
  %1844 = load ptr, ptr %9, align 8, !tbaa !5
  %1845 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1842, ptr noundef nonnull align 8 dereferenceable(8) %1844)
          to label %1846 unwind label %1851

1846:                                             ; preds = %1843
  %1847 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1845, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1848 unwind label %1851

1848:                                             ; preds = %1846
  %1849 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1847, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1850 unwind label %1851

1850:                                             ; preds = %1848
  br label %1855

1851:                                             ; preds = %1848, %1846, %1843, %1841, %1837, %1835, %1832, %1829
  %1852 = landingpad { ptr, i32 }
          cleanup
  %1853 = extractvalue { ptr, i32 } %1852, 0
  store ptr %1853, ptr %15, align 8
  %1854 = extractvalue { ptr, i32 } %1852, 1
  store i32 %1854, ptr %16, align 4
  br label %1861

1855:                                             ; preds = %1850, %1831
  br label %1856

1856:                                             ; preds = %1855
  br label %1857

1857:                                             ; preds = %1856
  store i32 0, ptr %25, align 4
  br label %1858

1858:                                             ; preds = %1857, %1826
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %125) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr %125) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  %1859 = load i32, ptr %25, align 4
  switch i32 %1859, label %1868 [
    i32 0, label %1860
  ]

1860:                                             ; preds = %1858
  br label %1867

1861:                                             ; preds = %1851, %1825
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %125) #9
  br label %1862

1862:                                             ; preds = %1861, %1579
  call void @llvm.lifetime.end.p0(i64 128, ptr %125) #9
  br label %1863

1863:                                             ; preds = %1862, %1575
  call void @llvm.lifetime.end.p0(i64 8, ptr %124) #9
  br label %1864

1864:                                             ; preds = %1863, %1571
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #9
  br label %1865

1865:                                             ; preds = %1864, %1535, %1534, %1522
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #9
  br label %1866

1866:                                             ; preds = %1865, %1518
  call void @llvm.lifetime.end.p0(i64 32, ptr %119) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #9
  br label %1871

1867:                                             ; preds = %1860, %1462
  store i32 0, ptr %25, align 4
  br label %1868

1868:                                             ; preds = %1867, %1858
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  %1869 = load i32, ptr %25, align 4
  switch i32 %1869, label %1873 [
    i32 0, label %1870
  ]

1870:                                             ; preds = %1868
  br label %1872

1871:                                             ; preds = %1866, %1483
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #9
  br label %1891

1872:                                             ; preds = %1870, %1454
  store i32 0, ptr %25, align 4
  br label %1873

1873:                                             ; preds = %1872, %1868
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #9
  %1874 = load i32, ptr %25, align 4
  switch i32 %1874, label %2517 [
    i32 0, label %1875
  ]

1875:                                             ; preds = %1873
  %1876 = load ptr, ptr %8, align 8, !tbaa !5
  %1877 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  %1878 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1879 = load ptr, ptr %18, align 8, !tbaa !5
  %1880 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1879, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 24, ptr %147) #9
  %1881 = getelementptr inbounds %class.anon.540, ptr %147, i32 0, i32 0
  %1882 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1882, ptr %1881, align 8, !tbaa !5
  %1883 = getelementptr inbounds %class.anon.540, ptr %147, i32 0, i32 1
  %1884 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1884, ptr %1883, align 8, !tbaa !5
  %1885 = getelementptr inbounds %class.anon.540, ptr %147, i32 0, i32 2
  %1886 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1886, ptr %1885, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %146, ptr noundef nonnull align 8 dereferenceable(24) %147)
          to label %1887 unwind label %1892

1887:                                             ; preds = %1875
  %1888 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1876, ptr noundef nonnull align 8 dereferenceable(8) %1877, ptr noundef nonnull align 8 dereferenceable(24) %1878, ptr noundef nonnull align 8 dereferenceable(8) %1880, ptr noundef %146)
          to label %1889 unwind label %1896

1889:                                             ; preds = %1887
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %147) #9
  br i1 %1888, label %1890, label %1901

1890:                                             ; preds = %1889
  store i32 1, ptr %25, align 4
  br label %2517

1891:                                             ; preds = %1871, %1479
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #9
  br label %2524

1892:                                             ; preds = %1875
  %1893 = landingpad { ptr, i32 }
          cleanup
  %1894 = extractvalue { ptr, i32 } %1893, 0
  store ptr %1894, ptr %15, align 8
  %1895 = extractvalue { ptr, i32 } %1893, 1
  store i32 %1895, ptr %16, align 4
  br label %1900

1896:                                             ; preds = %1887
  %1897 = landingpad { ptr, i32 }
          cleanup
  %1898 = extractvalue { ptr, i32 } %1897, 0
  store ptr %1898, ptr %15, align 8
  %1899 = extractvalue { ptr, i32 } %1897, 1
  store i32 %1899, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %146) #9
  br label %1900

1900:                                             ; preds = %1896, %1892
  call void @llvm.lifetime.end.p0(i64 24, ptr %147) #9
  br label %2524

1901:                                             ; preds = %1889
  br label %1902

1902:                                             ; preds = %1901
  %1903 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1904 unwind label %1434

1904:                                             ; preds = %1902
  br i1 %1903, label %1905, label %1915

1905:                                             ; preds = %1904
  %1906 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1907 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1906, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1908 unwind label %1434

1908:                                             ; preds = %1905
  %1909 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1907, ptr noundef @.str.103)
          to label %1910 unwind label %1434

1910:                                             ; preds = %1908
  %1911 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1909, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1912 unwind label %1434

1912:                                             ; preds = %1910
  %1913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1911, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1914 unwind label %1434

1914:                                             ; preds = %1912
  br label %1915

1915:                                             ; preds = %1914, %1904
  br label %1916

1916:                                             ; preds = %1915
  br label %1917

1917:                                             ; preds = %1916
  call void @llvm.lifetime.start.p0(i64 1, ptr %148) #9
  store i8 1, ptr %148, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #9
  store i32 0, ptr %149, align 4, !tbaa !14
  call void @llvm.lifetime.start.p0(i64 1, ptr %150) #9
  store i8 0, ptr %150, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 1, ptr %151) #9
  store i8 0, ptr %151, align 1, !tbaa !10
  call void @llvm.lifetime.start.p0(i64 184, ptr %152) #9
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %152)
          to label %1918 unwind label %1953

1918:                                             ; preds = %1917
  call void @llvm.lifetime.start.p0(i64 72, ptr %153) #9
  %1919 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 0
  store ptr %148, ptr %1919, align 8, !tbaa !5
  %1920 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 1
  store ptr %149, ptr %1920, align 8, !tbaa !5
  %1921 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 2
  %1922 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1922, ptr %1921, align 8, !tbaa !5
  %1923 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 3
  store ptr %152, ptr %1923, align 8, !tbaa !5
  %1924 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 4
  store ptr %150, ptr %1924, align 8, !tbaa !5
  %1925 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 5
  store ptr %151, ptr %1925, align 8, !tbaa !5
  %1926 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 6
  %1927 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1927, ptr %1926, align 8, !tbaa !5
  %1928 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 7
  %1929 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1929, ptr %1928, align 8, !tbaa !5
  %1930 = getelementptr inbounds %class.anon.541, ptr %153, i32 0, i32 8
  %1931 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %1931, ptr %1930, align 8, !tbaa !5
  %1932 = load ptr, ptr %8, align 8, !tbaa !5
  %1933 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  %1934 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1935 = load ptr, ptr %18, align 8, !tbaa !5
  %1936 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1935, i32 0, i32 0
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %154, ptr noundef nonnull align 8 dereferenceable(72) %153)
          to label %1937 unwind label %1957

1937:                                             ; preds = %1918
  %1938 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1932, ptr noundef nonnull align 8 dereferenceable(8) %1933, ptr noundef nonnull align 8 dereferenceable(24) %1934, ptr noundef nonnull align 8 dereferenceable(8) %1936, ptr noundef %154)
          to label %1939 unwind label %1961

1939:                                             ; preds = %1937
  %1940 = zext i1 %1938 to i8
  store i8 %1940, ptr %107, align 1, !tbaa !10
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  %1941 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %1942 = trunc i8 %1941 to i1
  br i1 %1942, label %1969, label %1943

1943:                                             ; preds = %1939
  store i8 1, ptr %151, align 1, !tbaa !10
  %1944 = load ptr, ptr %8, align 8, !tbaa !5
  %1945 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 0
  %1946 = getelementptr inbounds %"class.HIR::GenericPath", ptr %34, i32 0, i32 1
  %1947 = load ptr, ptr %18, align 8, !tbaa !5
  %1948 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1947, i32 0, i32 0
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %155, ptr noundef nonnull align 8 dereferenceable(72) %153)
          to label %1949 unwind label %1957

1949:                                             ; preds = %1943
  %1950 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %1944, ptr noundef nonnull align 8 dereferenceable(8) %1945, ptr noundef nonnull align 8 dereferenceable(24) %1946, ptr noundef nonnull align 8 dereferenceable(8) %1948, ptr noundef %155)
          to label %1951 unwind label %1965

1951:                                             ; preds = %1949
  %1952 = zext i1 %1950 to i8
  store i8 %1952, ptr %107, align 1, !tbaa !10
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  br label %1969

1953:                                             ; preds = %1917
  %1954 = landingpad { ptr, i32 }
          cleanup
  %1955 = extractvalue { ptr, i32 } %1954, 0
  store ptr %1955, ptr %15, align 8
  %1956 = extractvalue { ptr, i32 } %1954, 1
  store i32 %1956, ptr %16, align 4
  br label %2523

1957:                                             ; preds = %2509, %2507, %2505, %2502, %2500, %2497, %2494, %2478, %2476, %2474, %2471, %2469, %2466, %2463, %2452, %2450, %2448, %2445, %2443, %2440, %2437, %2430, %2423, %2421, %2418, %2416, %2413, %2410, %2293, %2291, %2289, %2285, %2283, %2280, %2277, %2247, %2214, %2212, %2210, %2207, %2205, %2202, %2199, %2185, %2033, %2031, %2029, %2026, %2023, %2002, %2000, %1998, %1995, %1992, %1985, %1972, %1943, %1918
  %1958 = landingpad { ptr, i32 }
          cleanup
  %1959 = extractvalue { ptr, i32 } %1958, 0
  store ptr %1959, ptr %15, align 8
  %1960 = extractvalue { ptr, i32 } %1958, 1
  store i32 %1960, ptr %16, align 4
  br label %2522

1961:                                             ; preds = %1937
  %1962 = landingpad { ptr, i32 }
          cleanup
  %1963 = extractvalue { ptr, i32 } %1962, 0
  store ptr %1963, ptr %15, align 8
  %1964 = extractvalue { ptr, i32 } %1962, 1
  store i32 %1964, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %154) #9
  br label %2522

1965:                                             ; preds = %1949
  %1966 = landingpad { ptr, i32 }
          cleanup
  %1967 = extractvalue { ptr, i32 } %1966, 0
  store ptr %1967, ptr %15, align 8
  %1968 = extractvalue { ptr, i32 } %1966, 1
  store i32 %1968, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %155) #9
  br label %2522

1969:                                             ; preds = %1951, %1939
  %1970 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %1971 = trunc i8 %1970 to i1
  br i1 %1971, label %2182, label %1972

1972:                                             ; preds = %1969
  %1973 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %152)
          to label %1974 unwind label %1957

1974:                                             ; preds = %1972
  br i1 %1973, label %1975, label %2182

1975:                                             ; preds = %1974
  %1976 = load i8, ptr %148, align 1, !tbaa !10, !range !12, !noundef !13
  %1977 = trunc i8 %1976 to i1
  br i1 %1977, label %1978, label %1982

1978:                                             ; preds = %1975
  %1979 = load i32, ptr %149, align 4, !tbaa !14
  %1980 = icmp ugt i32 %1979, 1
  br i1 %1980, label %1981, label %1982

1981:                                             ; preds = %1978
  br label %2181

1982:                                             ; preds = %1978, %1975
  %1983 = load i8, ptr %150, align 1, !tbaa !10, !range !12, !noundef !13
  %1984 = trunc i8 %1983 to i1
  br i1 %1984, label %1985, label %2040

1985:                                             ; preds = %1982
  %1986 = getelementptr inbounds %class.TraitResolution, ptr %182, i32 0, i32 2
  %1987 = load ptr, ptr %1986, align 8, !tbaa !73
  %1988 = load ptr, ptr %9, align 8, !tbaa !5
  %1989 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %1987, ptr noundef nonnull align 8 dereferenceable(8) %1988, i1 noundef zeroext false)
          to label %1990 unwind label %1957

1990:                                             ; preds = %1985
  br i1 %1989, label %2022, label %1991

1991:                                             ; preds = %1990
  br label %1992

1992:                                             ; preds = %1991
  %1993 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1994 unwind label %1957

1994:                                             ; preds = %1992
  br i1 %1993, label %1995, label %2005

1995:                                             ; preds = %1994
  %1996 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %1997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1996, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1998 unwind label %1957

1998:                                             ; preds = %1995
  %1999 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1997, ptr noundef @.str.104)
          to label %2000 unwind label %1957

2000:                                             ; preds = %1998
  %2001 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1999, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2002 unwind label %1957

2002:                                             ; preds = %2000
  %2003 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2001, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2004 unwind label %1957

2004:                                             ; preds = %2002
  br label %2005

2005:                                             ; preds = %2004, %1994
  br label %2006

2006:                                             ; preds = %2005
  br label %2007

2007:                                             ; preds = %2006
  call void @llvm.lifetime.start.p0(i64 16, ptr %156) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %156)
          to label %2008 unwind label %2013

2008:                                             ; preds = %2007
  %2009 = load ptr, ptr %17, align 8, !tbaa !5
  %2010 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2009, i32 0, i32 1
  %2011 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %2010, ptr noundef nonnull align 8 dereferenceable(16) %156)
          to label %2012 unwind label %2017

2012:                                             ; preds = %2008
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #9
  br label %2039

2013:                                             ; preds = %2007
  %2014 = landingpad { ptr, i32 }
          cleanup
  %2015 = extractvalue { ptr, i32 } %2014, 0
  store ptr %2015, ptr %15, align 8
  %2016 = extractvalue { ptr, i32 } %2014, 1
  store i32 %2016, ptr %16, align 4
  br label %2021

2017:                                             ; preds = %2008
  %2018 = landingpad { ptr, i32 }
          cleanup
  %2019 = extractvalue { ptr, i32 } %2018, 0
  store ptr %2019, ptr %15, align 8
  %2020 = extractvalue { ptr, i32 } %2018, 1
  store i32 %2020, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %156) #9
  br label %2021

2021:                                             ; preds = %2017, %2013
  call void @llvm.lifetime.end.p0(i64 16, ptr %156) #9
  br label %2522

2022:                                             ; preds = %1990
  br label %2023

2023:                                             ; preds = %2022
  %2024 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2025 unwind label %1957

2025:                                             ; preds = %2023
  br i1 %2024, label %2026, label %2036

2026:                                             ; preds = %2025
  %2027 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2028 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2027, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2029 unwind label %1957

2029:                                             ; preds = %2026
  %2030 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2028, ptr noundef @.str.105)
          to label %2031 unwind label %1957

2031:                                             ; preds = %2029
  %2032 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2030, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2033 unwind label %1957

2033:                                             ; preds = %2031
  %2034 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2032, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2035 unwind label %1957

2035:                                             ; preds = %2033
  br label %2036

2036:                                             ; preds = %2035, %2025
  br label %2037

2037:                                             ; preds = %2036
  br label %2038

2038:                                             ; preds = %2037
  br label %2039

2039:                                             ; preds = %2038, %2012
  store i32 1, ptr %25, align 4
  br label %2516

2040:                                             ; preds = %1982
  call void @llvm.lifetime.start.p0(i64 8, ptr %158) #9
  %2041 = load ptr, ptr %18, align 8, !tbaa !5
  %2042 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2041, i32 0, i32 2
  %2043 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %2042)
          to label %2044 unwind label %2071

2044:                                             ; preds = %2040
  %2045 = load ptr, ptr %18, align 8, !tbaa !5
  %2046 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %2045, i32 0, i32 3
  invoke void @_ZNK7ImplRef8get_typeEPKcRKN3HIR10PathParamsE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %158, ptr noundef nonnull align 8 dereferenceable(184) %152, ptr noundef %2043, ptr noundef nonnull align 8 dereferenceable(24) %2046)
          to label %2047 unwind label %2071

2047:                                             ; preds = %2044
  call void @llvm.lifetime.start.p0(i64 8, ptr %159) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159)
          to label %2048 unwind label %2075

2048:                                             ; preds = %2047
  %2049 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull align 8 dereferenceable(8) %159)
          to label %2050 unwind label %2079

2050:                                             ; preds = %2048
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  br i1 %2049, label %2051, label %2127

2051:                                             ; preds = %2050
  %2052 = getelementptr inbounds %class.TraitResolution, ptr %182, i32 0, i32 2
  %2053 = load ptr, ptr %2052, align 8, !tbaa !73
  %2054 = load ptr, ptr %9, align 8, !tbaa !5
  %2055 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %2053, ptr noundef nonnull align 8 dereferenceable(8) %2054, i1 noundef zeroext false)
          to label %2056 unwind label %2084

2056:                                             ; preds = %2051
  br i1 %2055, label %2109, label %2057

2057:                                             ; preds = %2056
  br label %2058

2058:                                             ; preds = %2057
  %2059 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2060 unwind label %2084

2060:                                             ; preds = %2058
  br i1 %2059, label %2061, label %2088

2061:                                             ; preds = %2060
  %2062 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2063 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2062, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2064 unwind label %2084

2064:                                             ; preds = %2061
  %2065 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2063, ptr noundef @.str.106)
          to label %2066 unwind label %2084

2066:                                             ; preds = %2064
  %2067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2065, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2068 unwind label %2084

2068:                                             ; preds = %2066
  %2069 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2067, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2070 unwind label %2084

2070:                                             ; preds = %2068
  br label %2088

2071:                                             ; preds = %2044, %2040
  %2072 = landingpad { ptr, i32 }
          cleanup
  %2073 = extractvalue { ptr, i32 } %2072, 0
  store ptr %2073, ptr %15, align 8
  %2074 = extractvalue { ptr, i32 } %2072, 1
  store i32 %2074, ptr %16, align 4
  br label %2179

2075:                                             ; preds = %2047
  %2076 = landingpad { ptr, i32 }
          cleanup
  %2077 = extractvalue { ptr, i32 } %2076, 0
  store ptr %2077, ptr %15, align 8
  %2078 = extractvalue { ptr, i32 } %2076, 1
  store i32 %2078, ptr %16, align 4
  br label %2083

2079:                                             ; preds = %2048
  %2080 = landingpad { ptr, i32 }
          cleanup
  %2081 = extractvalue { ptr, i32 } %2080, 0
  store ptr %2081, ptr %15, align 8
  %2082 = extractvalue { ptr, i32 } %2080, 1
  store i32 %2082, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %159) #9
  br label %2083

2083:                                             ; preds = %2079, %2075
  call void @llvm.lifetime.end.p0(i64 8, ptr %159) #9
  br label %2178

2084:                                             ; preds = %2171, %2166, %2164, %2162, %2160, %2156, %2154, %2151, %2148, %2141, %2139, %2137, %2134, %2131, %2127, %2120, %2118, %2116, %2113, %2110, %2068, %2066, %2064, %2061, %2058, %2051
  %2085 = landingpad { ptr, i32 }
          cleanup
  %2086 = extractvalue { ptr, i32 } %2085, 0
  store ptr %2086, ptr %15, align 8
  %2087 = extractvalue { ptr, i32 } %2085, 1
  store i32 %2087, ptr %16, align 4
  br label %2178

2088:                                             ; preds = %2070, %2060
  br label %2089

2089:                                             ; preds = %2088
  br label %2090

2090:                                             ; preds = %2089
  call void @llvm.lifetime.start.p0(i64 16, ptr %160) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %160)
          to label %2091 unwind label %2100

2091:                                             ; preds = %2090
  %2092 = load ptr, ptr %9, align 8, !tbaa !5
  %2093 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2092)
          to label %2094 unwind label %2104

2094:                                             ; preds = %2091
  %2095 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2093)
          to label %2096 unwind label %2104

2096:                                             ; preds = %2094
  %2097 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2095, i32 0, i32 1
  %2098 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %2097, ptr noundef nonnull align 8 dereferenceable(16) %160)
          to label %2099 unwind label %2104

2099:                                             ; preds = %2096
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #9
  br label %2126

2100:                                             ; preds = %2090
  %2101 = landingpad { ptr, i32 }
          cleanup
  %2102 = extractvalue { ptr, i32 } %2101, 0
  store ptr %2102, ptr %15, align 8
  %2103 = extractvalue { ptr, i32 } %2101, 1
  store i32 %2103, ptr %16, align 4
  br label %2108

2104:                                             ; preds = %2096, %2094, %2091
  %2105 = landingpad { ptr, i32 }
          cleanup
  %2106 = extractvalue { ptr, i32 } %2105, 0
  store ptr %2106, ptr %15, align 8
  %2107 = extractvalue { ptr, i32 } %2105, 1
  store i32 %2107, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %160) #9
  br label %2108

2108:                                             ; preds = %2104, %2100
  call void @llvm.lifetime.end.p0(i64 16, ptr %160) #9
  br label %2178

2109:                                             ; preds = %2056
  br label %2110

2110:                                             ; preds = %2109
  %2111 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2112 unwind label %2084

2112:                                             ; preds = %2110
  br i1 %2111, label %2113, label %2123

2113:                                             ; preds = %2112
  %2114 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2115 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2114, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2116 unwind label %2084

2116:                                             ; preds = %2113
  %2117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2115, ptr noundef @.str.107)
          to label %2118 unwind label %2084

2118:                                             ; preds = %2116
  %2119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2117, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2120 unwind label %2084

2120:                                             ; preds = %2118
  %2121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2119, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2122 unwind label %2084

2122:                                             ; preds = %2120
  br label %2123

2123:                                             ; preds = %2122, %2112
  br label %2124

2124:                                             ; preds = %2123
  br label %2125

2125:                                             ; preds = %2124
  br label %2126

2126:                                             ; preds = %2125, %2099
  store i32 1, ptr %25, align 4
  br label %2175

2127:                                             ; preds = %2050
  %2128 = invoke noundef zeroext i1 @_ZNK7ImplRef16has_magic_paramsEv(ptr noundef nonnull align 8 dereferenceable(184) %152)
          to label %2129 unwind label %2084

2129:                                             ; preds = %2127
  br i1 %2128, label %2130, label %2147

2130:                                             ; preds = %2129
  br label %2131

2131:                                             ; preds = %2130
  %2132 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2133 unwind label %2084

2133:                                             ; preds = %2131
  br i1 %2132, label %2134, label %2144

2134:                                             ; preds = %2133
  %2135 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2135, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2137 unwind label %2084

2137:                                             ; preds = %2134
  %2138 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2136, ptr noundef @.str.108)
          to label %2139 unwind label %2084

2139:                                             ; preds = %2137
  %2140 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2138, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2141 unwind label %2084

2141:                                             ; preds = %2139
  %2142 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2140, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2143 unwind label %2084

2143:                                             ; preds = %2141
  br label %2144

2144:                                             ; preds = %2143, %2133
  br label %2145

2145:                                             ; preds = %2144
  br label %2146

2146:                                             ; preds = %2145
  store i32 1, ptr %25, align 4
  br label %2175

2147:                                             ; preds = %2129
  br label %2148

2148:                                             ; preds = %2147
  %2149 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2150 unwind label %2084

2150:                                             ; preds = %2148
  br i1 %2149, label %2151, label %2169

2151:                                             ; preds = %2150
  %2152 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2152, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2154 unwind label %2084

2154:                                             ; preds = %2151
  %2155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2153, ptr noundef @.str.109)
          to label %2156 unwind label %2084

2156:                                             ; preds = %2154
  %2157 = load ptr, ptr %17, align 8, !tbaa !5
  %2158 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2157, i32 0, i32 0
  %2159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %2155, ptr noundef nonnull align 8 dereferenceable(88) %2158)
          to label %2160 unwind label %2084

2160:                                             ; preds = %2156
  %2161 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2159, ptr noundef @.str.1)
          to label %2162 unwind label %2084

2162:                                             ; preds = %2160
  %2163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2161, ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %2164 unwind label %2084

2164:                                             ; preds = %2162
  %2165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2163, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2166 unwind label %2084

2166:                                             ; preds = %2164
  %2167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2165, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2168 unwind label %2084

2168:                                             ; preds = %2166
  br label %2169

2169:                                             ; preds = %2168, %2150
  br label %2170

2170:                                             ; preds = %2169
  br label %2171

2171:                                             ; preds = %2170
  %2172 = load ptr, ptr %9, align 8, !tbaa !5
  %2173 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2172, ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %2174 unwind label %2084

2174:                                             ; preds = %2171
  store i8 1, ptr %107, align 1, !tbaa !10
  store i32 0, ptr %25, align 4
  br label %2175

2175:                                             ; preds = %2174, %2146, %2126
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #9
  %2176 = load i32, ptr %25, align 4
  switch i32 %2176, label %2516 [
    i32 0, label %2177
  ]

2177:                                             ; preds = %2175
  br label %2180

2178:                                             ; preds = %2108, %2084, %2083
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %158) #9
  br label %2179

2179:                                             ; preds = %2178, %2071
  call void @llvm.lifetime.end.p0(i64 8, ptr %158) #9
  br label %2522

2180:                                             ; preds = %2177
  br label %2181

2181:                                             ; preds = %2180, %1981
  br label %2182

2182:                                             ; preds = %2181, %1974, %1969
  %2183 = load i8, ptr %107, align 1, !tbaa !10, !range !12, !noundef !13
  %2184 = trunc i8 %2183 to i1
  br i1 %2184, label %2185, label %2193

2185:                                             ; preds = %2182
  %2186 = load ptr, ptr %8, align 8, !tbaa !5
  %2187 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %162, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %2188 = getelementptr inbounds { ptr, ptr }, ptr %162, i32 0, i32 0
  %2189 = load ptr, ptr %2188, align 8
  %2190 = getelementptr inbounds { ptr, ptr }, ptr %162, i32 0, i32 1
  %2191 = load ptr, ptr %2190, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %2186, ptr noundef nonnull align 8 dereferenceable(8) %2187, ptr %2189, ptr %2191)
          to label %2192 unwind label %1957

2192:                                             ; preds = %2185
  store i32 1, ptr %25, align 4
  br label %2516

2193:                                             ; preds = %2182
  %2194 = load i8, ptr %108, align 1, !tbaa !10, !range !12, !noundef !13
  %2195 = trunc i8 %2194 to i1
  br i1 %2195, label %2196, label %2430

2196:                                             ; preds = %2193
  %2197 = load i32, ptr %109, align 4, !tbaa !119
  switch i32 %2197, label %2429 [
    i32 0, label %2198
    i32 2, label %2408
    i32 1, label %2409
  ]

2198:                                             ; preds = %2196
  br label %2199

2199:                                             ; preds = %2198
  %2200 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2201 unwind label %1957

2201:                                             ; preds = %2199
  br i1 %2200, label %2202, label %2217

2202:                                             ; preds = %2201
  %2203 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2203, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2205 unwind label %1957

2205:                                             ; preds = %2202
  %2206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2204, ptr noundef @.str.110)
          to label %2207 unwind label %1957

2207:                                             ; preds = %2205
  %2208 = load ptr, ptr %9, align 8, !tbaa !5
  %2209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2206, ptr noundef nonnull align 8 dereferenceable(8) %2208)
          to label %2210 unwind label %1957

2210:                                             ; preds = %2207
  %2211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2209, ptr noundef @.str.111)
          to label %2212 unwind label %1957

2212:                                             ; preds = %2210
  %2213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2211, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2214 unwind label %1957

2214:                                             ; preds = %2212
  %2215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2213, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2216 unwind label %1957

2216:                                             ; preds = %2214
  br label %2217

2217:                                             ; preds = %2216, %2201
  br label %2218

2218:                                             ; preds = %2217
  br label %2219

2219:                                             ; preds = %2218
  call void @llvm.lifetime.start.p0(i64 16, ptr %163) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %163)
          to label %2220 unwind label %2248

2220:                                             ; preds = %2219
  %2221 = load ptr, ptr %9, align 8, !tbaa !5
  %2222 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2221)
          to label %2223 unwind label %2252

2223:                                             ; preds = %2220
  %2224 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %2222)
          to label %2225 unwind label %2252

2225:                                             ; preds = %2223
  %2226 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2224, i32 0, i32 1
  %2227 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %2226, ptr noundef nonnull align 8 dereferenceable(16) %163)
          to label %2228 unwind label %2252

2228:                                             ; preds = %2225
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #9
  br label %2229

2229:                                             ; preds = %2228
  %2230 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %166) #9
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %165, ptr noundef nonnull align 1 dereferenceable(1) %166) #9
  %2231 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %2230, ptr noundef %165)
          to label %2232 unwind label %2257

2232:                                             ; preds = %2229
  br i1 %2231, label %2237, label %2233

2233:                                             ; preds = %2232
  %2234 = load ptr, ptr %9, align 8, !tbaa !5
  %2235 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %2234, i1 noundef zeroext false)
          to label %2236 unwind label %2257

2236:                                             ; preds = %2233
  br label %2237

2237:                                             ; preds = %2236, %2232
  %2238 = phi i1 [ true, %2232 ], [ %2235, %2236 ]
  %2239 = xor i1 %2238, true
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #9
  br i1 %2239, label %2240, label %2274

2240:                                             ; preds = %2237
  call void @llvm.lifetime.start.p0(i64 8, ptr %167) #9
  %2241 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef nonnull align 8 dereferenceable(8) %2241)
          to label %2242 unwind label %2261

2242:                                             ; preds = %2240
  call void @llvm.lifetime.start.p0(i64 8, ptr %169) #9
  %2243 = getelementptr inbounds %class.anon.544, ptr %169, i32 0, i32 0
  %2244 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %2244, ptr %2243, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %168, ptr noundef nonnull align 8 dereferenceable(8) %169) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %167, ptr noundef %168)
          to label %2245 unwind label %2265

2245:                                             ; preds = %2242
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #9
  %2246 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %2246, ptr noundef @.str.8)
          to label %2247 unwind label %2270

2247:                                             ; preds = %2245
  invoke void @__cxa_throw(ptr %2246, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %2535 unwind label %1957

2248:                                             ; preds = %2219
  %2249 = landingpad { ptr, i32 }
          cleanup
  %2250 = extractvalue { ptr, i32 } %2249, 0
  store ptr %2250, ptr %15, align 8
  %2251 = extractvalue { ptr, i32 } %2249, 1
  store i32 %2251, ptr %16, align 4
  br label %2256

2252:                                             ; preds = %2225, %2223, %2220
  %2253 = landingpad { ptr, i32 }
          cleanup
  %2254 = extractvalue { ptr, i32 } %2253, 0
  store ptr %2254, ptr %15, align 8
  %2255 = extractvalue { ptr, i32 } %2253, 1
  store i32 %2255, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %163) #9
  br label %2256

2256:                                             ; preds = %2252, %2248
  call void @llvm.lifetime.end.p0(i64 16, ptr %163) #9
  br label %2522

2257:                                             ; preds = %2233, %2229
  %2258 = landingpad { ptr, i32 }
          cleanup
  %2259 = extractvalue { ptr, i32 } %2258, 0
  store ptr %2259, ptr %15, align 8
  %2260 = extractvalue { ptr, i32 } %2258, 1
  store i32 %2260, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %165) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %166) #9
  br label %2522

2261:                                             ; preds = %2240
  %2262 = landingpad { ptr, i32 }
          cleanup
  %2263 = extractvalue { ptr, i32 } %2262, 0
  store ptr %2263, ptr %15, align 8
  %2264 = extractvalue { ptr, i32 } %2262, 1
  store i32 %2264, ptr %16, align 4
  br label %2269

2265:                                             ; preds = %2242
  %2266 = landingpad { ptr, i32 }
          cleanup
  %2267 = extractvalue { ptr, i32 } %2266, 0
  store ptr %2267, ptr %15, align 8
  %2268 = extractvalue { ptr, i32 } %2266, 1
  store i32 %2268, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %168) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %169) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %167) #9
  br label %2269

2269:                                             ; preds = %2265, %2261
  call void @llvm.lifetime.end.p0(i64 8, ptr %167) #9
  br label %2522

2270:                                             ; preds = %2245
  %2271 = landingpad { ptr, i32 }
          cleanup
  %2272 = extractvalue { ptr, i32 } %2271, 0
  store ptr %2272, ptr %15, align 8
  %2273 = extractvalue { ptr, i32 } %2271, 1
  store i32 %2273, ptr %16, align 4
  call void @__cxa_free_exception(ptr %2246) #9
  br label %2522

2274:                                             ; preds = %2237
  br label %2275

2275:                                             ; preds = %2274
  br label %2276

2276:                                             ; preds = %2275
  br label %2277

2277:                                             ; preds = %2276
  %2278 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2279 unwind label %1957

2279:                                             ; preds = %2277
  br i1 %2278, label %2280, label %2296

2280:                                             ; preds = %2279
  %2281 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2281, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2283 unwind label %1957

2283:                                             ; preds = %2280
  %2284 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2282, ptr noundef @.str.3)
          to label %2285 unwind label %1957

2285:                                             ; preds = %2283
  %2286 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  %2287 = call noundef i64 @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %2286) #9
  %2288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %2284, i64 noundef %2287)
          to label %2289 unwind label %1957

2289:                                             ; preds = %2285
  %2290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2288, ptr noundef @.str.112)
          to label %2291 unwind label %1957

2291:                                             ; preds = %2289
  %2292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2290, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2293 unwind label %1957

2293:                                             ; preds = %2291
  %2294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2292, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2295 unwind label %1957

2295:                                             ; preds = %2293
  br label %2296

2296:                                             ; preds = %2295, %2279
  br label %2297

2297:                                             ; preds = %2296
  br label %2298

2298:                                             ; preds = %2297
  call void @llvm.lifetime.start.p0(i64 8, ptr %170) #9
  %2299 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  store ptr %2299, ptr %170, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %171) #9
  %2300 = load ptr, ptr %170, align 8, !tbaa !5
  %2301 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %2300) #9
  %2302 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %171, i32 0, i32 0
  store ptr %2301, ptr %2302, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %172) #9
  %2303 = load ptr, ptr %170, align 8, !tbaa !5
  %2304 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %2303) #9
  %2305 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %172, i32 0, i32 0
  store ptr %2304, ptr %2305, align 8
  br label %2306

2306:                                             ; preds = %2341, %2298
  %2307 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %171, ptr noundef nonnull align 8 dereferenceable(8) %172) #9
  br i1 %2307, label %2309, label %2308

2308:                                             ; preds = %2306
  store i32 108, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #9
  br label %2343

2309:                                             ; preds = %2306
  call void @llvm.lifetime.start.p0(i64 8, ptr %173) #9
  %2310 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %171) #9
  store ptr %2310, ptr %173, align 8, !tbaa !5
  br label %2311

2311:                                             ; preds = %2309
  %2312 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2313 unwind label %2334

2313:                                             ; preds = %2311
  br i1 %2312, label %2314, label %2338

2314:                                             ; preds = %2313
  %2315 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2315, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2317 unwind label %2334

2317:                                             ; preds = %2314
  %2318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2316, ptr noundef @.str.113)
          to label %2319 unwind label %2334

2319:                                             ; preds = %2317
  %2320 = load ptr, ptr %173, align 8, !tbaa !5
  %2321 = getelementptr inbounds %"struct.std::pair.535", ptr %2320, i32 0, i32 0
  %2322 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2318, ptr noundef nonnull align 8 dereferenceable(8) %2321)
          to label %2323 unwind label %2334

2323:                                             ; preds = %2319
  %2324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2322, ptr noundef @.str.1)
          to label %2325 unwind label %2334

2325:                                             ; preds = %2323
  %2326 = load ptr, ptr %173, align 8, !tbaa !5
  %2327 = getelementptr inbounds %"struct.std::pair.535", ptr %2326, i32 0, i32 1
  %2328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN18TraitResolveCommon14CachedEqualityE(ptr noundef nonnull align 8 dereferenceable(8) %2324, ptr noundef nonnull align 8 dereferenceable(104) %2327)
          to label %2329 unwind label %2334

2329:                                             ; preds = %2325
  %2330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2328, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2331 unwind label %2334

2331:                                             ; preds = %2329
  %2332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2330, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2333 unwind label %2334

2333:                                             ; preds = %2331
  br label %2338

2334:                                             ; preds = %2331, %2329, %2325, %2323, %2319, %2317, %2314, %2311
  %2335 = landingpad { ptr, i32 }
          cleanup
  %2336 = extractvalue { ptr, i32 } %2335, 0
  store ptr %2336, ptr %15, align 8
  %2337 = extractvalue { ptr, i32 } %2335, 1
  store i32 %2337, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %172) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %171) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %170) #9
  br label %2522

2338:                                             ; preds = %2333, %2313
  br label %2339

2339:                                             ; preds = %2338
  br label %2340

2340:                                             ; preds = %2339
  call void @llvm.lifetime.end.p0(i64 8, ptr %173) #9
  br label %2341

2341:                                             ; preds = %2340
  %2342 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %171) #9
  br label %2306

2343:                                             ; preds = %2308
  call void @llvm.lifetime.start.p0(i64 8, ptr %174) #9
  %2344 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  %2345 = load ptr, ptr %9, align 8, !tbaa !5
  %2346 = invoke ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %2344, ptr noundef nonnull align 8 dereferenceable(8) %2345)
          to label %2347 unwind label %2376

2347:                                             ; preds = %2343
  %2348 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %174, i32 0, i32 0
  store ptr %2346, ptr %2348, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %175) #9
  %2349 = getelementptr inbounds %struct.TraitResolveCommon, ptr %182, i32 0, i32 3
  %2350 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %2349) #9
  %2351 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator.534", ptr %175, i32 0, i32 0
  store ptr %2350, ptr %2351, align 8
  %2352 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %174, ptr noundef nonnull align 8 dereferenceable(8) %175) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %175) #9
  br i1 %2352, label %2353, label %2399

2353:                                             ; preds = %2347
  br label %2354

2354:                                             ; preds = %2353
  %2355 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2356 unwind label %2376

2356:                                             ; preds = %2354
  br i1 %2355, label %2357, label %2380

2357:                                             ; preds = %2356
  %2358 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2358, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2360 unwind label %2376

2360:                                             ; preds = %2357
  %2361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2359, ptr noundef @.str.114)
          to label %2362 unwind label %2376

2362:                                             ; preds = %2360
  %2363 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %174) #9
  %2364 = getelementptr inbounds %"struct.std::pair.535", ptr %2363, i32 0, i32 1
  %2365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN18TraitResolveCommon14CachedEqualityE(ptr noundef nonnull align 8 dereferenceable(8) %2361, ptr noundef nonnull align 8 dereferenceable(104) %2364)
          to label %2366 unwind label %2376

2366:                                             ; preds = %2362
  %2367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2365, ptr noundef @.str.115)
          to label %2368 unwind label %2376

2368:                                             ; preds = %2366
  %2369 = load ptr, ptr %9, align 8, !tbaa !5
  %2370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2367, ptr noundef nonnull align 8 dereferenceable(8) %2369)
          to label %2371 unwind label %2376

2371:                                             ; preds = %2368
  %2372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2370, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2373 unwind label %2376

2373:                                             ; preds = %2371
  %2374 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2372, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2375 unwind label %2376

2375:                                             ; preds = %2373
  br label %2380

2376:                                             ; preds = %2399, %2373, %2371, %2368, %2366, %2362, %2360, %2357, %2354, %2343
  %2377 = landingpad { ptr, i32 }
          cleanup
  %2378 = extractvalue { ptr, i32 } %2377, 0
  store ptr %2378, ptr %15, align 8
  %2379 = extractvalue { ptr, i32 } %2377, 1
  store i32 %2379, ptr %16, align 4
  br label %2407

2380:                                             ; preds = %2375, %2356
  br label %2381

2381:                                             ; preds = %2380
  br label %2382

2382:                                             ; preds = %2381
  call void @llvm.lifetime.start.p0(i64 8, ptr %176) #9
  %2383 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %174) #9
  %2384 = getelementptr inbounds %"struct.std::pair.535", ptr %2383, i32 0, i32 1
  %2385 = getelementptr inbounds %"struct.TraitResolveCommon::CachedEquality", ptr %2384, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %176, ptr noundef nonnull align 8 dereferenceable(8) %2385)
          to label %2386 unwind label %2390

2386:                                             ; preds = %2382
  %2387 = load ptr, ptr %9, align 8, !tbaa !5
  %2388 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2387, ptr noundef nonnull align 8 dereferenceable(8) %176)
          to label %2389 unwind label %2394

2389:                                             ; preds = %2386
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #9
  br label %2399

2390:                                             ; preds = %2382
  %2391 = landingpad { ptr, i32 }
          cleanup
  %2392 = extractvalue { ptr, i32 } %2391, 0
  store ptr %2392, ptr %15, align 8
  %2393 = extractvalue { ptr, i32 } %2391, 1
  store i32 %2393, ptr %16, align 4
  br label %2398

2394:                                             ; preds = %2386
  %2395 = landingpad { ptr, i32 }
          cleanup
  %2396 = extractvalue { ptr, i32 } %2395, 0
  store ptr %2396, ptr %15, align 8
  %2397 = extractvalue { ptr, i32 } %2395, 1
  store i32 %2397, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %176) #9
  br label %2398

2398:                                             ; preds = %2394, %2390
  call void @llvm.lifetime.end.p0(i64 8, ptr %176) #9
  br label %2407

2399:                                             ; preds = %2389, %2347
  %2400 = load ptr, ptr %8, align 8, !tbaa !5
  %2401 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %177, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !9
  %2402 = getelementptr inbounds { ptr, ptr }, ptr %177, i32 0, i32 0
  %2403 = load ptr, ptr %2402, align 8
  %2404 = getelementptr inbounds { ptr, ptr }, ptr %177, i32 0, i32 1
  %2405 = load ptr, ptr %2404, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %182, ptr noundef nonnull align 8 dereferenceable(8) %2400, ptr noundef nonnull align 8 dereferenceable(8) %2401, ptr %2403, ptr %2405)
          to label %2406 unwind label %2376

2406:                                             ; preds = %2399
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #9
  br label %2429

2407:                                             ; preds = %2398, %2376
  call void @llvm.lifetime.end.p0(i64 8, ptr %174) #9
  br label %2522

2408:                                             ; preds = %2196
  call void @__assert_fail(ptr noundef @.str.116, ptr noundef @.str.7, i32 noundef 2803, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #11
  unreachable

2409:                                             ; preds = %2196
  br label %2410

2410:                                             ; preds = %2409
  %2411 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2412 unwind label %1957

2412:                                             ; preds = %2410
  br i1 %2411, label %2413, label %2426

2413:                                             ; preds = %2412
  %2414 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2414, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2416 unwind label %1957

2416:                                             ; preds = %2413
  %2417 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2415, ptr noundef @.str.117)
          to label %2418 unwind label %1957

2418:                                             ; preds = %2416
  %2419 = load ptr, ptr %9, align 8, !tbaa !5
  %2420 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2417, ptr noundef nonnull align 8 dereferenceable(8) %2419)
          to label %2421 unwind label %1957

2421:                                             ; preds = %2418
  %2422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2420, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2423 unwind label %1957

2423:                                             ; preds = %2421
  %2424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2422, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2425 unwind label %1957

2425:                                             ; preds = %2423
  br label %2426

2426:                                             ; preds = %2425, %2412
  br label %2427

2427:                                             ; preds = %2426
  br label %2428

2428:                                             ; preds = %2427
  br label %2429

2429:                                             ; preds = %2428, %2406, %2196
  store i32 1, ptr %25, align 4
  br label %2516

2430:                                             ; preds = %2193
  %2431 = getelementptr inbounds %class.TraitResolution, ptr %182, i32 0, i32 2
  %2432 = load ptr, ptr %2431, align 8, !tbaa !73
  %2433 = load ptr, ptr %9, align 8, !tbaa !5
  %2434 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %2432, ptr noundef nonnull align 8 dereferenceable(8) %2433, i1 noundef zeroext false)
          to label %2435 unwind label %1957

2435:                                             ; preds = %2430
  br i1 %2434, label %2493, label %2436

2436:                                             ; preds = %2435
  br label %2437

2437:                                             ; preds = %2436
  %2438 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2439 unwind label %1957

2439:                                             ; preds = %2437
  br i1 %2438, label %2440, label %2455

2440:                                             ; preds = %2439
  %2441 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2441, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2443 unwind label %1957

2443:                                             ; preds = %2440
  %2444 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2442, ptr noundef @.str.110)
          to label %2445 unwind label %1957

2445:                                             ; preds = %2443
  %2446 = load ptr, ptr %9, align 8, !tbaa !5
  %2447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2444, ptr noundef nonnull align 8 dereferenceable(8) %2446)
          to label %2448 unwind label %1957

2448:                                             ; preds = %2445
  %2449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2447, ptr noundef @.str.111)
          to label %2450 unwind label %1957

2450:                                             ; preds = %2448
  %2451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2449, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2452 unwind label %1957

2452:                                             ; preds = %2450
  %2453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2451, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2454 unwind label %1957

2454:                                             ; preds = %2452
  br label %2455

2455:                                             ; preds = %2454, %2439
  br label %2456

2456:                                             ; preds = %2455
  br label %2457

2457:                                             ; preds = %2456
  call void @llvm.lifetime.start.p0(i64 16, ptr %178) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %178)
          to label %2458 unwind label %2481

2458:                                             ; preds = %2457
  %2459 = load ptr, ptr %17, align 8, !tbaa !5
  %2460 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %2459, i32 0, i32 1
  %2461 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %2460, ptr noundef nonnull align 8 dereferenceable(16) %178)
          to label %2462 unwind label %2485

2462:                                             ; preds = %2458
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #9
  br label %2463

2463:                                             ; preds = %2462
  %2464 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2465 unwind label %1957

2465:                                             ; preds = %2463
  br i1 %2464, label %2466, label %2490

2466:                                             ; preds = %2465
  %2467 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2468 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2467, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2469 unwind label %1957

2469:                                             ; preds = %2466
  %2470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2468, ptr noundef @.str.118)
          to label %2471 unwind label %1957

2471:                                             ; preds = %2469
  %2472 = load ptr, ptr %9, align 8, !tbaa !5
  %2473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2470, ptr noundef nonnull align 8 dereferenceable(8) %2472)
          to label %2474 unwind label %1957

2474:                                             ; preds = %2471
  %2475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2473, ptr noundef @.str.119)
          to label %2476 unwind label %1957

2476:                                             ; preds = %2474
  %2477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2475, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2478 unwind label %1957

2478:                                             ; preds = %2476
  %2479 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2477, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2480 unwind label %1957

2480:                                             ; preds = %2478
  br label %2490

2481:                                             ; preds = %2457
  %2482 = landingpad { ptr, i32 }
          cleanup
  %2483 = extractvalue { ptr, i32 } %2482, 0
  store ptr %2483, ptr %15, align 8
  %2484 = extractvalue { ptr, i32 } %2482, 1
  store i32 %2484, ptr %16, align 4
  br label %2489

2485:                                             ; preds = %2458
  %2486 = landingpad { ptr, i32 }
          cleanup
  %2487 = extractvalue { ptr, i32 } %2486, 0
  store ptr %2487, ptr %15, align 8
  %2488 = extractvalue { ptr, i32 } %2486, 1
  store i32 %2488, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %178) #9
  br label %2489

2489:                                             ; preds = %2485, %2481
  call void @llvm.lifetime.end.p0(i64 16, ptr %178) #9
  br label %2522

2490:                                             ; preds = %2480, %2465
  br label %2491

2491:                                             ; preds = %2490
  br label %2492

2492:                                             ; preds = %2491
  br label %2515

2493:                                             ; preds = %2435
  br label %2494

2494:                                             ; preds = %2493
  %2495 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %2496 unwind label %1957

2496:                                             ; preds = %2494
  br i1 %2495, label %2497, label %2512

2497:                                             ; preds = %2496
  %2498 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !14
  %2499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %2498, ptr noundef @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %2500 unwind label %1957

2500:                                             ; preds = %2497
  %2501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2499, ptr noundef @.str.118)
          to label %2502 unwind label %1957

2502:                                             ; preds = %2500
  %2503 = load ptr, ptr %9, align 8, !tbaa !5
  %2504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2501, ptr noundef nonnull align 8 dereferenceable(8) %2503)
          to label %2505 unwind label %1957

2505:                                             ; preds = %2502
  %2506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %2504, ptr noundef @.str.120)
          to label %2507 unwind label %1957

2507:                                             ; preds = %2505
  %2508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %2506, ptr noundef @_ZSt3decRSt8ios_base)
          to label %2509 unwind label %1957

2509:                                             ; preds = %2507
  %2510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %2508, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %2511 unwind label %1957

2511:                                             ; preds = %2509
  br label %2512

2512:                                             ; preds = %2511, %2496
  br label %2513

2513:                                             ; preds = %2512
  br label %2514

2514:                                             ; preds = %2513
  br label %2515

2515:                                             ; preds = %2514, %2492
  store i32 0, ptr %25, align 4
  br label %2516

2516:                                             ; preds = %2515, %2429, %2192, %2175, %2039
  call void @llvm.lifetime.end.p0(i64 72, ptr %153) #9
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %152) #9
  call void @llvm.lifetime.end.p0(i64 184, ptr %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #9
  br label %2517

2517:                                             ; preds = %2516, %1890, %1873, %1447
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  br label %2518

2518:                                             ; preds = %2517, %1323
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %2519

2519:                                             ; preds = %2518, %373, %295, %278
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #9
  %2520 = load i32, ptr %25, align 4
  switch i32 %2520, label %2535 [
    i32 0, label %2521
    i32 1, label %2521
  ]

2521:                                             ; preds = %2519, %2519
  ret void

2522:                                             ; preds = %2489, %2407, %2334, %2270, %2269, %2257, %2256, %2179, %2021, %1965, %1961, %1957
  call void @llvm.lifetime.end.p0(i64 72, ptr %153) #9
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %152) #9
  br label %2523

2523:                                             ; preds = %2522, %1953
  call void @llvm.lifetime.end.p0(i64 184, ptr %152) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %151) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %150) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %148) #9
  br label %2524

2524:                                             ; preds = %2523, %1900, %1891, %1434, %1407, %1376
  call void @llvm.lifetime.end.p0(i64 4, ptr %109) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #9
  br label %2525

2525:                                             ; preds = %2524, %1320, %421, %420, %408
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #9
  br label %2526

2526:                                             ; preds = %2525, %404
  call void @llvm.lifetime.end.p0(i64 32, ptr %34) #9
  br label %2527

2527:                                             ; preds = %2526, %403, %261, %232
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %2528

2528:                                             ; preds = %2527, %228
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #9
  br label %2529

2529:                                             ; preds = %2528, %224
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #9
  br label %2530

2530:                                             ; preds = %2529
  %2531 = load ptr, ptr %15, align 8
  %2532 = load i32, ptr %16, align 4
  %2533 = insertvalue { ptr, i32 } poison, ptr %2531, 0
  %2534 = insertvalue { ptr, i32 } %2533, i32 %2532, 1
  resume { ptr, i32 } %2534

2535:                                             ; preds = %2519, %2247, %1517, %900, %733, %627, %521, %402
  unreachable
}

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

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

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

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

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

declare noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #1

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) #1

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(32) ptr @_ZL33monomorphise_genericpath_with_optRK4SpanRN3HIR11GenericPathERKS3_RK13Monomorphiserb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext) #2

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK7ImplRef16has_magic_paramsEv(ptr noundef nonnull align 8 dereferenceable(184)) #1

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

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

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

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

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

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

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

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

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

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

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

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

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


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = 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.517 = type { ptr }
%class.anon.518 = type { ptr }
%class.anon.519 = type { i8 }
%"class.std::function.521" = type { %"class.std::_Function_base", ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%struct.Span = type { ptr }
%class.anon.524 = type { ptr }
%class.anon.525 = type { ptr }
%class.anon.526 = type { ptr }
%class.anon.527 = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.528 = type { ptr, ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.529 = type { ptr, ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.154" = type { ptr }
%"struct.std::_Rb_tree_const_iterator.530" = type { ptr }
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.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.anon.533 = type { ptr, ptr, ptr, ptr, ptr }
%"struct.std::_Rb_tree_const_iterator.534" = type { ptr }
%"class.std::function.221" = type { %"class.std::_Function_base", ptr }
%class.anon.537 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.538 = 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.539 = type { ptr, ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.540 = 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.541 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.542 = type { i8 }
%class.anon.544 = type { ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.3 = external hidden unnamed_addr constant [3 x i8], align 1
@.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
@.str.53 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [43 x i8], align 1
@.str.93 = external hidden unnamed_addr constant [22 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [134 x i8], align 1
@.str.94 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.95 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.96 = external hidden unnamed_addr constant [35 x i8], align 1
@.str.97 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.98 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.99 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.100 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.101 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.102 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.103 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.104 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.105 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.106 = external hidden unnamed_addr constant [44 x i8], align 1
@.str.107 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.108 = external hidden unnamed_addr constant [55 x i8], align 1
@.str.109 = external hidden unnamed_addr constant [23 x i8], align 1
@.str.110 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.111 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.112 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.113 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.114 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.115 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.116 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.117 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.118 = external hidden unnamed_addr constant [38 x i8], align 1
@.str.119 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.120 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

; Function Attrs: 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 #2

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

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

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

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

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

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

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

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

; Function Attrs: 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 #1

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

; 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 #5 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 #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution21iterate_bounds_traitsERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathESt8functionIFbNS3_7CompareES6_RKNS3_11GenericPathERKN18TraitResolveCommon11CachedBoundEEE(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(8), ptr noundef) local_unnamed_addr #3 align 2

declare void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #1

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) local_unnamed_addr #3 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr, ptr) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %class.TraceLog, align 8
  %7 = alloca %"class.std::function", align 8
  %8 = alloca %class.anon.517, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.518, align 8
  %11 = alloca %class.anon.519, align 1
  %12 = alloca %"class.std::function.521", align 8
  %13 = alloca %"class.std::function.521", align 8
  %14 = alloca %"class.HIR::GenericPath", align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.524, align 8
  %18 = alloca %"class.HIR::TypeRef", align 8
  %19 = alloca %struct.Span, align 8
  %20 = alloca %"class.std::function", align 8
  %21 = alloca %class.anon.525, align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca %"class.HIR::TypeRef", align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.526, align 8
  %27 = alloca %"class.HIR::TypeRef", align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.527, align 8
  %31 = alloca i32, align 4
  %32 = alloca i32, align 4
  %33 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %34 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %35 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %36 = alloca ptr, align 8
  %37 = alloca %struct.Span, align 8
  %38 = alloca %"class.std::function", align 8
  %39 = alloca %class.anon.528, align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.std::function.229", align 8
  %42 = alloca %class.anon.529, align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %45 = alloca i32, align 4
  %46 = alloca i32, align 4
  %47 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %48 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %49 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %50 = alloca %"class.HIR::TypeRef", align 8
  %51 = alloca %"class.HIR::TypePathBinding", align 8
  %52 = alloca %"struct.std::_Rb_tree_const_iterator.530", align 8
  %53 = alloca %"struct.std::_Rb_tree_const_iterator.530", align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %56 = alloca %"class.HIR::TypeRef", align 8
  %57 = alloca %"class.HIR::TraitPath", align 8
  %58 = alloca %"class.std::function.229", align 8
  %59 = alloca %class.anon.533, align 8
  %60 = alloca i8, align 1
  %61 = alloca i32, align 4
  %62 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %63 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"class.std::function.221", align 8
  %66 = alloca %class.anon.537, align 8
  %67 = alloca %"class.HIR::GenericPath", align 8
  %68 = alloca %struct.Span, align 8
  %69 = alloca %"class.std::function", align 8
  %70 = alloca %class.anon.538, align 8
  %71 = alloca %struct.MonomorphStatePtr, align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.154", align 8
  %74 = alloca %"class.HIR::GenericPath", align 8
  %75 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %76 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %77 = alloca %"class.HIR::TypeRef", align 8
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca %"class.std::function.229", align 8
  %80 = alloca %class.anon.539, align 8
  %81 = alloca %"class.std::function.444", align 8
  %82 = alloca %class.anon.540, align 8
  %83 = alloca i8, align 1
  %84 = alloca i32, align 4
  %85 = alloca i8, align 1
  %86 = alloca i8, align 1
  %87 = alloca %struct.ImplRef, align 8
  %88 = alloca %class.anon.541, align 8
  %89 = alloca %"class.std::function.444", align 8
  %90 = alloca %"class.std::function.444", align 8
  %91 = alloca %"class.HIR::TypePathBinding", align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::TypePathBinding", align 8
  %95 = alloca %"class.HIR::TypePathBinding", align 8
  %96 = alloca %"class.std::function.521", align 8
  %97 = alloca %class.anon.542, align 1
  %98 = alloca %struct.Span, align 8
  %99 = alloca %"class.std::function", align 8
  %100 = alloca %class.anon.544, align 8
  %101 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %102 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %103 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %104 = alloca %"struct.std::_Rb_tree_const_iterator.534", align 8
  %105 = alloca %"class.HIR::TypeRef", align 8
  %106 = alloca %"class.HIR::TypePathBinding", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %6) #8
  %107 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %108 = select i1 %107, ptr @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  store ptr %2, ptr %8, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr %2, ptr %10, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %6, ptr noundef %108, ptr noundef nonnull %7, ptr noundef nonnull %9)
          to label %109 unwind label %121

109:                                              ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %110 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %111 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %110)
  %112 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %111)
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr %3, ptr %4)
          to label %113 unwind label %123

113:                                              ; preds = %109
  %114 = getelementptr inbounds i8, ptr %112, i64 8
  %115 = getelementptr inbounds i8, ptr %112, i64 16
  %116 = getelementptr inbounds i8, ptr %112, i64 24
  %117 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %118 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %.not668 = icmp eq ptr %117, %118
  br i1 %.not668, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %125, %113
  %119 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %120 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %119)
  br i1 %120, label %129, label %134

121:                                              ; preds = %5
  %122 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %1112

123:                                              ; preds = %129, %109
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %1111

.lr.ph:                                           ; preds = %113, %125
  %.0396669 = phi ptr [ %126, %125 ], [ %117, %113 ]
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.0396669, ptr %3, ptr %4)
          to label %125 unwind label %127

125:                                              ; preds = %.lr.ph
  %126 = getelementptr inbounds i8, ptr %.0396669, i64 8
  %.not = icmp eq ptr %126, %118
  br i1 %.not, label %._crit_edge, label %.lr.ph

127:                                              ; preds = %.lr.ph
  %128 = landingpad { ptr, i32 }
          cleanup
  br label %1111

129:                                              ; preds = %._crit_edge
  %130 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %131 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %130)
  %132 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %131)
          to label %133 unwind label %123

133:                                              ; preds = %129
  br i1 %132, label %134, label %1105

134:                                              ; preds = %133, %._crit_edge
  %135 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %136 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %135)
  br i1 %136, label %137, label %141

137:                                              ; preds = %134
  %138 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %139 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %138)
  %140 = call noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %139)
  br i1 %140, label %1105, label %141

141:                                              ; preds = %137, %134
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %11) #8
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  %142 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %12)
          to label %143 unwind label %146

143:                                              ; preds = %141
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  %not. = xor i1 %142, true
  %144 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %145 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %.not455670 = icmp eq ptr %144, %145
  br i1 %.not455670, label %._crit_edge675, label %.lr.ph674

146:                                              ; preds = %141
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  br label %182

._crit_edge675:                                   ; preds = %149, %143
  %.1427.lcssa = phi i1 [ %not., %143 ], [ %spec.select540, %149 ]
  br i1 %.1427.lcssa, label %153, label %168

.lr.ph674:                                        ; preds = %143, %149
  %.1427672 = phi i1 [ %spec.select540, %149 ], [ %not., %143 ]
  %.0429671 = phi ptr [ %150, %149 ], [ %144, %143 ]
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %11) #8
  %148 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %.0429671, ptr noundef nonnull %13)
          to label %149 unwind label %151

149:                                              ; preds = %.lr.ph674
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  %not.843 = xor i1 %148, true
  %spec.select540 = select i1 %not.843, i1 true, i1 %.1427672
  %150 = getelementptr inbounds i8, ptr %.0429671, i64 8
  %.not455 = icmp eq ptr %150, %145
  br i1 %.not455, label %._crit_edge675, label %.lr.ph674

151:                                              ; preds = %.lr.ph674
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  br label %182

153:                                              ; preds = %._crit_edge675
  %154 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %155 unwind label %165

155:                                              ; preds = %153
  br i1 %154, label %156, label %167

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

159:                                              ; preds = %156
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %158, ptr noundef nonnull @.str.93)
          to label %161 unwind label %165

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

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

165:                                              ; preds = %163, %161, %159, %156, %153
  %166 = landingpad { ptr, i32 }
          cleanup
  br label %182

167:                                              ; preds = %155, %163
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  br label %1105

168:                                              ; preds = %._crit_edge675
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %169 unwind label %183

169:                                              ; preds = %168
  %170 = load ptr, ptr %0, align 8, !tbaa !11
  %171 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %170, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %172 unwind label %185

172:                                              ; preds = %169
  %173 = getelementptr inbounds i8, ptr %112, i64 40
  %174 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %173)
  %175 = invoke noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(400) %171, ptr noundef %174, ptr noundef nonnull align 8 dereferenceable(32) %14)
          to label %176 unwind label %185

176:                                              ; preds = %172
  br i1 %175, label %.lr.ph831, label %177

177:                                              ; preds = %176
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %178 unwind label %187

178:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store ptr %112, ptr %17, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull %16)
          to label %179 unwind label %189

179:                                              ; preds = %178
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  %180 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %180, ptr noundef nonnull @.str.8)
          to label %181 unwind label %192

181:                                              ; preds = %179
  invoke void @__cxa_throw(ptr nonnull %180, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %185

182:                                              ; preds = %165, %151, %146
  %.pn535 = phi { ptr, i32 } [ %152, %151 ], [ %166, %165 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %11) #8
  br label %1111

183:                                              ; preds = %168
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %1110

185:                                              ; preds = %181, %172, %169
  %186 = landingpad { ptr, i32 }
          cleanup
  br label %1109

187:                                              ; preds = %177
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %191

189:                                              ; preds = %178
  %190 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %191

191:                                              ; preds = %189, %187
  %.pn = phi { ptr, i32 } [ %190, %189 ], [ %188, %187 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %1109

192:                                              ; preds = %179
  %193 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %180) #8
  br label %1109

.critedge571.loopexit:                            ; preds = %377, %251, %229, %.lr.ph831, %283, %284, %295, %.critedge565
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %60) #8
  store i8 0, ptr %60, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %61) #8
  store i32 0, ptr %61, align 4, !tbaa !32
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #8
  %194 = getelementptr inbounds i8, ptr %0, i64 24
  %195 = invoke ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %194, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %493 unwind label %508

.lr.ph831:                                        ; preds = %176
  %196 = getelementptr inbounds i8, ptr %14, i64 16
  %197 = getelementptr inbounds i8, ptr %0, i64 224
  %198 = getelementptr inbounds i8, ptr %59, i64 8
  %199 = getelementptr inbounds i8, ptr %59, i64 16
  %200 = getelementptr inbounds i8, ptr %59, i64 24
  %201 = getelementptr inbounds i8, ptr %59, i64 32
  %202 = getelementptr inbounds i8, ptr %14, i64 8
  %203 = getelementptr inbounds i8, ptr %111, i64 88
  %204 = getelementptr inbounds i8, ptr %42, i64 8
  %205 = getelementptr inbounds i8, ptr %42, i64 16
  %206 = getelementptr inbounds i8, ptr %42, i64 24
  %207 = getelementptr inbounds i8, ptr %42, i64 32
  %208 = getelementptr inbounds i8, ptr %0, i64 144
  %209 = getelementptr inbounds i8, ptr %0, i64 152
  %210 = getelementptr inbounds i8, ptr %0, i64 160
  %211 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %212 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  switch i32 %212, label %.critedge571.loopexit [
    i32 0, label %222
    i32 15, label %.critedge542.preheader.split
    i32 16, label %.critedge546.preheader.split
    i32 14, label %.critedge550.preheader.split.split
    i32 6, label %.critedge556.preheader
    i32 7, label %.lr.ph685
  ]

.critedge550.preheader.split.split:               ; preds = %.lr.ph831
  %213 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  %214 = getelementptr inbounds i8, ptr %213, i64 104
  %215 = getelementptr inbounds i8, ptr %213, i64 96
  %216 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %214, ptr noundef nonnull @.str.80)
          to label %283 unwind label %.loopexit629.split.split

.critedge546.preheader.split:                     ; preds = %.lr.ph831
  %217 = getelementptr inbounds i8, ptr %0, i64 184
  %218 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  %219 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %251 unwind label %.loopexit624.split

.critedge542.preheader.split:                     ; preds = %.lr.ph831
  %220 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  %221 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %208)
          to label %223 unwind label %.loopexit619.split

222:                                              ; preds = %.lr.ph831
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 2333, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

.loopexit619.split:                               ; preds = %.critedge542.preheader.split, %224, %227
  %lpad.loopexit942 = landingpad { ptr, i32 }
          cleanup
  br label %1109

.loopexit.split-lp620:                            ; preds = %.split790, %241
  %lpad.loopexit.split-lp622 = landingpad { ptr, i32 }
          cleanup
  br label %1109

223:                                              ; preds = %.critedge542.preheader.split
  br i1 %221, label %.split790, label %224

224:                                              ; preds = %223
  %225 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %226 unwind label %.loopexit619.split

226:                                              ; preds = %224
  br i1 %225, label %.split790, label %227

227:                                              ; preds = %226
  %228 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %229 unwind label %.loopexit619.split

229:                                              ; preds = %227
  br i1 %228, label %.split790, label %.critedge571.loopexit, !llvm.loop !33

.split790:                                        ; preds = %223, %226, %229
  %230 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @.str.78)
          to label %231 unwind label %.loopexit.split-lp620

231:                                              ; preds = %.split790
  br i1 %230, label %232, label %237

232:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %233 = load ptr, ptr %220, align 8, !tbaa !35
  %234 = getelementptr inbounds i8, ptr %233, i64 56
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %18, ptr noundef nonnull align 8 dereferenceable(8) %234)
          to label %249 unwind label %235

235:                                              ; preds = %232
  %236 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %1109

237:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %238 unwind label %242

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  store ptr %112, ptr %21, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %19, i32 noundef 0, ptr noundef nonnull %20)
          to label %239 unwind label %244

239:                                              ; preds = %238
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  %240 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %240, ptr noundef nonnull @.str.53)
          to label %241 unwind label %247

241:                                              ; preds = %239
  invoke void @__cxa_throw(ptr nonnull %240, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %.loopexit.split-lp620

242:                                              ; preds = %237
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %246

244:                                              ; preds = %238
  %245 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %246

246:                                              ; preds = %244, %242
  %.pn489 = phi { ptr, i32 } [ %245, %244 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  br label %1109

247:                                              ; preds = %239
  %248 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %240) #8
  br label %1109

249:                                              ; preds = %232
  %250 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %18)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %select.unfold

.loopexit624.split:                               ; preds = %.critedge546.preheader.split
  %lpad.loopexit937 = landingpad { ptr, i32 }
          cleanup
  br label %1109

.loopexit.split-lp625:                            ; preds = %.split754, %261, %275
  %lpad.loopexit.split-lp627 = landingpad { ptr, i32 }
          cleanup
  br label %1109

251:                                              ; preds = %.critedge546.preheader.split
  br i1 %219, label %.split754, label %.critedge571.loopexit, !llvm.loop !37

.split754:                                        ; preds = %251
  %252 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @.str.64)
          to label %253 unwind label %.loopexit.split-lp625

253:                                              ; preds = %.split754
  br i1 %252, label %254, label %261

254:                                              ; preds = %253
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %255 = load ptr, ptr %218, align 8, !tbaa !38
  %256 = getelementptr inbounds i8, ptr %255, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %256)
          to label %257 unwind label %259

257:                                              ; preds = %254
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %22)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %select.unfold

259:                                              ; preds = %254
  %260 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %1109

261:                                              ; preds = %253
  %262 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @.str.63)
          to label %263 unwind label %.loopexit.split-lp625

263:                                              ; preds = %261
  br i1 %262, label %264, label %271

264:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %265 = load ptr, ptr %218, align 8, !tbaa !38
  %266 = getelementptr inbounds i8, ptr %265, i64 48
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %23, ptr noundef nonnull align 8 dereferenceable(8) %266)
          to label %267 unwind label %269

267:                                              ; preds = %264
  %268 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %23)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %select.unfold

269:                                              ; preds = %264
  %270 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %1109

271:                                              ; preds = %263
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %272 unwind label %276

272:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  store ptr %112, ptr %26, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, i32 noundef 0, ptr noundef nonnull %25)
          to label %273 unwind label %278

273:                                              ; preds = %272
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  %274 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %274, ptr noundef nonnull @.str.53)
          to label %275 unwind label %281

275:                                              ; preds = %273
  invoke void @__cxa_throw(ptr nonnull %274, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %.loopexit.split-lp625

276:                                              ; preds = %271
  %277 = landingpad { ptr, i32 }
          cleanup
  br label %280

278:                                              ; preds = %272
  %279 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %280

280:                                              ; preds = %278, %276
  %.pn485 = phi { ptr, i32 } [ %279, %278 ], [ %277, %276 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %1109

281:                                              ; preds = %273
  %282 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %274) #8
  br label %1109

.loopexit629.split.split:                         ; preds = %.critedge550.preheader.split.split, %287, %290, %293
  %lpad.loopexit631 = landingpad { ptr, i32 }
          cleanup
  br label %1109

.loopexit.split-lp630:                            ; preds = %.split, %306
  %lpad.loopexit.split-lp632 = landingpad { ptr, i32 }
          cleanup
  br label %1109

283:                                              ; preds = %.critedge550.preheader.split.split
  br i1 %216, label %284, label %.critedge571.loopexit

284:                                              ; preds = %283
  %285 = load i8, ptr %215, align 8, !tbaa !40, !range !65, !noundef !66
  %286 = trunc nuw i8 %285 to i1
  br i1 %286, label %.critedge571.loopexit, label %287

287:                                              ; preds = %284
  %288 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %208)
          to label %289 unwind label %.loopexit629.split.split

289:                                              ; preds = %287
  br i1 %288, label %.split, label %290

290:                                              ; preds = %289
  %291 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %292 unwind label %.loopexit629.split.split

292:                                              ; preds = %290
  br i1 %291, label %.split, label %293

293:                                              ; preds = %292
  %294 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %210)
          to label %295 unwind label %.loopexit629.split.split

295:                                              ; preds = %293
  br i1 %294, label %.split, label %.critedge571.loopexit

.split:                                           ; preds = %295, %292, %289
  %296 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull @.str.78)
          to label %297 unwind label %.loopexit.split-lp630

297:                                              ; preds = %.split
  br i1 %296, label %298, label %302

298:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %299 = getelementptr inbounds i8, ptr %213, i64 112
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %27, ptr noundef nonnull align 8 dereferenceable(8) %299)
          to label %314 unwind label %300

300:                                              ; preds = %298
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %1109

302:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %303 unwind label %307

303:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  store ptr %112, ptr %30, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, i32 noundef 0, ptr noundef nonnull %29)
          to label %304 unwind label %309

304:                                              ; preds = %303
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  %305 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %305, ptr noundef nonnull @.str.53)
          to label %306 unwind label %312

306:                                              ; preds = %304
  invoke void @__cxa_throw(ptr nonnull %305, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %.loopexit.split-lp630

307:                                              ; preds = %302
  %308 = landingpad { ptr, i32 }
          cleanup
  br label %311

309:                                              ; preds = %303
  %310 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %311

311:                                              ; preds = %309, %307
  %.pn481 = phi { ptr, i32 } [ %310, %309 ], [ %308, %307 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %1109

312:                                              ; preds = %304
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %305) #8
  br label %1109

314:                                              ; preds = %298
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %27)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %select.unfold

.critedge556.preheader:                           ; preds = %.lr.ph831
  %316 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  %317 = getelementptr inbounds i8, ptr %316, i64 8
  %318 = getelementptr inbounds i8, ptr %316, i64 24
  %319 = getelementptr inbounds i8, ptr %316, i64 136
  %320 = getelementptr inbounds i8, ptr %316, i64 16
  %321 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull align 8 dereferenceable(8) %317)
          to label %322 unwind label %327

322:                                              ; preds = %.critedge556.preheader
  br i1 %321, label %323, label %373

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %31) #8
  store i32 0, ptr %31, align 4, !tbaa !67
  %324 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %325 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %318)
  %.not470 = icmp eq i64 %324, %325
  br i1 %.not470, label %.preheader618, label %.critedge554

.preheader618:                                    ; preds = %323
  %326 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %.not845 = icmp eq i64 %326, 0
  br i1 %.not845, label %._crit_edge689, label %.lr.ph688

327:                                              ; preds = %.critedge556.preheader
  %lpad.loopexit921 = landingpad { ptr, i32 }
          cleanup
  br label %1109

.lr.ph688:                                        ; preds = %.preheader618, %334
  %328 = phi i64 [ %337, %334 ], [ 0, %.preheader618 ]
  %.0440687 = phi i32 [ %336, %334 ], [ 0, %.preheader618 ]
  %329 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %116, i64 noundef %328)
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %318, i64 noundef %328)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %33) #8
  %331 = load ptr, ptr %197, align 8, !tbaa !69
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %33, ptr noundef nonnull align 8 dereferenceable(49) %331)
          to label %332 unwind label %340

332:                                              ; preds = %.lr.ph688
  %333 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(8) %33)
          to label %334 unwind label %340

334:                                              ; preds = %332
  store i32 %333, ptr %32, align 4, !tbaa !67
  %335 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %31, ptr noundef nonnull align 4 dereferenceable(4) %32)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  %336 = add i32 %.0440687, 1
  %337 = zext i32 %336 to i64
  %338 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %116)
  %339 = icmp ugt i64 %338, %337
  br i1 %339, label %.lr.ph688, label %._crit_edge689, !llvm.loop !75

340:                                              ; preds = %332, %.lr.ph688
  %lpad.loopexit917 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %33) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  br label %372

._crit_edge689:                                   ; preds = %334, %.preheader618
  %.pr = load i32, ptr %31, align 4, !tbaa !67
  %.not471 = icmp eq i32 %.pr, 2
  br i1 %.not471, label %.critedge554, label %.loopexit924

.loopexit924:                                     ; preds = %._crit_edge689
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  %341 = getelementptr inbounds i8, ptr %316, i64 40
  %342 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %341, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %343 unwind label %352

343:                                              ; preds = %.loopexit924
  store ptr %342, ptr %34, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #8
  %344 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %341) #8
  store ptr %344, ptr %35, align 8
  %345 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #8
  br i1 %345, label %346, label %364

346:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  store ptr @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %347 unwind label %354

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %39) #8
  store ptr %36, ptr %39, align 8, !tbaa !5
  %348 = getelementptr inbounds i8, ptr %39, i64 8
  store ptr %112, ptr %348, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(16) %39) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull %38)
          to label %349 unwind label %356

349:                                              ; preds = %347
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  %350 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %350, ptr noundef nonnull @.str.70)
          to label %351 unwind label %359

351:                                              ; preds = %349
  invoke void @__cxa_throw(ptr nonnull %350, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %361

352:                                              ; preds = %.loopexit924
  %353 = landingpad { ptr, i32 }
          cleanup
  br label %371

354:                                              ; preds = %346
  %355 = landingpad { ptr, i32 }
          cleanup
  br label %358

356:                                              ; preds = %347
  %357 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %39) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %358

358:                                              ; preds = %356, %354
  %.pn474 = phi { ptr, i32 } [ %357, %356 ], [ %355, %354 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %363

359:                                              ; preds = %349
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %350) #8
  br label %363

361:                                              ; preds = %351
  %362 = landingpad { ptr, i32 }
          cleanup
  br label %363

363:                                              ; preds = %361, %359, %358
  %.pn476 = phi { ptr, i32 } [ %362, %361 ], [ %360, %359 ], [ %.pn474, %358 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %371

364:                                              ; preds = %343
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  %365 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  %366 = getelementptr inbounds i8, ptr %365, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %40, ptr noundef nonnull align 8 dereferenceable(8) %366)
          to label %367 unwind label %369

367:                                              ; preds = %364
  %368 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  br label %select.unfold

369:                                              ; preds = %364
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %371

371:                                              ; preds = %369, %363, %352
  %.pn476.pn = phi { ptr, i32 } [ %.pn476, %363 ], [ %370, %369 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %372

372:                                              ; preds = %371, %340
  %.pn476.pn.pn = phi { ptr, i32 } [ %.pn476.pn, %371 ], [ %lpad.loopexit917, %340 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  br label %1109

.critedge554:                                     ; preds = %323, %._crit_edge689
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %31) #8
  br label %373

373:                                              ; preds = %.critedge554, %322
  %374 = load ptr, ptr %319, align 8, !tbaa !76
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %42) #8
  store ptr %0, ptr %42, align 8, !tbaa !103
  store ptr %1, ptr %204, align 8, !tbaa !5
  store ptr %112, ptr %205, align 8, !tbaa !5
  store ptr %2, ptr %206, align 8, !tbaa !5
  store ptr %316, ptr %207, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(40) %42)
          to label %375 unwind label %378

375:                                              ; preds = %373
  %376 = 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) %114, ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(400) %374, ptr noundef nonnull align 8 dereferenceable(8) %317, ptr noundef nonnull align 8 dereferenceable(24) %320, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %41)
          to label %377 unwind label %379

377:                                              ; preds = %375
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %42) #8
  br i1 %376, label %select.unfold, label %.critedge571.loopexit, !llvm.loop !105

378:                                              ; preds = %373
  %lpad.loopexit927 = landingpad { ptr, i32 }
          cleanup
  br label %380

379:                                              ; preds = %375
  %lpad.loopexit932 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #8
  br label %380

380:                                              ; preds = %379, %378
  %.pn472 = phi { ptr, i32 } [ %lpad.loopexit932, %379 ], [ %lpad.loopexit927, %378 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %42) #8
  br label %1109

.lr.ph685:                                        ; preds = %.lr.ph831
  %381 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %211)
  %382 = getelementptr inbounds i8, ptr %381, i64 8
  %383 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %386 unwind label %384

384:                                              ; preds = %394, %392, %390, %387, %.lr.ph685
  %385 = landingpad { ptr, i32 }
          cleanup
  br label %1109

386:                                              ; preds = %.lr.ph685
  br i1 %383, label %387, label %396

387:                                              ; preds = %386
  %388 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %388, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %390 unwind label %384

390:                                              ; preds = %387
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %389, ptr noundef nonnull @.str.94)
          to label %392 unwind label %384

392:                                              ; preds = %390
  %393 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %394 unwind label %384

394:                                              ; preds = %392
  %395 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %393, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %396 unwind label %384

396:                                              ; preds = %394, %386
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %397 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %382) #8
  store ptr %397, ptr %43, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  %398 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %382) #8
  store ptr %398, ptr %44, align 8
  %399 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br i1 %399, label %.lr.ph680, label %.critedge565

.lr.ph680:                                        ; preds = %396, %489
  %400 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %401 = getelementptr inbounds i8, ptr %400, i64 8
  %402 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %401)
          to label %403 unwind label %409

403:                                              ; preds = %.lr.ph680
  br i1 %402, label %404, label %477

404:                                              ; preds = %403
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %45) #8
  store i32 0, ptr %45, align 4, !tbaa !67
  %405 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %196)
  %406 = getelementptr inbounds i8, ptr %400, i64 24
  %407 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %406)
  %.not457 = icmp eq i64 %405, %407
  br i1 %.not457, label %.preheader, label %.critedge562

.preheader:                                       ; preds = %404
  %408 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %196)
  %.not844 = icmp eq i64 %408, 0
  br i1 %.not844, label %._crit_edge678, label %.lr.ph677

409:                                              ; preds = %.lr.ph680
  %410 = landingpad { ptr, i32 }
          cleanup
  br label %492

.lr.ph677:                                        ; preds = %.preheader, %417
  %411 = phi i64 [ %420, %417 ], [ 0, %.preheader ]
  %.0443676 = phi i32 [ %419, %417 ], [ 0, %.preheader ]
  %412 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %196, i64 noundef %411)
  %413 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %406, i64 noundef %411)
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %46) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #8
  %414 = load ptr, ptr %197, align 8, !tbaa !69
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %47, ptr noundef nonnull align 8 dereferenceable(49) %414)
          to label %415 unwind label %423

415:                                              ; preds = %.lr.ph677
  %416 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %417 unwind label %423

417:                                              ; preds = %415
  store i32 %416, ptr %46, align 4, !tbaa !67
  %418 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %45, ptr noundef nonnull align 4 dereferenceable(4) %46)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #8
  %419 = add i32 %.0443676, 1
  %420 = zext i32 %419 to i64
  %421 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %196)
  %422 = icmp ugt i64 %421, %420
  br i1 %422, label %.lr.ph677, label %._crit_edge678, !llvm.loop !106

423:                                              ; preds = %415, %.lr.ph677
  %424 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %46) #8
  br label %476

._crit_edge678:                                   ; preds = %417, %.preheader
  %.pr592 = load i32, ptr %45, align 4, !tbaa !67
  %.not458 = icmp eq i32 %.pr592, 2
  br i1 %.not458, label %.critedge562, label %425

425:                                              ; preds = %._crit_edge678
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #8
  %426 = getelementptr inbounds i8, ptr %400, i64 40
  %427 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %426, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %428 unwind label %436

428:                                              ; preds = %425
  store ptr %427, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #8
  %429 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %426) #8
  store ptr %429, ptr %49, align 8
  %430 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  br i1 %430, label %431, label %440

431:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #8
  %432 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  %433 = getelementptr inbounds i8, ptr %432, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %50, ptr noundef nonnull align 8 dereferenceable(8) %433)
          to label %434 unwind label %438

434:                                              ; preds = %431
  %435 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %50)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  br label %475

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

438:                                              ; preds = %431
  %439 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #8
  br label %454

440:                                              ; preds = %428
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #8
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %51)
          to label %441 unwind label %455

441:                                              ; preds = %440
  %442 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %203, ptr noundef nonnull align 8 dereferenceable(16) %51)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %52) #8
  %443 = getelementptr inbounds i8, ptr %400, i64 88
  %444 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %443, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %445 unwind label %457

445:                                              ; preds = %441
  store ptr %444, ptr %52, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #8
  %446 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %443) #8
  store ptr %446, ptr %53, align 8
  %447 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #8
  br i1 %447, label %448, label %473

448:                                              ; preds = %445
  %449 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  %450 = getelementptr inbounds i8, ptr %449, i64 40
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %54) #8
  %451 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %450) #8
  store ptr %451, ptr %54, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #8
  %452 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %450) #8
  store ptr %452, ptr %55, align 8
  %453 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %453, label %.lr.ph682, label %._crit_edge683

._crit_edge683:                                   ; preds = %462, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %473

454:                                              ; preds = %438, %436
  %.pn459 = phi { ptr, i32 } [ %439, %438 ], [ %437, %436 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #8
  br label %476

455:                                              ; preds = %440
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  br label %476

457:                                              ; preds = %441
  %458 = landingpad { ptr, i32 }
          cleanup
  br label %474

.lr.ph682:                                        ; preds = %448, %462
  %459 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %460 unwind label %465

460:                                              ; preds = %.lr.ph682
  invoke void @_ZNK3HIR9TraitPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %57, ptr noundef nonnull align 8 dereferenceable(144) %459)
          to label %461 unwind label %467

461:                                              ; preds = %460
  invoke void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef null, ptr noundef nonnull %56, ptr noundef nonnull %57, i1 noundef zeroext true)
          to label %462 unwind label %469

462:                                              ; preds = %461
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  %463 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  %464 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %464, label %.lr.ph682, label %._crit_edge683

465:                                              ; preds = %.lr.ph682
  %466 = landingpad { ptr, i32 }
          cleanup
  br label %472

467:                                              ; preds = %460
  %468 = landingpad { ptr, i32 }
          cleanup
  br label %471

469:                                              ; preds = %461
  %470 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #8
  br label %471

471:                                              ; preds = %469, %467
  %.pn463 = phi { ptr, i32 } [ %470, %469 ], [ %468, %467 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %472

472:                                              ; preds = %471, %465
  %.pn463.pn = phi { ptr, i32 } [ %.pn463, %471 ], [ %466, %465 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %54) #8
  br label %474

473:                                              ; preds = %._crit_edge683, %445
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %475

474:                                              ; preds = %472, %457
  %.pn463.pn.pn = phi { ptr, i32 } [ %.pn463.pn, %472 ], [ %458, %457 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %52) #8
  br label %476

475:                                              ; preds = %434, %473
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #8
  br label %select.unfold.loopexit848

476:                                              ; preds = %474, %455, %454, %423
  %.pn463.pn.pn.pn = phi { ptr, i32 } [ %.pn463.pn.pn, %474 ], [ %456, %455 ], [ %.pn459, %454 ], [ %424, %423 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #8
  br label %492

.critedge562:                                     ; preds = %404, %._crit_edge678
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %45) #8
  br label %477

477:                                              ; preds = %.critedge562, %403
  %478 = getelementptr inbounds i8, ptr %400, i64 136
  %479 = load ptr, ptr %478, align 8, !tbaa !107
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %59) #8
  store ptr %0, ptr %59, align 8, !tbaa !108
  store ptr %1, ptr %198, align 8, !tbaa !5
  store ptr %112, ptr %199, align 8, !tbaa !5
  store ptr %2, ptr %200, align 8, !tbaa !5
  store ptr %400, ptr %201, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(40) %59)
          to label %480 unwind label %484

480:                                              ; preds = %477
  %481 = getelementptr inbounds i8, ptr %400, i64 16
  %482 = 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) %14, ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 8 dereferenceable(400) %479, ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef nonnull align 8 dereferenceable(24) %481, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %58)
          to label %483 unwind label %486

483:                                              ; preds = %480
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %59) #8
  br i1 %482, label %select.unfold.loopexit848, label %489

484:                                              ; preds = %477
  %485 = landingpad { ptr, i32 }
          cleanup
  br label %488

486:                                              ; preds = %480
  %487 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  br label %488

488:                                              ; preds = %486, %484
  %.pn461 = phi { ptr, i32 } [ %487, %486 ], [ %485, %484 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %59) #8
  br label %492

489:                                              ; preds = %483
  %490 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  %491 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  br i1 %491, label %.lr.ph680, label %.critedge565

492:                                              ; preds = %488, %476, %409
  %.pn463.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn463.pn.pn.pn, %476 ], [ %.pn461, %488 ], [ %410, %409 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %1109

.critedge565:                                     ; preds = %489, %396
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %.critedge571.loopexit

493:                                              ; preds = %.critedge571.loopexit
  store ptr %195, ptr %62, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #8
  %494 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %194) #8
  store ptr %494, ptr %63, align 8
  %495 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #8
  br i1 %495, label %496, label %517

496:                                              ; preds = %493
  store i32 2, ptr %61, align 4, !tbaa !32
  %497 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %498 unwind label %508

498:                                              ; preds = %496
  br i1 %497, label %499, label %510

499:                                              ; preds = %498
  %500 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %500, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %502 unwind label %508

502:                                              ; preds = %499
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef nonnull @.str.95)
          to label %504 unwind label %508

504:                                              ; preds = %502
  %505 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %506 unwind label %508

506:                                              ; preds = %504
  %507 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %505, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %510 unwind label %508

508:                                              ; preds = %506, %504, %502, %499, %496, %.critedge571.loopexit
  %509 = landingpad { ptr, i32 }
          cleanup
  br label %516

510:                                              ; preds = %506, %498
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  %511 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  %512 = getelementptr inbounds i8, ptr %511, i64 104
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %64, ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %.thread602 unwind label %514

.thread602:                                       ; preds = %510
  %513 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %64)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %532

514:                                              ; preds = %510
  %515 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %516

516:                                              ; preds = %514, %508
  %.pn494 = phi { ptr, i32 } [ %515, %514 ], [ %509, %508 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %1108

517:                                              ; preds = %493
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %66) #8
  store ptr %1, ptr %66, align 8, !tbaa !5
  %518 = getelementptr inbounds i8, ptr %66, i64 8
  store ptr %14, ptr %518, align 8, !tbaa !5
  %519 = getelementptr inbounds i8, ptr %66, i64 16
  store ptr %0, ptr %519, align 8, !tbaa !110
  %520 = getelementptr inbounds i8, ptr %66, i64 24
  store ptr %112, ptr %520, align 8, !tbaa !5
  %521 = getelementptr inbounds i8, ptr %66, i64 32
  store ptr %2, ptr %521, align 8, !tbaa !5
  %522 = getelementptr inbounds i8, ptr %66, i64 40
  store ptr %60, ptr %522, align 8, !tbaa !5
  %523 = getelementptr inbounds i8, ptr %66, i64 48
  store ptr %61, ptr %523, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbN3HIR7CompareERKNS0_7TypeRefERKNS0_11GenericPathERKN18TraitResolveCommon11CachedBoundEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS2_5LListIPS3_EE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(56) %66)
          to label %524 unwind label %526

524:                                              ; preds = %517
  %525 = invoke noundef zeroext i1 @_ZNK15TraitResolution21iterate_bounds_traitsERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathESt8functionIFbNS3_7CompareES6_RKNS3_11GenericPathERKN18TraitResolveCommon11CachedBoundEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull %65)
          to label %531 unwind label %528

526:                                              ; preds = %517
  %527 = landingpad { ptr, i32 }
          cleanup
  br label %530

528:                                              ; preds = %524
  %529 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  br label %530

530:                                              ; preds = %528, %526
  %.pn496 = phi { ptr, i32 } [ %529, %528 ], [ %527, %526 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %66) #8
  br label %1108

531:                                              ; preds = %524
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %66) #8
  br i1 %525, label %532, label %553

532:                                              ; preds = %.thread602, %531
  %533 = load i32, ptr %61, align 4, !tbaa !32
  %534 = icmp eq i32 %533, 2
  br i1 %534, label %536, label %535

535:                                              ; preds = %532
  call void @__assert_fail(ptr noundef nonnull @.str.96, ptr noundef nonnull @.str.7, i32 noundef 2575, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

536:                                              ; preds = %532
  %537 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %538 unwind label %550

538:                                              ; preds = %536
  br i1 %537, label %539, label %552

539:                                              ; preds = %538
  %540 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %541 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %540, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %542 unwind label %550

542:                                              ; preds = %539
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull @.str.97)
          to label %544 unwind label %550

544:                                              ; preds = %542
  %545 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %543, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %546 unwind label %550

546:                                              ; preds = %544
  %547 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %545, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %548 unwind label %550

548:                                              ; preds = %546
  %549 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %547, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %552 unwind label %550

550:                                              ; preds = %767, %765, %763, %760, %757, %552, %548, %546, %544, %542, %539, %536
  %551 = landingpad { ptr, i32 }
          cleanup
  br label %1108

552:                                              ; preds = %548, %538
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4)
          to label %.critedge584 unwind label %550

553:                                              ; preds = %531
  %554 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
  %555 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %554)
  %.not498 = icmp eq ptr %555, null
  br i1 %.not498, label %.critedge582, label %556

556:                                              ; preds = %553
  %557 = call noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %555)
  %.not499 = icmp eq ptr %557, null
  br i1 %.not499, label %.critedge582, label %558

558:                                              ; preds = %556
  %559 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %560 unwind label %570

560:                                              ; preds = %558
  br i1 %559, label %561, label %572

561:                                              ; preds = %560
  %562 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %562, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %564 unwind label %570

564:                                              ; preds = %561
  %565 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %563, ptr noundef nonnull @.str.98)
          to label %566 unwind label %570

566:                                              ; preds = %564
  %567 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %568 unwind label %570

568:                                              ; preds = %566
  %569 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %567, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %572 unwind label %570

570:                                              ; preds = %568, %566, %564, %561, %558
  %571 = landingpad { ptr, i32 }
          cleanup
  br label %1108

572:                                              ; preds = %568, %560
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %67) #8
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %573 unwind label %587

573:                                              ; preds = %572
  %574 = getelementptr inbounds i8, ptr %557, i64 8
  %575 = load ptr, ptr %0, align 8, !tbaa !11
  %576 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %575, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %574)
          to label %577 unwind label %589

577:                                              ; preds = %573
  %578 = getelementptr inbounds i8, ptr %557, i64 40
  %579 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %578)
  %580 = invoke noundef zeroext i1 @_ZNK15TraitResolution19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %574, ptr noundef nonnull align 8 dereferenceable(400) %576, ptr noundef %579, ptr noundef nonnull align 8 dereferenceable(32) %67)
          to label %581 unwind label %589

581:                                              ; preds = %577
  br i1 %580, label %598, label %582

582:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %583 unwind label %591

583:                                              ; preds = %582
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #8
  store ptr %557, ptr %70, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull %69)
          to label %584 unwind label %593

584:                                              ; preds = %583
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #8
  %585 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %585, ptr noundef nonnull @.str.8)
          to label %586 unwind label %596

586:                                              ; preds = %584
  invoke void @__cxa_throw(ptr nonnull %585, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %589

587:                                              ; preds = %572
  %588 = landingpad { ptr, i32 }
          cleanup
  br label %746

589:                                              ; preds = %586, %577, %573
  %590 = landingpad { ptr, i32 }
          cleanup
  br label %745

591:                                              ; preds = %582
  %592 = landingpad { ptr, i32 }
          cleanup
  br label %595

593:                                              ; preds = %583
  %594 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #8
  br label %595

595:                                              ; preds = %593, %591
  %.pn500 = phi { ptr, i32 } [ %594, %593 ], [ %592, %591 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #8
  br label %745

596:                                              ; preds = %584
  %597 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %585) #8
  br label %745

598:                                              ; preds = %581
  %599 = load ptr, ptr %0, align 8, !tbaa !11
  %600 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %599, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %67)
          to label %601 unwind label %613

601:                                              ; preds = %598
  %602 = getelementptr inbounds i8, ptr %600, i64 136
  %603 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %602, ptr noundef nonnull align 8 dereferenceable(8) %578)
          to label %604 unwind label %615

604:                                              ; preds = %601
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %71) #8
  %605 = getelementptr inbounds i8, ptr %557, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %71, ptr noundef nonnull %557, ptr noundef nonnull %605, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %606 unwind label %617

606:                                              ; preds = %604
  %607 = getelementptr inbounds i8, ptr %603, i64 104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #8
  %608 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %607) #8
  store ptr %608, ptr %72, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %73) #8
  %609 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %607) #8
  store ptr %609, ptr %73, align 8
  %610 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  br i1 %610, label %.lr.ph839, label %.loopexit946

.lr.ph839:                                        ; preds = %606
  %611 = getelementptr inbounds i8, ptr %74, i64 16
  %612 = getelementptr inbounds i8, ptr %80, i64 8
  br label %619

613:                                              ; preds = %598
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %745

615:                                              ; preds = %601
  %616 = landingpad { ptr, i32 }
          cleanup
  br label %745

617:                                              ; preds = %604
  %618 = landingpad { ptr, i32 }
          cleanup
  br label %744

619:                                              ; preds = %.lr.ph839, %718
  %620 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %74) #8
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %621 unwind label %628

621:                                              ; preds = %619
  %622 = getelementptr inbounds i8, ptr %620, i64 8
  %623 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZL33monomorphise_genericpath_with_optRK4SpanRN3HIR11GenericPathERKS3_RK13Monomorphiserb(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef nonnull align 8 dereferenceable(32) %622, ptr noundef nonnull align 8 dereferenceable(96) %71, i1 noundef zeroext true)
          to label %624 unwind label %630

624:                                              ; preds = %621
  %625 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %611)
  %626 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %611)
  %.not502833 = icmp eq ptr %625, %626
  br i1 %.not502833, label %._crit_edge837, label %.lr.ph836

._crit_edge837:                                   ; preds = %632, %624
  %627 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %636 unwind label %630

628:                                              ; preds = %619
  %629 = landingpad { ptr, i32 }
          cleanup
  br label %722

630:                                              ; preds = %662, %660, %658, %656, %654, %651, %648, %646, %644, %642, %640, %637, %._crit_edge837, %621
  %631 = landingpad { ptr, i32 }
          cleanup
  br label %721

.lr.ph836:                                        ; preds = %624, %632
  %.0444834 = phi ptr [ %633, %632 ], [ %625, %624 ]
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.0444834, ptr %3, ptr %4)
          to label %632 unwind label %634

632:                                              ; preds = %.lr.ph836
  %633 = getelementptr inbounds i8, ptr %.0444834, i64 8
  %.not502 = icmp eq ptr %633, %626
  br i1 %.not502, label %._crit_edge837, label %.lr.ph836

634:                                              ; preds = %.lr.ph836
  %635 = landingpad { ptr, i32 }
          cleanup
  br label %721

636:                                              ; preds = %._crit_edge837
  br i1 %627, label %637, label %648

637:                                              ; preds = %636
  %638 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %639 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %638, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %640 unwind label %630

640:                                              ; preds = %637
  %641 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %639, ptr noundef nonnull @.str.99)
          to label %642 unwind label %630

642:                                              ; preds = %640
  %643 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %641, ptr noundef nonnull align 8 dereferenceable(32) %622)
          to label %644 unwind label %630

644:                                              ; preds = %642
  %645 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %643, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %646 unwind label %630

646:                                              ; preds = %644
  %647 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %645, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %648 unwind label %630

648:                                              ; preds = %636, %646
  %649 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %650 unwind label %630

650:                                              ; preds = %648
  br i1 %649, label %651, label %662

651:                                              ; preds = %650
  %652 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %653 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %652, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %654 unwind label %630

654:                                              ; preds = %651
  %655 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %653, ptr noundef nonnull @.str.100)
          to label %656 unwind label %630

656:                                              ; preds = %654
  %657 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %655, ptr noundef nonnull align 8 dereferenceable(32) %623)
          to label %658 unwind label %630

658:                                              ; preds = %656
  %659 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %657, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %660 unwind label %630

660:                                              ; preds = %658
  %661 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %659, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %662 unwind label %630

662:                                              ; preds = %660, %650
  %663 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %623, ptr noundef nonnull align 8 dereferenceable(32) %114)
          to label %664 unwind label %630

664:                                              ; preds = %662
  br i1 %663, label %665, label %707

665:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %75) #8
  %666 = getelementptr inbounds i8, ptr %620, i64 40
  %667 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %666, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %668 unwind label %.loopexit

668:                                              ; preds = %665
  store ptr %667, ptr %75, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #8
  %669 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %666) #8
  store ptr %669, ptr %76, align 8
  %670 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %76) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #8
  br i1 %670, label %671, label %.critedge575

671:                                              ; preds = %668
  %672 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  %673 = getelementptr inbounds i8, ptr %672, i64 40
  %674 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %673, i1 noundef zeroext false)
          to label %675 unwind label %.loopexit.split-lp

675:                                              ; preds = %671
  br i1 %674, label %676, label %683

676:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #8
  %677 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  %678 = getelementptr inbounds i8, ptr %677, i64 40
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %77, ptr noundef nonnull align 8 dereferenceable(96) %71, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %678, i1 noundef zeroext true)
          to label %679 unwind label %681

679:                                              ; preds = %676
  %680 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %77)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  br label %690

.loopexit:                                        ; preds = %665
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %706

.loopexit.split-lp:                               ; preds = %671, %690, %693, %696, %698, %700, %702, %704
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %706

681:                                              ; preds = %676
  %682 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #8
  br label %706

683:                                              ; preds = %675
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #8
  %684 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  %685 = getelementptr inbounds i8, ptr %684, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %78, ptr noundef nonnull align 8 dereferenceable(8) %685)
          to label %686 unwind label %688

686:                                              ; preds = %683
  %687 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %78)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %690

688:                                              ; preds = %683
  %689 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %706

690:                                              ; preds = %679, %686
  %691 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %692 unwind label %.loopexit.split-lp

692:                                              ; preds = %690
  br i1 %691, label %693, label %704

693:                                              ; preds = %692
  %694 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %694, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %696 unwind label %.loopexit.split-lp

696:                                              ; preds = %693
  %697 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %695, ptr noundef nonnull @.str.97)
          to label %698 unwind label %.loopexit.split-lp

698:                                              ; preds = %696
  %699 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %697, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %700 unwind label %.loopexit.split-lp

700:                                              ; preds = %698
  %701 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %699, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %702 unwind label %.loopexit.split-lp

702:                                              ; preds = %700
  %703 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %701, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %704 unwind label %.loopexit.split-lp

704:                                              ; preds = %702, %692
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4)
          to label %705 unwind label %.loopexit.split-lp

705:                                              ; preds = %704
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #8
  br label %.critedge580

706:                                              ; preds = %.loopexit, %.loopexit.split-lp, %688, %681
  %.pn503 = phi { ptr, i32 } [ %682, %681 ], [ %689, %688 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #8
  br label %721

.critedge575:                                     ; preds = %668
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %75) #8
  br label %707

707:                                              ; preds = %.critedge575, %664
  %708 = load ptr, ptr %0, align 8, !tbaa !11
  %709 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %708, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %623)
          to label %710 unwind label %714

710:                                              ; preds = %707
  %711 = getelementptr inbounds i8, ptr %623, i64 8
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %80) #8
  store ptr %112, ptr %80, align 8, !tbaa !5
  store ptr %2, ptr %612, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS0_7TypeRefE5LListIPKSB_EE4$_12vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(16) %80) #8
  %712 = 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) %114, ptr noundef nonnull align 8 dereferenceable(24) %115, ptr noundef nonnull align 8 dereferenceable(400) %709, ptr noundef nonnull align 8 dereferenceable(8) %623, ptr noundef nonnull align 8 dereferenceable(24) %711, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %79)
          to label %713 unwind label %716

713:                                              ; preds = %710
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #8
  br i1 %712, label %.critedge580, label %718

714:                                              ; preds = %707
  %715 = landingpad { ptr, i32 }
          cleanup
  br label %721

716:                                              ; preds = %710
  %717 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %80) #8
  br label %721

718:                                              ; preds = %713
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #8
  %719 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  %720 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %73) #8
  br i1 %720, label %619, label %.loopexit946

721:                                              ; preds = %714, %716, %706, %634, %630
  %.pn521 = phi { ptr, i32 } [ %635, %634 ], [ %.pn503, %706 ], [ %631, %630 ], [ %717, %716 ], [ %715, %714 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %722

722:                                              ; preds = %721, %628
  %.pn521.pn = phi { ptr, i32 } [ %.pn521, %721 ], [ %629, %628 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  br label %743

.loopexit946:                                     ; preds = %718, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  %723 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %724 unwind label %740

724:                                              ; preds = %.loopexit946
  br i1 %723, label %725, label %742

725:                                              ; preds = %724
  %726 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %727 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %726, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %728 unwind label %740

728:                                              ; preds = %725
  %729 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %727, ptr noundef nonnull @.str.101)
          to label %730 unwind label %740

730:                                              ; preds = %728
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %729, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %732 unwind label %740

732:                                              ; preds = %730
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %731, ptr noundef nonnull @.str.102)
          to label %734 unwind label %740

734:                                              ; preds = %732
  %735 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %733, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %736 unwind label %740

736:                                              ; preds = %734
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %735, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %738 unwind label %740

738:                                              ; preds = %736
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %737, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %742 unwind label %740

740:                                              ; preds = %738, %736, %734, %732, %730, %728, %725, %.loopexit946
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %743

742:                                              ; preds = %724, %738
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %71) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %71) #8
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #8
  br label %.critedge582

743:                                              ; preds = %740, %722
  %.pn521.pn.pn = phi { ptr, i32 } [ %.pn521.pn, %722 ], [ %741, %740 ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %71) #8
  br label %744

744:                                              ; preds = %743, %617
  %.pn521.pn.pn.pn = phi { ptr, i32 } [ %.pn521.pn.pn, %743 ], [ %618, %617 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %71) #8
  br label %745

745:                                              ; preds = %613, %744, %615, %596, %595, %589
  %.pn521.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %590, %589 ], [ %597, %596 ], [ %.pn500, %595 ], [ %614, %613 ], [ %.pn521.pn.pn.pn, %744 ], [ %616, %615 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %746

746:                                              ; preds = %745, %587
  %.pn521.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn521.pn.pn.pn.pn.pn.pn, %745 ], [ %588, %587 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #8
  br label %1108

.critedge580:                                     ; preds = %713, %705
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %74) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %71) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %71) #8
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %67) #8
  br label %.critedge584

.critedge582:                                     ; preds = %742, %556, %553
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %82) #8
  store ptr %112, ptr %82, align 8, !tbaa !5
  %747 = getelementptr inbounds i8, ptr %82, i64 8
  store ptr %2, ptr %747, align 8, !tbaa !5
  %748 = getelementptr inbounds i8, ptr %82, i64 16
  store ptr %111, ptr %748, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_13vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %81, ptr noundef nonnull align 8 dereferenceable(24) %82)
          to label %749 unwind label %752

749:                                              ; preds = %.critedge582
  %750 = 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) %14, ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %81)
          to label %751 unwind label %754

751:                                              ; preds = %749
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #8
  br i1 %750, label %.critedge584, label %757

752:                                              ; preds = %.critedge582
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %756

754:                                              ; preds = %749
  %755 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %81) #8
  br label %756

756:                                              ; preds = %754, %752
  %.pn507 = phi { ptr, i32 } [ %755, %754 ], [ %753, %752 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %82) #8
  br label %1108

757:                                              ; preds = %751
  %758 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %759 unwind label %550

759:                                              ; preds = %757
  br i1 %758, label %760, label %769

760:                                              ; preds = %759
  %761 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %761, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %763 unwind label %550

763:                                              ; preds = %760
  %764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %762, ptr noundef nonnull @.str.103)
          to label %765 unwind label %550

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

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

769:                                              ; preds = %767, %759
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %83) #8
  store i8 1, ptr %83, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %84) #8
  store i32 0, ptr %84, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %85) #8
  store i8 0, ptr %85, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %86) #8
  store i8 0, ptr %86, align 1, !tbaa !30
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %87) #8
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87)
          to label %770 unwind label %785

770:                                              ; preds = %769
  call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %88) #8
  store ptr %83, ptr %88, align 8, !tbaa !5
  %771 = getelementptr inbounds i8, ptr %88, i64 8
  store ptr %84, ptr %771, align 8, !tbaa !5
  %772 = getelementptr inbounds i8, ptr %88, i64 16
  store ptr %112, ptr %772, align 8, !tbaa !5
  %773 = getelementptr inbounds i8, ptr %88, i64 24
  store ptr %87, ptr %773, align 8, !tbaa !5
  %774 = getelementptr inbounds i8, ptr %88, i64 32
  store ptr %85, ptr %774, align 8, !tbaa !5
  %775 = getelementptr inbounds i8, ptr %88, i64 40
  store ptr %86, ptr %775, align 8, !tbaa !5
  %776 = getelementptr inbounds i8, ptr %88, i64 48
  store ptr %1, ptr %776, align 8, !tbaa !5
  %777 = getelementptr inbounds i8, ptr %88, i64 56
  store ptr %111, ptr %777, align 8, !tbaa !5
  %778 = getelementptr inbounds i8, ptr %88, i64 64
  store ptr %2, ptr %778, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %89, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %779 unwind label %787

779:                                              ; preds = %770
  %780 = 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) %14, ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %89)
          to label %781 unwind label %789

781:                                              ; preds = %779
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  br i1 %780, label %.thread609, label %782

782:                                              ; preds = %781
  store i8 1, ptr %86, align 1, !tbaa !30
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRNS1_7TypeRefE5LListIPKSA_EE4$_14vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %90, ptr noundef nonnull align 8 dereferenceable(72) %88)
          to label %783 unwind label %787

783:                                              ; preds = %782
  %784 = 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) %14, ptr noundef nonnull align 8 dereferenceable(24) %202, ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull %90)
          to label %793 unwind label %791

785:                                              ; preds = %769
  %786 = landingpad { ptr, i32 }
          cleanup
  br label %1107

787:                                              ; preds = %.invoke956, %.invoke954, %.invoke, %1096, %1094, %1091, %1088, %1084, %1082, %1079, %1075, %1072, %1070, %1068, %1066, %1064, %1061, %1058, %1054, %1052, %1050, %1047, %1044, %977, %975, %973, %970, %968, %965, %962, %950, %933, %931, %929, %927, %925, %922, %919, %.thread609, %829, %826, %819, %817, %815, %812, %809, %805, %794, %782, %770
  %788 = landingpad { ptr, i32 }
          cleanup
  br label %1106

789:                                              ; preds = %779
  %790 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #8
  br label %1106

791:                                              ; preds = %783
  %792 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br label %1106

793:                                              ; preds = %783
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #8
  br i1 %784, label %.thread609, label %794

794:                                              ; preds = %793
  %795 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %87)
          to label %796 unwind label %787

796:                                              ; preds = %794
  br i1 %795, label %797, label %914

797:                                              ; preds = %796
  %798 = load i8, ptr %83, align 1, !tbaa !30, !range !65, !noundef !66
  %799 = trunc nuw i8 %798 to i1
  %800 = load i32, ptr %84, align 4
  %801 = icmp ugt i32 %800, 1
  %or.cond = select i1 %799, i1 %801, i1 false
  br i1 %or.cond, label %914, label %802

802:                                              ; preds = %797
  %803 = load i8, ptr %85, align 1, !tbaa !30, !range !65, !noundef !66
  %804 = trunc nuw i8 %803 to i1
  br i1 %804, label %805, label %832

805:                                              ; preds = %802
  %806 = load ptr, ptr %197, align 8, !tbaa !69
  %807 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %806, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext false)
          to label %808 unwind label %787

808:                                              ; preds = %805
  br i1 %807, label %826, label %809

809:                                              ; preds = %808
  %810 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %811 unwind label %787

811:                                              ; preds = %809
  br i1 %810, label %812, label %821

812:                                              ; preds = %811
  %813 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %814 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %813, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %815 unwind label %787

815:                                              ; preds = %812
  %816 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %814, ptr noundef nonnull @.str.104)
          to label %817 unwind label %787

817:                                              ; preds = %815
  %818 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %816, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %819 unwind label %787

819:                                              ; preds = %817
  %820 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %818, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %821 unwind label %787

821:                                              ; preds = %819, %811
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %91) #8
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %91)
          to label %822 unwind label %824

822:                                              ; preds = %821
  %823 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %203, ptr noundef nonnull align 8 dereferenceable(16) %91)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %91) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #8
  br label %1104

824:                                              ; preds = %821
  %825 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %91) #8
  br label %1106

826:                                              ; preds = %808
  %827 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %828 unwind label %787

828:                                              ; preds = %826
  br i1 %827, label %829, label %1104

829:                                              ; preds = %828
  %830 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %831 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %830, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %.invoke956 unwind label %787

832:                                              ; preds = %802
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %92) #8
  %833 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %173)
  %834 = getelementptr inbounds i8, ptr %112, i64 48
  invoke void @_ZNK7ImplRef8get_typeEPKcRKN3HIR10PathParamsE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %92, ptr noundef nonnull align 8 dereferenceable(184) %87, ptr noundef %833, ptr noundef nonnull align 8 dereferenceable(24) %834)
          to label %835 unwind label %855

835:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %93) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %836 unwind label %857

836:                                              ; preds = %835
  %837 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %838 unwind label %859

838:                                              ; preds = %836
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #8
  br i1 %837, label %839, label %878

839:                                              ; preds = %838
  %840 = load ptr, ptr %197, align 8, !tbaa !69
  %841 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %840, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext false)
          to label %842 unwind label %862

842:                                              ; preds = %839
  br i1 %841, label %872, label %843

843:                                              ; preds = %842
  %844 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %845 unwind label %862

845:                                              ; preds = %843
  br i1 %844, label %846, label %864

846:                                              ; preds = %845
  %847 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %848 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %847, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %849 unwind label %862

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.106)
          to label %851 unwind label %862

851:                                              ; preds = %849
  %852 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %850, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %853 unwind label %862

853:                                              ; preds = %851
  %854 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %852, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %864 unwind label %862

855:                                              ; preds = %832
  %856 = landingpad { ptr, i32 }
          cleanup
  br label %913

857:                                              ; preds = %835
  %858 = landingpad { ptr, i32 }
          cleanup
  br label %861

859:                                              ; preds = %836
  %860 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #8
  br label %861

861:                                              ; preds = %859, %857
  %.pn509 = phi { ptr, i32 } [ %860, %859 ], [ %858, %857 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %93) #8
  br label %912

862:                                              ; preds = %.invoke957, %.invoke955, %.invoke953, %908, %906, %904, %902, %900, %898, %895, %892, %884, %881, %878, %875, %872, %853, %851, %849, %846, %843, %839
  %863 = landingpad { ptr, i32 }
          cleanup
  br label %912

864:                                              ; preds = %853, %845
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %94) #8
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %94)
          to label %865 unwind label %870

865:                                              ; preds = %864
  %866 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %867 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %866)
  %868 = getelementptr inbounds i8, ptr %867, i64 88
  %869 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %868, ptr noundef nonnull align 8 dereferenceable(16) %94)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %94) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  br label %.thread612

870:                                              ; preds = %864
  %871 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %94) #8
  br label %912

872:                                              ; preds = %842
  %873 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %874 unwind label %862

874:                                              ; preds = %872
  br i1 %873, label %875, label %.thread612

875:                                              ; preds = %874
  %876 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %877 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %876, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %.invoke957 unwind label %862

878:                                              ; preds = %838
  %879 = invoke noundef zeroext i1 @_ZNK7ImplRef16has_magic_paramsEv(ptr noundef nonnull align 8 dereferenceable(184) %87)
          to label %880 unwind label %862

880:                                              ; preds = %878
  br i1 %879, label %881, label %892

881:                                              ; preds = %880
  %882 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %883 unwind label %862

883:                                              ; preds = %881
  br i1 %882, label %884, label %.thread612

884:                                              ; preds = %883
  %885 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %886 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %885, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %.invoke957 unwind label %862

.invoke957:                                       ; preds = %884, %875
  %887 = phi ptr [ %877, %875 ], [ %886, %884 ]
  %888 = phi ptr [ @.str.107, %875 ], [ @.str.108, %884 ]
  %889 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %887, ptr noundef nonnull %888)
          to label %.invoke955 unwind label %862

.invoke955:                                       ; preds = %.invoke957
  %890 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %889, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke953 unwind label %862

.invoke953:                                       ; preds = %.invoke955
  %891 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %890, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread612 unwind label %862

892:                                              ; preds = %880
  %893 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %894 unwind label %862

894:                                              ; preds = %892
  br i1 %893, label %895, label %910

895:                                              ; preds = %894
  %896 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %897 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %896, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %898 unwind label %862

898:                                              ; preds = %895
  %899 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %897, ptr noundef nonnull @.str.109)
          to label %900 unwind label %862

900:                                              ; preds = %898
  %901 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %899, ptr noundef nonnull align 8 dereferenceable(88) %111)
          to label %902 unwind label %862

902:                                              ; preds = %900
  %903 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef nonnull @.str.1)
          to label %904 unwind label %862

904:                                              ; preds = %902
  %905 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %906 unwind label %862

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

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

.thread612:                                       ; preds = %.invoke953, %874, %865, %883
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #8
  br label %1104

910:                                              ; preds = %894, %908
  %911 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %92)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #8
  br label %.thread609

912:                                              ; preds = %870, %862, %861
  %.pn511 = phi { ptr, i32 } [ %863, %862 ], [ %871, %870 ], [ %.pn509, %861 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  br label %913

913:                                              ; preds = %912, %855
  %.pn511.pn = phi { ptr, i32 } [ %.pn511, %912 ], [ %856, %855 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %92) #8
  br label %1106

.thread609:                                       ; preds = %781, %793, %910
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4)
          to label %1104 unwind label %787

914:                                              ; preds = %796, %797
  %915 = load i8, ptr %60, align 1, !tbaa !30, !range !65, !noundef !66
  %916 = trunc nuw i8 %915 to i1
  br i1 %916, label %917, label %1054

917:                                              ; preds = %914
  %918 = load i32, ptr %61, align 4, !tbaa !32
  switch i32 %918, label %1104 [
    i32 0, label %919
    i32 2, label %1043
    i32 1, label %1044
  ]

919:                                              ; preds = %917
  %920 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %921 unwind label %787

921:                                              ; preds = %919
  br i1 %920, label %922, label %935

922:                                              ; preds = %921
  %923 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %924 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %923, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %925 unwind label %787

925:                                              ; preds = %922
  %926 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %924, ptr noundef nonnull @.str.110)
          to label %927 unwind label %787

927:                                              ; preds = %925
  %928 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %926, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %929 unwind label %787

929:                                              ; preds = %927
  %930 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %928, ptr noundef nonnull @.str.111)
          to label %931 unwind label %787

931:                                              ; preds = %929
  %932 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %930, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %933 unwind label %787

933:                                              ; preds = %931
  %934 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %932, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %935 unwind label %787

935:                                              ; preds = %933, %921
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %95) #8
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %95)
          to label %936 unwind label %951

936:                                              ; preds = %935
  %937 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %938 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %937)
  %939 = getelementptr inbounds i8, ptr %938, i64 88
  %940 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %939, ptr noundef nonnull align 8 dereferenceable(16) %95)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %95) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %97) #8
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRS1_5LListIPS2_EE4$_15vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 1 dereferenceable(1) %97) #8
  %941 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull %96)
          to label %942 unwind label %953

942:                                              ; preds = %936
  br i1 %941, label %.critedge586, label %943

943:                                              ; preds = %942
  %944 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext false)
          to label %945 unwind label %953

945:                                              ; preds = %943
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #8
  br i1 %944, label %962, label %946

946:                                              ; preds = %945
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %98) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %947 unwind label %955

947:                                              ; preds = %946
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %100) #8
  store ptr %2, ptr %100, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE4$_16vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %99, ptr noundef nonnull align 8 dereferenceable(8) %100) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull %99)
          to label %948 unwind label %957

948:                                              ; preds = %947
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  %949 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %949, ptr noundef nonnull @.str.8)
          to label %950 unwind label %960

950:                                              ; preds = %948
  invoke void @__cxa_throw(ptr nonnull %949, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %1113 unwind label %787

951:                                              ; preds = %935
  %952 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %95) #8
  br label %1106

953:                                              ; preds = %943, %936
  %954 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #8
  br label %1106

955:                                              ; preds = %946
  %956 = landingpad { ptr, i32 }
          cleanup
  br label %959

957:                                              ; preds = %947
  %958 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %100) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br label %959

959:                                              ; preds = %957, %955
  %.pn516 = phi { ptr, i32 } [ %958, %957 ], [ %956, %955 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %98) #8
  br label %1106

960:                                              ; preds = %948
  %961 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %949) #8
  br label %1106

.critedge586:                                     ; preds = %942
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %97) #8
  br label %962

962:                                              ; preds = %.critedge586, %945
  %963 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %964 unwind label %787

964:                                              ; preds = %962
  br i1 %963, label %965, label %979

965:                                              ; preds = %964
  %966 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %967 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %966, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %968 unwind label %787

968:                                              ; preds = %965
  %969 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %967, ptr noundef nonnull @.str.3)
          to label %970 unwind label %787

970:                                              ; preds = %968
  %971 = call noundef i64 @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %194) #8
  %972 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEm(ptr noundef nonnull align 8 dereferenceable(8) %969, i64 noundef %971)
          to label %973 unwind label %787

973:                                              ; preds = %970
  %974 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %972, ptr noundef nonnull @.str.112)
          to label %975 unwind label %787

975:                                              ; preds = %973
  %976 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %974, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %977 unwind label %787

977:                                              ; preds = %975
  %978 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %976, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %979 unwind label %787

979:                                              ; preds = %977, %964
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %101) #8
  %980 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %194) #8
  store ptr %980, ptr %101, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %102) #8
  %981 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %194) #8
  store ptr %981, ptr %102, align 8
  %982 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  br i1 %982, label %.lr.ph841, label %._crit_edge842

._crit_edge842:                                   ; preds = %1005, %979
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %103) #8
  %983 = invoke ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %194, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1008 unwind label %1031

.lr.ph841:                                        ; preds = %979, %1005
  %984 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  %985 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %986 unwind label %1003

986:                                              ; preds = %.lr.ph841
  br i1 %985, label %987, label %1005

987:                                              ; preds = %986
  %988 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %989 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %988, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %990 unwind label %1003

990:                                              ; preds = %987
  %991 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %989, ptr noundef nonnull @.str.113)
          to label %992 unwind label %1003

992:                                              ; preds = %990
  %993 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %991, ptr noundef nonnull align 8 dereferenceable(8) %984)
          to label %994 unwind label %1003

994:                                              ; preds = %992
  %995 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %993, ptr noundef nonnull @.str.1)
          to label %996 unwind label %1003

996:                                              ; preds = %994
  %997 = getelementptr inbounds i8, ptr %984, i64 8
  %998 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN18TraitResolveCommon14CachedEqualityE(ptr noundef nonnull align 8 dereferenceable(8) %995, ptr noundef nonnull align 8 dereferenceable(104) %997)
          to label %999 unwind label %1003

999:                                              ; preds = %996
  %1000 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %998, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1001 unwind label %1003

1001:                                             ; preds = %999
  %1002 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1000, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1005 unwind label %1003

1003:                                             ; preds = %1001, %999, %996, %994, %992, %990, %987, %.lr.ph841
  %1004 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %102) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %101) #8
  br label %1106

1005:                                             ; preds = %1001, %986
  %1006 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %101) #8
  %1007 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %101, ptr noundef nonnull align 8 dereferenceable(8) %102) #8
  br i1 %1007, label %.lr.ph841, label %._crit_edge842

1008:                                             ; preds = %._crit_edge842
  store ptr %983, ptr %103, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %104) #8
  %1009 = call ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %194) #8
  store ptr %1009, ptr %104, align 8
  %1010 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %103, ptr noundef nonnull align 8 dereferenceable(8) %104) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %104) #8
  br i1 %1010, label %1011, label %1040

1011:                                             ; preds = %1008
  %1012 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1013 unwind label %1031

1013:                                             ; preds = %1011
  br i1 %1012, label %1014, label %1033

1014:                                             ; preds = %1013
  %1015 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1016 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1015, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1017 unwind label %1031

1017:                                             ; preds = %1014
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1016, ptr noundef nonnull @.str.114)
          to label %1019 unwind label %1031

1019:                                             ; preds = %1017
  %1020 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  %1021 = getelementptr inbounds i8, ptr %1020, i64 8
  %1022 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRKN18TraitResolveCommon14CachedEqualityE(ptr noundef nonnull align 8 dereferenceable(8) %1018, ptr noundef nonnull align 8 dereferenceable(104) %1021)
          to label %1023 unwind label %1031

1023:                                             ; preds = %1019
  %1024 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1022, ptr noundef nonnull @.str.115)
          to label %1025 unwind label %1031

1025:                                             ; preds = %1023
  %1026 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1024, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1027 unwind label %1031

1027:                                             ; preds = %1025
  %1028 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1026, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1029 unwind label %1031

1029:                                             ; preds = %1027
  %1030 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1028, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1033 unwind label %1031

1031:                                             ; preds = %1040, %1029, %1027, %1025, %1023, %1019, %1017, %1014, %1011, %._crit_edge842
  %1032 = landingpad { ptr, i32 }
          cleanup
  br label %1042

1033:                                             ; preds = %1029, %1013
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %105) #8
  %1034 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %103) #8
  %1035 = getelementptr inbounds i8, ptr %1034, i64 104
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %105, ptr noundef nonnull align 8 dereferenceable(8) %1035)
          to label %1036 unwind label %1038

1036:                                             ; preds = %1033
  %1037 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %105)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %105) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #8
  br label %1040

1038:                                             ; preds = %1033
  %1039 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %105) #8
  br label %1042

1040:                                             ; preds = %1036, %1008
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(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 %3, ptr %4)
          to label %1041 unwind label %1031

1041:                                             ; preds = %1040
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  br label %1104

1042:                                             ; preds = %1038, %1031
  %.pn514 = phi { ptr, i32 } [ %1032, %1031 ], [ %1039, %1038 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %103) #8
  br label %1106

1043:                                             ; preds = %917
  call void @__assert_fail(ptr noundef nonnull @.str.116, ptr noundef nonnull @.str.7, i32 noundef 2803, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

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

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

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

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 nonnull @.str.117)
          to label %1052 unwind label %787

1052:                                             ; preds = %1050
  %1053 = 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) %2)
          to label %.invoke954 unwind label %787

1054:                                             ; preds = %914
  %1055 = load ptr, ptr %197, align 8, !tbaa !69
  %1056 = invoke noundef zeroext i1 @_ZNK16HMTypeInferrence19type_contains_ivarsERKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(49) %1055, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext false)
          to label %1057 unwind label %787

1057:                                             ; preds = %1054
  br i1 %1056, label %1088, label %1058

1058:                                             ; preds = %1057
  %1059 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1060 unwind label %787

1060:                                             ; preds = %1058
  br i1 %1059, label %1061, label %1074

1061:                                             ; preds = %1060
  %1062 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1063 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1062, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1064 unwind label %787

1064:                                             ; preds = %1061
  %1065 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1063, ptr noundef nonnull @.str.110)
          to label %1066 unwind label %787

1066:                                             ; preds = %1064
  %1067 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1065, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %1068 unwind label %787

1068:                                             ; preds = %1066
  %1069 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1067, ptr noundef nonnull @.str.111)
          to label %1070 unwind label %787

1070:                                             ; preds = %1068
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1069, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %1072 unwind label %787

1072:                                             ; preds = %1070
  %1073 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1071, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1074 unwind label %787

1074:                                             ; preds = %1072, %1060
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %106) #8
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %106)
          to label %1075 unwind label %1086

1075:                                             ; preds = %1074
  %1076 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %203, ptr noundef nonnull align 8 dereferenceable(16) %106)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %106) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %106) #8
  %1077 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1078 unwind label %787

1078:                                             ; preds = %1075
  br i1 %1077, label %1079, label %1104

1079:                                             ; preds = %1078
  %1080 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1081 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1080, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1082 unwind label %787

1082:                                             ; preds = %1079
  %1083 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1081, ptr noundef nonnull @.str.118)
          to label %1084 unwind label %787

1084:                                             ; preds = %1082
  %1085 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1083, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.invoke956 unwind label %787

1086:                                             ; preds = %1074
  %1087 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %106) #8
  br label %1106

1088:                                             ; preds = %1057
  %1089 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1090 unwind label %787

1090:                                             ; preds = %1088
  br i1 %1089, label %1091, label %1104

1091:                                             ; preds = %1090
  %1092 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %1093 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1092, ptr noundef nonnull @__func__._ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
          to label %1094 unwind label %787

1094:                                             ; preds = %1091
  %1095 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1093, ptr noundef nonnull @.str.118)
          to label %1096 unwind label %787

1096:                                             ; preds = %1094
  %1097 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1095, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.invoke956 unwind label %787

.invoke956:                                       ; preds = %1096, %1084, %829
  %1098 = phi ptr [ %831, %829 ], [ %1085, %1084 ], [ %1097, %1096 ]
  %1099 = phi ptr [ @.str.105, %829 ], [ @.str.119, %1084 ], [ @.str.120, %1096 ]
  %1100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1098, ptr noundef nonnull %1099)
          to label %.invoke954 unwind label %787

.invoke954:                                       ; preds = %.invoke956, %1052
  %1101 = phi ptr [ %1053, %1052 ], [ %1100, %.invoke956 ]
  %1102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1101, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke unwind label %787

.invoke:                                          ; preds = %.invoke954
  %1103 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1102, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1104 unwind label %787

1104:                                             ; preds = %.invoke, %.thread612, %1078, %1090, %917, %1041, %1046, %.thread609, %822, %828
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %88) #8
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #8
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #8
  br label %.critedge584

.critedge584:                                     ; preds = %.critedge580, %751, %552, %1104
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #8
  br label %select.unfold

select.unfold.loopexit848:                        ; preds = %483, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %select.unfold

select.unfold:                                    ; preds = %377, %select.unfold.loopexit848, %367, %314, %267, %257, %249, %.critedge584
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %1105

1105:                                             ; preds = %167, %137, %133, %select.unfold
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  ret void

1106:                                             ; preds = %1086, %1042, %1003, %960, %959, %953, %951, %913, %824, %791, %789, %787
  %.pn518 = phi { ptr, i32 } [ %788, %787 ], [ %961, %960 ], [ %.pn516, %959 ], [ %1004, %1003 ], [ %.pn514, %1042 ], [ %954, %953 ], [ %952, %951 ], [ %1087, %1086 ], [ %825, %824 ], [ %.pn511.pn, %913 ], [ %792, %791 ], [ %790, %789 ]
  call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %88) #8
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %87) #8
  br label %1107

1107:                                             ; preds = %1106, %785
  %.pn518.pn = phi { ptr, i32 } [ %.pn518, %1106 ], [ %786, %785 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %87) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %86) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %85) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %84) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %83) #8
  br label %1108

1108:                                             ; preds = %570, %746, %1107, %756, %550, %530, %516
  %.pn531 = phi { ptr, i32 } [ %551, %550 ], [ %.pn518.pn, %1107 ], [ %.pn507, %756 ], [ %.pn496, %530 ], [ %.pn494, %516 ], [ %.pn521.pn.pn.pn.pn.pn.pn.pn, %746 ], [ %571, %570 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %60) #8
  br label %1109

1109:                                             ; preds = %.loopexit629.split.split, %.loopexit.split-lp630, %.loopexit624.split, %.loopexit.split-lp625, %.loopexit619.split, %.loopexit.split-lp620, %247, %246, %235, %281, %280, %269, %259, %312, %311, %300, %380, %372, %327, %492, %384, %1108, %192, %191, %185
  %.pn463.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn531, %1108 ], [ %186, %185 ], [ %193, %192 ], [ %.pn, %191 ], [ %236, %235 ], [ %248, %247 ], [ %.pn489, %246 ], [ %260, %259 ], [ %270, %269 ], [ %282, %281 ], [ %.pn485, %280 ], [ %301, %300 ], [ %313, %312 ], [ %.pn481, %311 ], [ %.pn476.pn.pn, %372 ], [ %.pn472, %380 ], [ %lpad.loopexit921, %327 ], [ %.pn463.pn.pn.pn.pn, %492 ], [ %385, %384 ], [ %lpad.loopexit942, %.loopexit619.split ], [ %lpad.loopexit.split-lp622, %.loopexit.split-lp620 ], [ %lpad.loopexit937, %.loopexit624.split ], [ %lpad.loopexit.split-lp627, %.loopexit.split-lp625 ], [ %lpad.loopexit631, %.loopexit629.split.split ], [ %lpad.loopexit.split-lp632, %.loopexit.split-lp630 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  br label %1110

1110:                                             ; preds = %1109, %183
  %.pn463.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn463.pn.pn.pn.pn.pn.pn.pn, %1109 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %1111

1111:                                             ; preds = %1110, %182, %127, %123
  %.pn537 = phi { ptr, i32 } [ %128, %127 ], [ %.pn535, %182 ], [ %.pn463.pn.pn.pn.pn.pn.pn.pn.pn, %1110 ], [ %124, %123 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %6) #8
  br label %1112

1112:                                             ; preds = %1111, %121
  %.pn537.pn = phi { ptr, i32 } [ %.pn537, %1111 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %6) #8
  resume { ptr, i32 } %.pn537.pn

1113:                                             ; preds = %950, %586, %351, %306, %275, %241, %181
  unreachable
}

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #5 align 2

declare noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #1

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(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 ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyBoundEEES9_(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 ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

declare void @_ZN18TraitResolveCommon29prep_indexes__add_trait_boundERK4SpanPKN3HIR13GenericParamsENS3_7TypeRefENS3_9TraitPathEb(ptr noundef nonnull align 8 dereferenceable(216), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef, i1 noundef zeroext) local_unnamed_addr #1

declare void @_ZNK3HIR9TraitPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #1

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIKN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityEEES9_(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 ptr @_ZNKSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48)) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #3 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(32) ptr @_ZL33monomorphise_genericpath_with_optRK4SpanRN3HIR11GenericPathERKS3_RK13Monomorphiserb(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext) local_unnamed_addr #2

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK7ImplRef16has_magic_paramsEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #1

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

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

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

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

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

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

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

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

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

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

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

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

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


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