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

; Unoptimized IR (clang -disable-llvm-passes):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.std::vector.543" = type { %"struct.std::_Vector_base.544" }
%"struct.std::_Vector_base.544" = type { %"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.541 = type { ptr }
%class.anon.542 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.548" = type { ptr }
%struct.Span = type { ptr }
%class.anon.549 = type { i8 }
%"class.std::vector.551" = type { %"struct.std::_Vector_base.552" }
%"struct.std::_Vector_base.552" = type { %"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.556" = type { ptr }
%class.anon.557 = type { i8 }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypePathBinding::Data_Opaque" = type { i8 }
%struct.StackGuard = type { i8 }
%struct.RecurseEntry = type <{ %"class.HIR::TypeRef", i32, [4 x i8] }>
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%class.anon.559 = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.560 = type { ptr, ptr }
%"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" = type { %"class.__gnu_cxx::__normal_iterator.439" }
%"class.__gnu_cxx::__normal_iterator.439" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%"class.std::function.336" = type { %"class.std::_Function_base", ptr }
%class.anon.561 = type { ptr, ptr }
%class.anon.562 = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.563 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.564 = type { ptr }
%class.anon.565 = type { ptr }
%class.anon.566 = type { ptr, ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.23", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.RangeVecMap = type <{ %"class.std::vector.29", [8 x i8] }>
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Closure" = type { ptr }
%"struct.HIR::ExprNode_Closure" = type { %"class.HIR::ExprNode.base", %"class.std::vector.266", %"class.HIR::TypeRef", %"class.std::unique_ptr.271", i8, i32, i8, %"struct.HIR::ExprNode_Closure::AvuCache", %"struct.HIR::LifetimeRef", ptr, %"class.HIR::GenericPath", %"class.HIR::GenericPath", %"class.std::vector.289" }
%"class.HIR::ExprNode.base" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32 }>
%"class.std::vector.266" = type { %"struct.std::_Vector_base.267" }
%"struct.std::_Vector_base.267" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.271" = type { %"struct.std::__uniq_ptr_data.272" }
%"struct.std::__uniq_ptr_data.272" = type { %"class.std::__uniq_ptr_impl.273" }
%"class.std::__uniq_ptr_impl.273" = type { %"class.std::tuple.274" }
%"class.std::tuple.274" = type { %"struct.std::_Tuple_impl.275" }
%"struct.std::_Tuple_impl.275" = type { %"struct.std::_Head_base.278" }
%"struct.std::_Head_base.278" = type { ptr }
%"struct.HIR::ExprNode_Closure::AvuCache" = type { %"class.std::vector.279", %"class.std::vector.284" }
%"class.std::vector.279" = type { %"struct.std::_Vector_base.280" }
%"struct.std::_Vector_base.280" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.284" = type { %"struct.std::_Vector_base.285" }
%"struct.std::_Vector_base.285" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::vector.289" = type { %"struct.std::_Vector_base.290" }
%"struct.std::_Vector_base.290" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.52", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.457" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"struct.std::pair.440" = type { %"struct.std::pair.442", %"struct.TraitResolveCommon::CachedBound" }
%"struct.std::pair.442" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath" }
%"struct.TraitResolveCommon::CachedBound" = type { %"class.HIR::GenericParams", ptr, %"class.std::map" }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.57", i8, %"class.std::unordered_map.339", %"class.std::unordered_map.353", %"class.std::unordered_multimap", %"class.std::unordered_map.380", i32, %"class.std::vector.57", %"struct.HIR::SimplePath" }
%"class.std::unordered_map.339" = type { %"class.std::_Hashtable.340" }
%"class.std::_Hashtable.340" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.353" = type { %"class.std::_Hashtable.354" }
%"class.std::_Hashtable.354" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.367" }
%"class.std::_Hashtable.367" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.380" = type { %"class.std::_Hashtable.381" }
%"class.std::_Hashtable.381" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::AssociatedType" = type { %"class.HIR::GenericParams", i8, %"struct.HIR::LifetimeRef", %"class.std::vector.57", %"class.HIR::TypeRef" }

@__dso_handle = external hidden global i8
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb = external hidden unnamed_addr constant [35 x i8], align 1
@_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level = external hidden global i32, align 4
@_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack = external hidden global %"class.std::vector.543", align 8
@_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack = external hidden global i64, align 8
@.str.54 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [40 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb = external hidden unnamed_addr constant [104 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef, ptr noundef) #7 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 nounwind uwtable
declare dso_local void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #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(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184)) #5 align 2

; Function Attrs: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4 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)) #3

; 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) #5 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 #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 @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4 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 uwtable
declare dso_local noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 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
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext %3) #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function.0", align 8
  %12 = alloca %class.anon.541, align 8
  %13 = alloca %"class.std::function.0", align 8
  %14 = alloca %class.anon.542, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i8, align 1
  %20 = alloca ptr, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function.0", align 8
  %26 = alloca %class.anon.549, align 1
  %27 = alloca %"class.std::vector.551", align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %31 = alloca ptr, align 8
  %32 = alloca ptr, align 8
  %33 = alloca %"class.__gnu_cxx::__normal_iterator.556", align 8
  %34 = alloca %"class.__gnu_cxx::__normal_iterator.556", align 8
  %35 = alloca %class.anon.557, align 1
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca %"class.HIR::TypePathBinding", align 8
  %38 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %39 = alloca i32, align 4
  %40 = alloca %struct.StackGuard, align 1
  %41 = alloca %struct.RecurseEntry, align 8
  %42 = alloca %"class.HIR::Path", align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"class.HIR::GenericPath", align 8
  %45 = alloca %class.RcString, align 8
  %46 = alloca %"struct.HIR::PathParams", align 8
  %47 = alloca %"class.HIR::TypePathBinding", align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca i8, align 1
  %58 = alloca ptr, align 8
  %59 = alloca %"class.HIR::TypeRef", align 8
  %60 = alloca %struct.Span, align 8
  %61 = alloca %"class.std::function.0", align 8
  %62 = alloca %class.anon.559, align 8
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %67 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %68 = alloca ptr, align 8
  %69 = alloca %struct.Span, align 8
  %70 = alloca %"class.std::function.0", align 8
  %71 = alloca %class.anon.560, align 8
  %72 = alloca %"class.HIR::TypeRef", align 8
  %73 = alloca i8, align 1
  %74 = alloca i8, align 1
  %75 = alloca ptr, align 8
  %76 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %77 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %78 = alloca ptr, align 8
  %79 = alloca ptr, align 8
  %80 = alloca ptr, align 8
  %81 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %82 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %83 = alloca %"class.HIR::TypeRef", align 8
  %84 = alloca ptr, align 8
  %85 = alloca ptr, align 8
  %86 = alloca ptr, align 8
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca %struct.MonomorphStatePtr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %92 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %93 = alloca ptr, align 8
  %94 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %95 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %96 = alloca %"class.HIR::TypeRef", align 8
  %97 = alloca %"class.HIR::TypeRef", align 8
  %98 = alloca %"struct.HIR::PathParams", align 8
  %99 = alloca ptr, align 8
  %100 = alloca i8, align 1
  %101 = alloca %"class.std::function.336", align 8
  %102 = alloca %class.anon.561, align 8
  %103 = alloca %"class.HIR::GenericPath", align 8
  %104 = alloca %struct.Span, align 8
  %105 = alloca %"class.std::function.0", align 8
  %106 = alloca %class.anon.562, align 8
  %107 = alloca i8, align 1
  %108 = alloca %struct.ImplRef, align 8
  %109 = alloca %"class.std::function", align 8
  %110 = alloca %class.anon.563, align 8
  %111 = alloca %"class.HIR::TypePathBinding", align 8
  %112 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %113 = alloca %struct.Span, align 8
  %114 = alloca %"class.std::function.0", align 8
  %115 = alloca %class.anon.564, align 8
  %116 = alloca %"class.HIR::TypePathBinding", align 8
  %117 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %118 = alloca %struct.Span, align 8
  %119 = alloca %"class.std::function.0", align 8
  %120 = alloca %class.anon.565, align 8
  %121 = alloca i8, align 1
  %122 = alloca %struct.Span, align 8
  %123 = alloca %"class.std::function.0", align 8
  %124 = alloca %class.anon.566, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  %125 = zext i1 %3 to i8
  store i8 %125, ptr %9, align 1, !tbaa !9
  %126 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %10) #0
  %127 = call noundef zeroext i1 @_Z13debug_enabledv()
  %128 = zext i1 %127 to i64
  %129 = select i1 %127, ptr @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #0
  %130 = getelementptr inbounds %class.anon.541, ptr %12, i32 0, i32 0
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %131, ptr %130, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #0
  %132 = getelementptr inbounds %class.anon.542, ptr %14, i32 0, i32 0
  %133 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %133, ptr %132, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %129, ptr noundef %11, ptr noundef %13)
          to label %134 unwind label %160

134:                                              ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #0
  %135 = load ptr, ptr %8, align 8, !tbaa !5
  %136 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %135)
          to label %137 unwind label %164

137:                                              ; preds = %134
  %138 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %136)
          to label %139 unwind label %164

139:                                              ; preds = %137
  store ptr %138, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #0
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %"class.HIR::Path", ptr %141, i32 0, i32 0
  %143 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %142)
          to label %144 unwind label %168

144:                                              ; preds = %139
  store ptr %143, ptr %18, align 8, !tbaa !5
  %145 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack acquire, align 8
  %146 = icmp eq i8 %145, 0
  br i1 %146, label %147, label %152, !prof !11

147:                                              ; preds = %144
  %148 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %152

150:                                              ; preds = %147
  call void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %151 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EED2Ev, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  br label %152

152:                                              ; preds = %150, %147, %144
  call void @llvm.lifetime.start.p0(i64 1, ptr %19) #0
  store i8 0, ptr %19, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #0
  store ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #0
  %153 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %154 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.548", ptr %21, i32 0, i32 0
  store ptr %153, ptr %154, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  %155 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.548", ptr %22, i32 0, i32 0
  store ptr %155, ptr %156, align 8
  br label %157

157:                                              ; preds = %239, %152
  %158 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  br i1 %158, label %172, label %159

159:                                              ; preds = %157
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %242

160:                                              ; preds = %4
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %15, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #0
  br label %1661

164:                                              ; preds = %137, %134
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %15, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %16, align 4
  br label %1660

168:                                              ; preds = %139
  %169 = landingpad { ptr, i32 }
          cleanup
  %170 = extractvalue { ptr, i32 } %169, 0
  store ptr %170, ptr %15, align 8
  %171 = extractvalue { ptr, i32 } %169, 1
  store i32 %171, ptr %16, align 4
  br label %1659

172:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #0
  %173 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #0
  store ptr %173, ptr %23, align 8, !tbaa !5
  br label %174

174:                                              ; preds = %172
  %175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %176 unwind label %196

176:                                              ; preds = %174
  br i1 %175, label %177, label %200

177:                                              ; preds = %176
  %178 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %178, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %180 unwind label %196

180:                                              ; preds = %177
  %181 = load ptr, ptr %23, align 8, !tbaa !5
  %182 = getelementptr inbounds %struct.RecurseEntry, ptr %181, i32 0, i32 0
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull align 8 dereferenceable(8) %182)
          to label %184 unwind label %196

184:                                              ; preds = %180
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef @.str.25)
          to label %186 unwind label %196

186:                                              ; preds = %184
  %187 = load ptr, ptr %23, align 8, !tbaa !5
  %188 = getelementptr inbounds %struct.RecurseEntry, ptr %187, i32 0, i32 1
  %189 = load i32, ptr %188, align 8, !tbaa !14
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %185, i32 noundef %189)
          to label %191 unwind label %196

191:                                              ; preds = %186
  %192 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %190, ptr noundef @_ZSt3decRSt8ios_base)
          to label %193 unwind label %196

193:                                              ; preds = %191
  %194 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %192, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %195 unwind label %196

195:                                              ; preds = %193
  br label %200

196:                                              ; preds = %221, %202, %193, %191, %186, %184, %180, %177, %174
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %15, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %16, align 4
  br label %241

200:                                              ; preds = %195, %176
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  %203 = load ptr, ptr %23, align 8, !tbaa !5
  %204 = getelementptr inbounds %struct.RecurseEntry, ptr %203, i32 0, i32 0
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %205)
          to label %207 unwind label %196

207:                                              ; preds = %202
  br i1 %206, label %208, label %238

208:                                              ; preds = %207
  %209 = load ptr, ptr %23, align 8, !tbaa !5
  %210 = getelementptr inbounds %struct.RecurseEntry, ptr %209, i32 0, i32 1
  %211 = load i32, ptr %210, align 8, !tbaa !14
  %212 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  %213 = icmp eq i32 %211, %212
  br i1 %213, label %214, label %215

214:                                              ; preds = %208
  store i8 1, ptr %19, align 1, !tbaa !9
  br label %237

215:                                              ; preds = %208
  br label %216

216:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  %217 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %217)
          to label %218 unwind label %222

218:                                              ; preds = %216
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(1) %26) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef %25)
          to label %219 unwind label %226

219:                                              ; preds = %218
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  %220 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %220, ptr noundef @.str)
          to label %221 unwind label %231

221:                                              ; preds = %219
  invoke void @__cxa_throw(ptr %220, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %196

222:                                              ; preds = %216
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %15, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %16, align 4
  br label %230

226:                                              ; preds = %218
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %15, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  br label %230

230:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  br label %241

231:                                              ; preds = %219
  %232 = landingpad { ptr, i32 }
          cleanup
  %233 = extractvalue { ptr, i32 } %232, 0
  store ptr %233, ptr %15, align 8
  %234 = extractvalue { ptr, i32 } %232, 1
  store i32 %234, ptr %16, align 4
  call void @__cxa_free_exception(ptr %220) #0
  br label %241

235:                                              ; No predecessors!
  br label %236

236:                                              ; preds = %235
  br label %237

237:                                              ; preds = %236, %214
  br label %238

238:                                              ; preds = %237, %207
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  br label %239

239:                                              ; preds = %238
  %240 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #0
  br label %157

241:                                              ; preds = %231, %230, %196
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #0
  br label %404

242:                                              ; preds = %159
  %243 = load i8, ptr %19, align 1, !tbaa !9, !range !17, !noundef !18
  %244 = trunc i8 %243 to i1
  br i1 %244, label %245, label %362

245:                                              ; preds = %242
  br label %246

246:                                              ; preds = %245
  %247 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %248 unwind label %259

248:                                              ; preds = %246
  br i1 %247, label %249, label %263

249:                                              ; preds = %248
  %250 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %250, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %252 unwind label %259

252:                                              ; preds = %249
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %251, ptr noundef @.str.54)
          to label %254 unwind label %259

254:                                              ; preds = %252
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef @_ZSt3decRSt8ios_base)
          to label %256 unwind label %259

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %258 unwind label %259

258:                                              ; preds = %256
  br label %263

259:                                              ; preds = %256, %254, %252, %249, %246
  %260 = landingpad { ptr, i32 }
          cleanup
  %261 = extractvalue { ptr, i32 } %260, 0
  store ptr %261, ptr %15, align 8
  %262 = extractvalue { ptr, i32 } %260, 1
  store i32 %262, ptr %16, align 4
  br label %404

263:                                              ; preds = %258, %248
  br label %264

264:                                              ; preds = %263
  br label %265

265:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #0
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #0
  store ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %266 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %267 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.548", ptr %29, i32 0, i32 0
  store ptr %266, ptr %267, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #0
  %268 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #0
  %269 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.548", ptr %30, i32 0, i32 0
  store ptr %268, ptr %269, align 8
  br label %270

270:                                              ; preds = %289, %265
  %271 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #0
  br i1 %271, label %273, label %272

272:                                              ; preds = %270
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %291

273:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  %274 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #0
  store ptr %274, ptr %31, align 8, !tbaa !5
  %275 = load ptr, ptr %31, align 8, !tbaa !5
  %276 = getelementptr inbounds %struct.RecurseEntry, ptr %275, i32 0, i32 1
  %277 = load i32, ptr %276, align 8, !tbaa !14
  %278 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  %279 = icmp eq i32 %277, %278
  br i1 %279, label %280, label %288

280:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %281 = load ptr, ptr %31, align 8, !tbaa !5
  %282 = getelementptr inbounds %struct.RecurseEntry, ptr %281, i32 0, i32 0
  store ptr %282, ptr %32, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef nonnull align 8 dereferenceable(8) %32)
          to label %283 unwind label %284

283:                                              ; preds = %280
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %288

284:                                              ; preds = %280
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %15, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #0
  br label %361

288:                                              ; preds = %283, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  br label %289

289:                                              ; preds = %288
  %290 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #0
  br label %270

291:                                              ; preds = %272
  %292 = call noundef i64 @_ZNKSt6vectorIPKN3HIR7TypeRefESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  %293 = icmp ugt i64 %292, 1
  br i1 %293, label %294, label %323

294:                                              ; preds = %291
  %295 = call ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  %296 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %33, i32 0, i32 0
  store ptr %295, ptr %296, align 8
  %297 = call ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  %298 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %34, i32 0, i32 0
  store ptr %297, ptr %298, align 8
  %299 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %33, i32 0, i32 0
  %300 = load ptr, ptr %299, align 8
  %301 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %34, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPKN3HIR7TypeRefESt6vectorIS5_SaIS5_EEEEZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRS3_bE4$_11EvT_SH_T0_"(ptr %300, ptr %302)
          to label %303 unwind label %310

303:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #0
  %304 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %27, i64 noundef 0) #0
  %305 = load ptr, ptr %304, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %305)
          to label %306 unwind label %314

306:                                              ; preds = %303
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %307, ptr noundef nonnull align 8 dereferenceable(8) %36)
          to label %309 unwind label %318

309:                                              ; preds = %306
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  br label %323

310:                                              ; preds = %337, %335, %332, %330, %327, %324, %294
  %311 = landingpad { ptr, i32 }
          cleanup
  %312 = extractvalue { ptr, i32 } %311, 0
  store ptr %312, ptr %15, align 8
  %313 = extractvalue { ptr, i32 } %311, 1
  store i32 %313, ptr %16, align 4
  br label %361

314:                                              ; preds = %303
  %315 = landingpad { ptr, i32 }
          cleanup
  %316 = extractvalue { ptr, i32 } %315, 0
  store ptr %316, ptr %15, align 8
  %317 = extractvalue { ptr, i32 } %315, 1
  store i32 %317, ptr %16, align 4
  br label %322

318:                                              ; preds = %306
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %15, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  br label %322

322:                                              ; preds = %318, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  br label %361

323:                                              ; preds = %309, %291
  br label %324

324:                                              ; preds = %323
  %325 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %326 unwind label %310

326:                                              ; preds = %324
  br i1 %325, label %327, label %340

327:                                              ; preds = %326
  %328 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %329 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %328, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %330 unwind label %310

330:                                              ; preds = %327
  %331 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef @.str.55)
          to label %332 unwind label %310

332:                                              ; preds = %330
  %333 = load ptr, ptr %8, align 8, !tbaa !5
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %331, ptr noundef nonnull align 8 dereferenceable(8) %333)
          to label %335 unwind label %310

335:                                              ; preds = %332
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef @_ZSt3decRSt8ios_base)
          to label %337 unwind label %310

337:                                              ; preds = %335
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %339 unwind label %310

339:                                              ; preds = %337
  br label %340

340:                                              ; preds = %339, %326
  br label %341

341:                                              ; preds = %340
  br label %342

342:                                              ; preds = %341
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #0
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %37)
          to label %343 unwind label %352

343:                                              ; preds = %342
  %344 = load ptr, ptr %8, align 8, !tbaa !5
  %345 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %344)
          to label %346 unwind label %356

346:                                              ; preds = %343
  %347 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %345)
          to label %348 unwind label %356

348:                                              ; preds = %346
  %349 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %347, i32 0, i32 1
  %350 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %349, ptr noundef nonnull align 8 dereferenceable(16) %37)
          to label %351 unwind label %356

351:                                              ; preds = %348
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #0
  store i1 false, ptr %5, align 1
  store i32 1, ptr %39, align 4
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #0
  br label %363

352:                                              ; preds = %342
  %353 = landingpad { ptr, i32 }
          cleanup
  %354 = extractvalue { ptr, i32 } %353, 0
  store ptr %354, ptr %15, align 8
  %355 = extractvalue { ptr, i32 } %353, 1
  store i32 %355, ptr %16, align 4
  br label %360

356:                                              ; preds = %348, %346, %343
  %357 = landingpad { ptr, i32 }
          cleanup
  %358 = extractvalue { ptr, i32 } %357, 0
  store ptr %358, ptr %15, align 8
  %359 = extractvalue { ptr, i32 } %357, 1
  store i32 %359, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %37) #0
  br label %360

360:                                              ; preds = %356, %352
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #0
  br label %361

361:                                              ; preds = %360, %322, %310, %284
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #0
  br label %404

362:                                              ; preds = %242
  store i32 0, ptr %39, align 4
  br label %363

363:                                              ; preds = %362, %351
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #0
  %364 = load i32, ptr %39, align 4
  switch i32 %364, label %1657 [
    i32 0, label %365
  ]

365:                                              ; preds = %363
  call void @llvm.lifetime.start.p0(i64 1, ptr %40) #0
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #0
  %366 = getelementptr inbounds %struct.RecurseEntry, ptr %41, i32 0, i32 0
  %367 = load ptr, ptr %18, align 8, !tbaa !5
  %368 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %367, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %368)
          to label %369 unwind label %405

369:                                              ; preds = %365
  %370 = load ptr, ptr %18, align 8, !tbaa !5
  %371 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %370, i32 0, i32 1
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %44, ptr noundef nonnull align 8 dereferenceable(32) %371)
          to label %372 unwind label %409

372:                                              ; preds = %369
  %373 = load ptr, ptr %18, align 8, !tbaa !5
  %374 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %373, i32 0, i32 2
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %375 unwind label %413

375:                                              ; preds = %372
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %46)
          to label %376 unwind label %417

376:                                              ; preds = %375
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %42, ptr noundef %43, ptr noundef %44, ptr noundef %45, ptr noundef %46)
          to label %377 unwind label %421

377:                                              ; preds = %376
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47)
          to label %378 unwind label %425

378:                                              ; preds = %377
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %366, ptr noundef %42, ptr noundef %47)
          to label %379 unwind label %429

379:                                              ; preds = %378
  %380 = getelementptr inbounds %struct.RecurseEntry, ptr %41, i32 0, i32 1
  %381 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  store i32 %381, ptr %380, align 8, !tbaa !14
  invoke void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr noundef nonnull align 8 dereferenceable(12) %41)
          to label %382 unwind label %433

382:                                              ; preds = %379
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN12RecurseEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %41) #0
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #0
  %383 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  %384 = add i32 %383, 1
  store i32 %384, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  %385 = load ptr, ptr %7, align 8, !tbaa !5
  %386 = load ptr, ptr %18, align 8, !tbaa !5
  %387 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %386, i32 0, i32 0
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(8) %387)
          to label %388 unwind label %444

388:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #0
  %389 = load ptr, ptr %18, align 8, !tbaa !5
  %390 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %389, i32 0, i32 1
  %391 = getelementptr inbounds %"class.HIR::GenericPath", ptr %390, i32 0, i32 1
  %392 = getelementptr inbounds %"struct.HIR::PathParams", ptr %391, i32 0, i32 1
  store ptr %392, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #0
  %393 = load ptr, ptr %48, align 8, !tbaa !5
  %394 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %395 unwind label %448

395:                                              ; preds = %388
  store ptr %394, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #0
  %396 = load ptr, ptr %48, align 8, !tbaa !5
  %397 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %396)
          to label %398 unwind label %452

398:                                              ; preds = %395
  store ptr %397, ptr %50, align 8, !tbaa !5
  br label %399

399:                                              ; preds = %461, %398
  %400 = load ptr, ptr %49, align 8, !tbaa !5
  %401 = load ptr, ptr %50, align 8, !tbaa !5
  %402 = icmp ne ptr %400, %401
  br i1 %402, label %456, label %403

403:                                              ; preds = %399
  store i32 14, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %470

404:                                              ; preds = %361, %259, %241
  call void @llvm.lifetime.end.p0(i64 1, ptr %19) #0
  br label %1659

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

409:                                              ; preds = %369
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %15, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %16, align 4
  br label %442

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

417:                                              ; preds = %375
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %15, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %16, align 4
  br label %440

421:                                              ; preds = %376
  %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
  br label %439

425:                                              ; preds = %377
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %15, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %16, align 4
  br label %438

429:                                              ; preds = %378
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %15, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %16, align 4
  br label %437

433:                                              ; preds = %379
  %434 = landingpad { ptr, i32 }
          cleanup
  %435 = extractvalue { ptr, i32 } %434, 0
  store ptr %435, ptr %15, align 8
  %436 = extractvalue { ptr, i32 } %434, 1
  store i32 %436, ptr %16, align 4
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN12RecurseEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %41) #0
  br label %437

437:                                              ; preds = %433, %429
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %47) #0
  br label %438

438:                                              ; preds = %437, %425
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %42) #0
  br label %439

439:                                              ; preds = %438, %421
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %46) #0
  br label %440

440:                                              ; preds = %439, %417
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #0
  br label %441

441:                                              ; preds = %440, %413
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #0
  br label %442

442:                                              ; preds = %441, %409
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  br label %443

443:                                              ; preds = %442, %405
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #0
  br label %1656

444:                                              ; preds = %487, %485, %481, %479, %476, %473, %382
  %445 = landingpad { ptr, i32 }
          cleanup
  %446 = extractvalue { ptr, i32 } %445, 0
  store ptr %446, ptr %15, align 8
  %447 = extractvalue { ptr, i32 } %445, 1
  store i32 %447, ptr %16, align 4
  br label %1656

448:                                              ; preds = %388
  %449 = landingpad { ptr, i32 }
          cleanup
  %450 = extractvalue { ptr, i32 } %449, 0
  store ptr %450, ptr %15, align 8
  %451 = extractvalue { ptr, i32 } %449, 1
  store i32 %451, ptr %16, align 4
  br label %469

452:                                              ; preds = %395
  %453 = landingpad { ptr, i32 }
          cleanup
  %454 = extractvalue { ptr, i32 } %453, 0
  store ptr %454, ptr %15, align 8
  %455 = extractvalue { ptr, i32 } %453, 1
  store i32 %455, ptr %16, align 4
  br label %468

456:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #0
  %457 = load ptr, ptr %49, align 8, !tbaa !5
  store ptr %457, ptr %51, align 8, !tbaa !5
  %458 = load ptr, ptr %7, align 8, !tbaa !5
  %459 = load ptr, ptr %51, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %459)
          to label %460 unwind label %464

460:                                              ; preds = %456
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %461

461:                                              ; preds = %460
  %462 = load ptr, ptr %49, align 8, !tbaa !5
  %463 = getelementptr inbounds %"class.HIR::TypeRef", ptr %462, i32 1
  store ptr %463, ptr %49, align 8, !tbaa !5
  br label %399

464:                                              ; preds = %456
  %465 = landingpad { ptr, i32 }
          cleanup
  %466 = extractvalue { ptr, i32 } %465, 0
  store ptr %466, ptr %15, align 8
  %467 = extractvalue { ptr, i32 } %465, 1
  store i32 %467, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #0
  br label %468

468:                                              ; preds = %464, %452
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #0
  br label %469

469:                                              ; preds = %468, %448
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #0
  br label %1656

470:                                              ; preds = %403
  %471 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  %472 = sub i32 %471, 1
  store i32 %472, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !12
  br label %473

473:                                              ; preds = %470
  %474 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %475 unwind label %444

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

476:                                              ; preds = %475
  %477 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %478 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %477, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %479 unwind label %444

479:                                              ; preds = %476
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef @.str.56)
          to label %481 unwind label %444

481:                                              ; preds = %479
  %482 = load ptr, ptr %17, align 8, !tbaa !5
  %483 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %482, i32 0, i32 0
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull align 8 dereferenceable(88) %483)
          to label %485 unwind label %444

485:                                              ; preds = %481
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef @_ZSt3decRSt8ios_base)
          to label %487 unwind label %444

487:                                              ; preds = %485
  %488 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %486, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %489 unwind label %444

489:                                              ; preds = %487
  br label %490

490:                                              ; preds = %489, %475
  br label %491

491:                                              ; preds = %490
  br label %492

492:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  %493 = load ptr, ptr %18, align 8, !tbaa !5
  %494 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %493, i32 0, i32 0
  store ptr %494, ptr %52, align 8, !tbaa !5
  br label %495

495:                                              ; preds = %522, %492
  %496 = load ptr, ptr %52, align 8, !tbaa !5
  %497 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %496)
          to label %498 unwind label %524

498:                                              ; preds = %495
  %499 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %497)
          to label %500 unwind label %524

500:                                              ; preds = %498
  br i1 %499, label %501, label %511

501:                                              ; preds = %500
  %502 = load ptr, ptr %52, align 8, !tbaa !5
  %503 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %502)
          to label %504 unwind label %524

504:                                              ; preds = %501
  %505 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %503)
          to label %506 unwind label %524

506:                                              ; preds = %504
  %507 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %505, i32 0, i32 0
  %508 = getelementptr inbounds %"class.HIR::Path", ptr %507, i32 0, i32 0
  %509 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %508)
          to label %510 unwind label %524

510:                                              ; preds = %506
  br label %511

511:                                              ; preds = %510, %500
  %512 = phi i1 [ false, %500 ], [ %509, %510 ]
  br i1 %512, label %513, label %528

513:                                              ; preds = %511
  %514 = load ptr, ptr %52, align 8, !tbaa !5
  %515 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %514)
          to label %516 unwind label %524

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

518:                                              ; preds = %516
  %519 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %517, i32 0, i32 0
  %520 = getelementptr inbounds %"class.HIR::Path", ptr %519, i32 0, i32 0
  %521 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %520)
          to label %522 unwind label %524

522:                                              ; preds = %518
  %523 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %521, i32 0, i32 0
  store ptr %523, ptr %52, align 8, !tbaa !5
  br label %495, !llvm.loop !19

524:                                              ; preds = %545, %543, %541, %538, %535, %531, %528, %518, %516, %513, %506, %504, %501, %498, %495
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %15, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %1656

528:                                              ; preds = %511
  %529 = load ptr, ptr %52, align 8, !tbaa !5
  %530 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %529)
          to label %531 unwind label %524

531:                                              ; preds = %528
  %532 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %530)
          to label %533 unwind label %524

533:                                              ; preds = %531
  br i1 %532, label %534, label %551

534:                                              ; preds = %533
  br label %535

535:                                              ; preds = %534
  %536 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %537 unwind label %524

537:                                              ; preds = %535
  br i1 %536, label %538, label %548

538:                                              ; preds = %537
  %539 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %540 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %539, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %541 unwind label %524

541:                                              ; preds = %538
  %542 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %540, ptr noundef @.str.57)
          to label %543 unwind label %524

543:                                              ; preds = %541
  %544 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %542, ptr noundef @_ZSt3decRSt8ios_base)
          to label %545 unwind label %524

545:                                              ; preds = %543
  %546 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %544, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %547 unwind label %524

547:                                              ; preds = %545
  br label %548

548:                                              ; preds = %547, %537
  br label %549

549:                                              ; preds = %548
  br label %550

550:                                              ; preds = %549
  store i1 false, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %552

551:                                              ; preds = %533
  store i32 0, ptr %39, align 4
  br label %552

552:                                              ; preds = %551, %550
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  %553 = load i32, ptr %39, align 4
  switch i32 %553, label %1655 [
    i32 0, label %554
  ]

554:                                              ; preds = %552
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #0
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %555

555:                                              ; preds = %850, %554
  %556 = load i8, ptr %53, align 1, !tbaa !9, !range !17, !noundef !18
  %557 = trunc i8 %556 to i1
  br i1 %557, label %559, label %558

558:                                              ; preds = %555
  store i32 22, ptr %39, align 4
  br label %851

559:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  %560 = load ptr, ptr %18, align 8, !tbaa !5
  %561 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %560, i32 0, i32 0
  %562 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %561)
          to label %563 unwind label %568

563:                                              ; preds = %559
  store ptr %562, ptr %54, align 8, !tbaa !5
  br label %564

564:                                              ; preds = %845, %563
  %565 = load i8, ptr %53, align 1, !tbaa !9, !range !17, !noundef !18
  %566 = trunc i8 %565 to i1
  br i1 %566, label %572, label %567

567:                                              ; preds = %564
  store i32 25, ptr %39, align 4
  br label %846

568:                                              ; preds = %572, %559
  %569 = landingpad { ptr, i32 }
          cleanup
  %570 = extractvalue { ptr, i32 } %569, 0
  store ptr %570, ptr %15, align 8
  %571 = extractvalue { ptr, i32 } %569, 1
  store i32 %571, ptr %16, align 4
  br label %848

572:                                              ; preds = %564
  %573 = load ptr, ptr %54, align 8, !tbaa !5
  %574 = invoke noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %573)
          to label %575 unwind label %568

575:                                              ; preds = %572
  switch i32 %574, label %577 [
    i32 0, label %576
    i32 1, label %578
    i32 15, label %621
    i32 6, label %721
  ]

576:                                              ; preds = %575
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1703, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb) #10
  unreachable

577:                                              ; preds = %575
  br label %844

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

579:                                              ; preds = %617, %578
  %580 = load i8, ptr %55, align 1, !tbaa !9, !range !17, !noundef !18
  %581 = trunc i8 %580 to i1
  br i1 %581, label %583, label %582

582:                                              ; preds = %579
  store i32 29, ptr %39, align 4
  br label %618

583:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #0
  %584 = load ptr, ptr %54, align 8, !tbaa !5
  %585 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %584)
          to label %586 unwind label %592

586:                                              ; preds = %583
  store ptr %585, ptr %56, align 8, !tbaa !5
  br label %587

587:                                              ; preds = %613, %586
  %588 = load ptr, ptr %56, align 8, !tbaa !5
  %589 = load i8, ptr %55, align 1, !tbaa !9, !range !17, !noundef !18
  %590 = trunc i8 %589 to i1
  br i1 %590, label %596, label %591

591:                                              ; preds = %587
  store i32 32, ptr %39, align 4
  br label %614

592:                                              ; preds = %607, %605, %603, %600, %597, %583
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %15, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #0
  br label %848

596:                                              ; preds = %587
  br label %597

597:                                              ; preds = %596
  %598 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %599 unwind label %592

599:                                              ; preds = %597
  br i1 %598, label %600, label %610

600:                                              ; preds = %599
  %601 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %601, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %603 unwind label %592

603:                                              ; preds = %600
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %602, ptr noundef @.str.57)
          to label %605 unwind label %592

605:                                              ; preds = %603
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef @_ZSt3decRSt8ios_base)
          to label %607 unwind label %592

607:                                              ; preds = %605
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %609 unwind label %592

609:                                              ; preds = %607
  br label %610

610:                                              ; preds = %609, %599
  br label %611

611:                                              ; preds = %610
  br label %612

612:                                              ; preds = %611
  store i1 false, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %614

613:                                              ; No predecessors!
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %587, !llvm.loop !21

614:                                              ; preds = %612, %591
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #0
  %615 = load i32, ptr %39, align 4
  switch i32 %615, label %618 [
    i32 32, label %616
  ]

616:                                              ; preds = %614
  br label %617

617:                                              ; preds = %616
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %579, !llvm.loop !22

618:                                              ; preds = %614, %582
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #0
  %619 = load i32, ptr %39, align 4
  switch i32 %619, label %846 [
    i32 29, label %620
  ]

620:                                              ; preds = %618
  br label %844

621:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #0
  store i8 1, ptr %57, align 1, !tbaa !9
  br label %622

622:                                              ; preds = %717, %621
  %623 = load i8, ptr %57, align 1, !tbaa !9, !range !17, !noundef !18
  %624 = trunc i8 %623 to i1
  br i1 %624, label %626, label %625

625:                                              ; preds = %622
  store i32 37, ptr %39, align 4
  br label %718

626:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #0
  %627 = load ptr, ptr %54, align 8, !tbaa !5
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %627)
          to label %629 unwind label %635

629:                                              ; preds = %626
  store ptr %628, ptr %58, align 8, !tbaa !5
  br label %630

630:                                              ; preds = %712, %629
  %631 = load ptr, ptr %58, align 8, !tbaa !5
  %632 = load i8, ptr %57, align 1, !tbaa !9, !range !17, !noundef !18
  %633 = trunc i8 %632 to i1
  br i1 %633, label %639, label %634

634:                                              ; preds = %630
  store i32 40, ptr %39, align 4
  br label %713

635:                                              ; preds = %694, %663, %655, %647, %639, %626
  %636 = landingpad { ptr, i32 }
          cleanup
  %637 = extractvalue { ptr, i32 } %636, 0
  store ptr %637, ptr %15, align 8
  %638 = extractvalue { ptr, i32 } %636, 1
  store i32 %638, ptr %16, align 4
  br label %715

639:                                              ; preds = %630
  %640 = load ptr, ptr %18, align 8, !tbaa !5
  %641 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %640, i32 0, i32 1
  %642 = getelementptr inbounds %"class.HIR::GenericPath", ptr %641, i32 0, i32 0
  %643 = getelementptr inbounds i8, ptr %126, i64 8
  %644 = getelementptr inbounds %struct.TraitResolveCommon, ptr %643, i32 0, i32 10
  %645 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef nonnull align 8 dereferenceable(8) %644)
          to label %646 unwind label %635

646:                                              ; preds = %639
  br i1 %645, label %663, label %647

647:                                              ; preds = %646
  %648 = load ptr, ptr %18, align 8, !tbaa !5
  %649 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %648, i32 0, i32 1
  %650 = getelementptr inbounds %"class.HIR::GenericPath", ptr %649, i32 0, i32 0
  %651 = getelementptr inbounds i8, ptr %126, i64 8
  %652 = getelementptr inbounds %struct.TraitResolveCommon, ptr %651, i32 0, i32 11
  %653 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %650, ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %654 unwind label %635

654:                                              ; preds = %647
  br i1 %653, label %663, label %655

655:                                              ; preds = %654
  %656 = load ptr, ptr %18, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %656, i32 0, i32 1
  %658 = getelementptr inbounds %"class.HIR::GenericPath", ptr %657, i32 0, i32 0
  %659 = getelementptr inbounds i8, ptr %126, i64 8
  %660 = getelementptr inbounds %struct.TraitResolveCommon, ptr %659, i32 0, i32 12
  %661 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef nonnull align 8 dereferenceable(8) %660)
          to label %662 unwind label %635

662:                                              ; preds = %655
  br i1 %661, label %663, label %711

663:                                              ; preds = %662, %654, %646
  %664 = load ptr, ptr %18, align 8, !tbaa !5
  %665 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %664, i32 0, i32 2
  %666 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %665, ptr noundef @.str.7)
          to label %667 unwind label %635

667:                                              ; preds = %663
  br i1 %666, label %668, label %686

668:                                              ; preds = %667
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #0
  %669 = load ptr, ptr %58, align 8, !tbaa !5
  %670 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %669, i32 0, i32 0
  %671 = load ptr, ptr %670, align 8, !tbaa !23
  %672 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %671, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %59, ptr noundef nonnull align 8 dereferenceable(8) %672)
          to label %673 unwind label %677

673:                                              ; preds = %668
  %674 = load ptr, ptr %8, align 8, !tbaa !5
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull align 8 dereferenceable(8) %59)
          to label %676 unwind label %681

676:                                              ; preds = %673
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  store i1 true, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %713

677:                                              ; preds = %668
  %678 = landingpad { ptr, i32 }
          cleanup
  %679 = extractvalue { ptr, i32 } %678, 0
  store ptr %679, ptr %15, align 8
  %680 = extractvalue { ptr, i32 } %678, 1
  store i32 %680, ptr %16, align 4
  br label %685

681:                                              ; preds = %673
  %682 = landingpad { ptr, i32 }
          cleanup
  %683 = extractvalue { ptr, i32 } %682, 0
  store ptr %683, ptr %15, align 8
  %684 = extractvalue { ptr, i32 } %682, 1
  store i32 %684, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #0
  br label %685

685:                                              ; preds = %681, %677
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #0
  br label %715

686:                                              ; preds = %667
  br label %687

687:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #0
  %688 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %688)
          to label %689 unwind label %695

689:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #0
  %690 = getelementptr inbounds %class.anon.559, ptr %62, i32 0, i32 0
  %691 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %691, ptr %690, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %60, i32 noundef 0, ptr noundef %61)
          to label %692 unwind label %699

692:                                              ; preds = %689
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #0
  %693 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %693, ptr noundef @.str.58)
          to label %694 unwind label %704

694:                                              ; preds = %692
  invoke void @__cxa_throw(ptr %693, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %635

695:                                              ; preds = %687
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %15, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %16, align 4
  br label %703

699:                                              ; preds = %689
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %15, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #0
  br label %703

703:                                              ; preds = %699, %695
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #0
  br label %715

704:                                              ; preds = %692
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %15, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %16, align 4
  call void @__cxa_free_exception(ptr %693) #0
  br label %715

708:                                              ; No predecessors!
  br label %709

709:                                              ; preds = %708
  br label %710

710:                                              ; preds = %709
  br label %711

711:                                              ; preds = %710, %662
  br label %712

712:                                              ; preds = %711
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %630, !llvm.loop !25

713:                                              ; preds = %676, %634
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  %714 = load i32, ptr %39, align 4
  switch i32 %714, label %718 [
    i32 40, label %716
  ]

715:                                              ; preds = %704, %703, %685, %635
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #0
  br label %848

716:                                              ; preds = %713
  br label %717

717:                                              ; preds = %716
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %622, !llvm.loop !26

718:                                              ; preds = %713, %625
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #0
  %719 = load i32, ptr %39, align 4
  switch i32 %719, label %846 [
    i32 37, label %720
  ]

720:                                              ; preds = %718
  br label %844

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

722:                                              ; preds = %840, %721
  %723 = load i8, ptr %63, align 1, !tbaa !9, !range !17, !noundef !18
  %724 = trunc i8 %723 to i1
  br i1 %724, label %726, label %725

725:                                              ; preds = %722
  store i32 45, ptr %39, align 4
  br label %841

726:                                              ; preds = %722
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #0
  %727 = load ptr, ptr %54, align 8, !tbaa !5
  %728 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %727)
          to label %729 unwind label %735

729:                                              ; preds = %726
  store ptr %728, ptr %64, align 8, !tbaa !5
  br label %730

730:                                              ; preds = %834, %729
  %731 = load ptr, ptr %64, align 8, !tbaa !5
  %732 = load i8, ptr %63, align 1, !tbaa !9, !range !17, !noundef !18
  %733 = trunc i8 %732 to i1
  br i1 %733, label %739, label %734

734:                                              ; preds = %730
  store i32 48, ptr %39, align 4
  br label %836

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

739:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #0
  %740 = load ptr, ptr %64, align 8, !tbaa !5
  %741 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %740, i32 0, i32 0
  %742 = getelementptr inbounds %"class.HIR::TraitPath", ptr %741, i32 0, i32 1
  store ptr %742, ptr %65, align 8, !tbaa !5
  %743 = load ptr, ptr %18, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %743, i32 0, i32 1
  %745 = getelementptr inbounds %"class.HIR::GenericPath", ptr %744, i32 0, i32 0
  %746 = load ptr, ptr %65, align 8, !tbaa !5
  %747 = getelementptr inbounds %"class.HIR::GenericPath", ptr %746, i32 0, i32 0
  %748 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef nonnull align 8 dereferenceable(8) %747)
          to label %749 unwind label %783

749:                                              ; preds = %739
  br i1 %748, label %750, label %830

750:                                              ; preds = %749
  %751 = load ptr, ptr %18, align 8, !tbaa !5
  %752 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %751, i32 0, i32 1
  %753 = getelementptr inbounds %"class.HIR::GenericPath", ptr %752, i32 0, i32 1
  %754 = load ptr, ptr %65, align 8, !tbaa !5
  %755 = getelementptr inbounds %"class.HIR::GenericPath", ptr %754, i32 0, i32 1
  %756 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamseqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %753, ptr noundef nonnull align 8 dereferenceable(24) %755)
          to label %757 unwind label %783

757:                                              ; preds = %750
  br i1 %756, label %758, label %829

758:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #0
  %759 = load ptr, ptr %64, align 8, !tbaa !5
  %760 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %759, i32 0, i32 0
  %761 = getelementptr inbounds %"class.HIR::TraitPath", ptr %760, i32 0, i32 2
  %762 = load ptr, ptr %18, align 8, !tbaa !5
  %763 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %762, i32 0, i32 2
  %764 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %761, ptr noundef nonnull align 8 dereferenceable(8) %763)
          to label %765 unwind label %787

765:                                              ; preds = %758
  %766 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %66, i32 0, i32 0
  store ptr %764, ptr %766, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %767 = load ptr, ptr %64, align 8, !tbaa !5
  %768 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %767, i32 0, i32 0
  %769 = getelementptr inbounds %"class.HIR::TraitPath", ptr %768, i32 0, i32 2
  %770 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %769) #0
  %771 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %67, i32 0, i32 0
  store ptr %770, ptr %771, align 8
  %772 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br i1 %772, label %773, label %811

773:                                              ; preds = %765
  br label %774

774:                                              ; preds = %773
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  store ptr @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb, ptr %68, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #0
  %775 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %775)
          to label %776 unwind label %791

776:                                              ; preds = %774
  call void @llvm.lifetime.start.p0(i64 16, ptr %71) #0
  %777 = getelementptr inbounds %class.anon.560, ptr %71, i32 0, i32 0
  store ptr %68, ptr %777, align 8, !tbaa !5
  %778 = getelementptr inbounds %class.anon.560, ptr %71, i32 0, i32 1
  %779 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %779, ptr %778, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %71) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef %70)
          to label %780 unwind label %795

780:                                              ; preds = %776
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  %781 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %781, ptr noundef @.str.3)
          to label %782 unwind label %800

782:                                              ; preds = %780
  invoke void @__cxa_throw(ptr %781, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %804

783:                                              ; preds = %750, %739
  %784 = landingpad { ptr, i32 }
          cleanup
  %785 = extractvalue { ptr, i32 } %784, 0
  store ptr %785, ptr %15, align 8
  %786 = extractvalue { ptr, i32 } %784, 1
  store i32 %786, ptr %16, align 4
  br label %835

787:                                              ; preds = %758
  %788 = landingpad { ptr, i32 }
          cleanup
  %789 = extractvalue { ptr, i32 } %788, 0
  store ptr %789, ptr %15, align 8
  %790 = extractvalue { ptr, i32 } %788, 1
  store i32 %790, ptr %16, align 4
  br label %828

791:                                              ; preds = %774
  %792 = landingpad { ptr, i32 }
          cleanup
  %793 = extractvalue { ptr, i32 } %792, 0
  store ptr %793, ptr %15, align 8
  %794 = extractvalue { ptr, i32 } %792, 1
  store i32 %794, ptr %16, align 4
  br label %799

795:                                              ; preds = %776
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %15, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %71) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #0
  br label %799

799:                                              ; preds = %795, %791
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #0
  br label %808

800:                                              ; preds = %780
  %801 = landingpad { ptr, i32 }
          cleanup
  %802 = extractvalue { ptr, i32 } %801, 0
  store ptr %802, ptr %15, align 8
  %803 = extractvalue { ptr, i32 } %801, 1
  store i32 %803, ptr %16, align 4
  call void @__cxa_free_exception(ptr %781) #0
  br label %808

804:                                              ; preds = %782
  %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 %808

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

809:                                              ; No predecessors!
  br label %810

810:                                              ; preds = %809
  br label %811

811:                                              ; preds = %810, %765
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #0
  %812 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #0
  %813 = getelementptr inbounds %"struct.std::pair.457", ptr %812, i32 0, i32 1
  %814 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %813, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %72, ptr noundef nonnull align 8 dereferenceable(8) %814)
          to label %815 unwind label %819

815:                                              ; preds = %811
  %816 = load ptr, ptr %8, align 8, !tbaa !5
  %817 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %816, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %818 unwind label %823

818:                                              ; preds = %815
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  store i1 true, ptr %5, align 1
  store i32 1, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  br label %831

819:                                              ; preds = %811
  %820 = landingpad { ptr, i32 }
          cleanup
  %821 = extractvalue { ptr, i32 } %820, 0
  store ptr %821, ptr %15, align 8
  %822 = extractvalue { ptr, i32 } %820, 1
  store i32 %822, ptr %16, align 4
  br label %827

823:                                              ; preds = %815
  %824 = landingpad { ptr, i32 }
          cleanup
  %825 = extractvalue { ptr, i32 } %824, 0
  store ptr %825, ptr %15, align 8
  %826 = extractvalue { ptr, i32 } %824, 1
  store i32 %826, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  br label %827

827:                                              ; preds = %823, %819
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  br label %828

828:                                              ; preds = %827, %808, %787
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #0
  br label %835

829:                                              ; preds = %757
  br label %830

830:                                              ; preds = %829, %749
  store i32 0, ptr %39, align 4
  br label %831

831:                                              ; preds = %830, %818
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  %832 = load i32, ptr %39, align 4
  switch i32 %832, label %836 [
    i32 0, label %833
  ]

833:                                              ; preds = %831
  br label %834

834:                                              ; preds = %833
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %730, !llvm.loop !27

835:                                              ; preds = %828, %783
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #0
  br label %838

836:                                              ; preds = %831, %734
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  %837 = load i32, ptr %39, align 4
  switch i32 %837, label %841 [
    i32 48, label %839
  ]

838:                                              ; preds = %835, %735
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #0
  br label %848

839:                                              ; preds = %836
  br label %840

840:                                              ; preds = %839
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %722, !llvm.loop !28

841:                                              ; preds = %836, %725
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #0
  %842 = load i32, ptr %39, align 4
  switch i32 %842, label %846 [
    i32 45, label %843
  ]

843:                                              ; preds = %841
  br label %844

844:                                              ; preds = %843, %720, %620, %577
  br label %845

845:                                              ; preds = %844
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %564, !llvm.loop !29

846:                                              ; preds = %841, %718, %618, %567
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  %847 = load i32, ptr %39, align 4
  switch i32 %847, label %851 [
    i32 25, label %849
  ]

848:                                              ; preds = %838, %715, %592, %568
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  br label %1656

849:                                              ; preds = %846
  br label %850

850:                                              ; preds = %849
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %555, !llvm.loop !30

851:                                              ; preds = %846, %558
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #0
  %852 = load i32, ptr %39, align 4
  switch i32 %852, label %1655 [
    i32 22, label %853
  ]

853:                                              ; preds = %851
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #0
  store i8 0, ptr %73, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 1, ptr %74) #0
  store i8 1, ptr %74, align 1, !tbaa !9
  %854 = load i8, ptr %73, align 1, !tbaa !9, !range !17, !noundef !18
  %855 = trunc i8 %854 to i1
  br i1 %855, label %869, label %856

856:                                              ; preds = %853
  %857 = load ptr, ptr %8, align 8, !tbaa !5
  %858 = load ptr, ptr %126, align 8, !tbaa !31
  %859 = getelementptr inbounds ptr, ptr %858, i64 0
  %860 = load ptr, ptr %859, align 8
  %861 = invoke noundef zeroext i1 %860(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %857)
          to label %862 unwind label %864

862:                                              ; preds = %856
  br i1 %861, label %863, label %868

863:                                              ; preds = %862
  store i8 1, ptr %73, align 1, !tbaa !9
  store i8 0, ptr %74, align 1, !tbaa !9
  br label %868

864:                                              ; preds = %1032, %856
  %865 = landingpad { ptr, i32 }
          cleanup
  %866 = extractvalue { ptr, i32 } %865, 0
  store ptr %866, ptr %15, align 8
  %867 = extractvalue { ptr, i32 } %865, 1
  store i32 %867, ptr %16, align 4
  br label %1654

868:                                              ; preds = %863, %862
  br label %869

869:                                              ; preds = %868, %853
  %870 = load i8, ptr %73, align 1, !tbaa !9, !range !17, !noundef !18
  %871 = trunc i8 %870 to i1
  br i1 %871, label %1026, label %872

872:                                              ; preds = %869
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #0
  %873 = getelementptr inbounds i8, ptr %126, i64 8
  %874 = getelementptr inbounds %struct.TraitResolveCommon, ptr %873, i32 0, i32 4
  store ptr %874, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #0
  %875 = load ptr, ptr %75, align 8, !tbaa !5
  %876 = invoke ptr @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE5beginEv(ptr noundef nonnull align 8 dereferenceable(25) %875)
          to label %877 unwind label %889

877:                                              ; preds = %872
  %878 = getelementptr inbounds %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", ptr %76, i32 0, i32 0
  %879 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.439", ptr %878, i32 0, i32 0
  store ptr %876, ptr %879, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  %880 = load ptr, ptr %75, align 8, !tbaa !5
  %881 = invoke ptr @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE3endEv(ptr noundef nonnull align 8 dereferenceable(25) %880)
          to label %882 unwind label %893

882:                                              ; preds = %877
  %883 = getelementptr inbounds %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", ptr %77, i32 0, i32 0
  %884 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.439", ptr %883, i32 0, i32 0
  store ptr %881, ptr %884, align 8
  br label %885

885:                                              ; preds = %1019, %882
  %886 = invoke noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %887 unwind label %893

887:                                              ; preds = %885
  br i1 %886, label %897, label %888

888:                                              ; preds = %887
  store i32 53, ptr %39, align 4
  br label %1022

889:                                              ; preds = %872
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %15, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %16, align 4
  br label %1024

893:                                              ; preds = %1017, %885, %877
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %15, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %16, align 4
  br label %1023

897:                                              ; preds = %887
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #0
  %898 = invoke noundef nonnull align 8 dereferenceable(192) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratordeEv(ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %899 unwind label %927

899:                                              ; preds = %897
  store ptr %898, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #0
  %900 = load ptr, ptr %78, align 8, !tbaa !5
  %901 = getelementptr inbounds %"struct.std::pair.440", ptr %900, i32 0, i32 0
  %902 = getelementptr inbounds %"struct.std::pair.442", ptr %901, i32 0, i32 0
  store ptr %902, ptr %79, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #0
  %903 = load ptr, ptr %78, align 8, !tbaa !5
  %904 = getelementptr inbounds %"struct.std::pair.440", ptr %903, i32 0, i32 0
  %905 = getelementptr inbounds %"struct.std::pair.442", ptr %904, i32 0, i32 1
  store ptr %905, ptr %80, align 8, !tbaa !5
  br label %906

906:                                              ; preds = %899
  %907 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %908 unwind label %931

908:                                              ; preds = %906
  br i1 %907, label %909, label %935

909:                                              ; preds = %908
  %910 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %911 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %910, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %912 unwind label %931

912:                                              ; preds = %909
  %913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %911, ptr noundef @.str.59)
          to label %914 unwind label %931

914:                                              ; preds = %912
  %915 = load ptr, ptr %79, align 8, !tbaa !5
  %916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %913, ptr noundef nonnull align 8 dereferenceable(8) %915)
          to label %917 unwind label %931

917:                                              ; preds = %914
  %918 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %916, ptr noundef @.str.33)
          to label %919 unwind label %931

919:                                              ; preds = %917
  %920 = load ptr, ptr %80, align 8, !tbaa !5
  %921 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef nonnull align 8 dereferenceable(32) %920)
          to label %922 unwind label %931

922:                                              ; preds = %919
  %923 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %921, ptr noundef @_ZSt3decRSt8ios_base)
          to label %924 unwind label %931

924:                                              ; preds = %922
  %925 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %923, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %926 unwind label %931

926:                                              ; preds = %924
  br label %935

927:                                              ; preds = %897
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %15, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %16, align 4
  br label %1021

931:                                              ; preds = %944, %937, %924, %922, %919, %917, %914, %912, %909, %906
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %15, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %16, align 4
  br label %1020

935:                                              ; preds = %926, %908
  br label %936

936:                                              ; preds = %935
  br label %937

937:                                              ; preds = %936
  %938 = load ptr, ptr %79, align 8, !tbaa !5
  %939 = load ptr, ptr %18, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %939, i32 0, i32 0
  %941 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %938, ptr noundef nonnull align 8 dereferenceable(8) %940)
          to label %942 unwind label %931

942:                                              ; preds = %937
  br i1 %941, label %943, label %944

943:                                              ; preds = %942
  store i32 54, ptr %39, align 4
  br label %1011

944:                                              ; preds = %942
  %945 = load ptr, ptr %80, align 8, !tbaa !5
  %946 = load ptr, ptr %18, align 8, !tbaa !5
  %947 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %946, i32 0, i32 1
  %948 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %945, ptr noundef nonnull align 8 dereferenceable(32) %947)
          to label %949 unwind label %931

949:                                              ; preds = %944
  br i1 %948, label %950, label %1010

950:                                              ; preds = %949
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #0
  %951 = load ptr, ptr %78, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.std::pair.440", ptr %951, i32 0, i32 1
  %953 = getelementptr inbounds %"struct.TraitResolveCommon::CachedBound", ptr %952, i32 0, i32 2
  %954 = load ptr, ptr %18, align 8, !tbaa !5
  %955 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %954, i32 0, i32 2
  %956 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %953, ptr noundef nonnull align 8 dereferenceable(8) %955)
          to label %957 unwind label %984

957:                                              ; preds = %950
  %958 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %81, i32 0, i32 0
  store ptr %956, ptr %958, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #0
  %959 = load ptr, ptr %78, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.std::pair.440", ptr %959, i32 0, i32 1
  %961 = getelementptr inbounds %"struct.TraitResolveCommon::CachedBound", ptr %960, i32 0, i32 2
  %962 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %961) #0
  %963 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %82, i32 0, i32 0
  store ptr %962, ptr %963, align 8
  %964 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %82) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #0
  br i1 %964, label %965, label %991

965:                                              ; preds = %957
  br label %966

966:                                              ; preds = %965
  %967 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %968 unwind label %984

968:                                              ; preds = %966
  br i1 %967, label %969, label %988

969:                                              ; preds = %968
  %970 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %971 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %970, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %972 unwind label %984

972:                                              ; preds = %969
  %973 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %971, ptr noundef @.str.60)
          to label %974 unwind label %984

974:                                              ; preds = %972
  %975 = load ptr, ptr %8, align 8, !tbaa !5
  %976 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %973, ptr noundef nonnull align 8 dereferenceable(8) %975)
          to label %977 unwind label %984

977:                                              ; preds = %974
  %978 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %976, ptr noundef @.str.61)
          to label %979 unwind label %984

979:                                              ; preds = %977
  %980 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %978, ptr noundef @_ZSt3decRSt8ios_base)
          to label %981 unwind label %984

981:                                              ; preds = %979
  %982 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %980, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %983 unwind label %984

983:                                              ; preds = %981
  br label %988

984:                                              ; preds = %981, %979, %977, %974, %972, %969, %966, %950
  %985 = landingpad { ptr, i32 }
          cleanup
  %986 = extractvalue { ptr, i32 } %985, 0
  store ptr %986, ptr %15, align 8
  %987 = extractvalue { ptr, i32 } %985, 1
  store i32 %987, ptr %16, align 4
  br label %1009

988:                                              ; preds = %983, %968
  br label %989

989:                                              ; preds = %988
  br label %990

990:                                              ; preds = %989
  br label %1008

991:                                              ; preds = %957
  store i8 0, ptr %74, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #0
  %992 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %81) #0
  %993 = getelementptr inbounds %"struct.std::pair.457", ptr %992, i32 0, i32 1
  %994 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %993, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %83, ptr noundef nonnull align 8 dereferenceable(8) %994)
          to label %995 unwind label %999

995:                                              ; preds = %991
  %996 = load ptr, ptr %8, align 8, !tbaa !5
  %997 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %996, ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %998 unwind label %1003

998:                                              ; preds = %995
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  store i8 1, ptr %73, align 1, !tbaa !9
  br label %1008

999:                                              ; preds = %991
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %15, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %16, align 4
  br label %1007

1003:                                             ; preds = %995
  %1004 = landingpad { ptr, i32 }
          cleanup
  %1005 = extractvalue { ptr, i32 } %1004, 0
  store ptr %1005, ptr %15, align 8
  %1006 = extractvalue { ptr, i32 } %1004, 1
  store i32 %1006, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #0
  br label %1007

1007:                                             ; preds = %1003, %999
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  br label %1009

1008:                                             ; preds = %998, %990
  store i32 53, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  br label %1011

1009:                                             ; preds = %1007, %984
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  br label %1020

1010:                                             ; preds = %949
  store i32 0, ptr %39, align 4
  br label %1011

1011:                                             ; preds = %1010, %1008, %943
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  %1012 = load i32, ptr %39, align 4
  switch i32 %1012, label %1014 [
    i32 0, label %1013
  ]

1013:                                             ; preds = %1011
  store i32 0, ptr %39, align 4
  br label %1014

1014:                                             ; preds = %1013, %1011
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  %1015 = load i32, ptr %39, align 4
  switch i32 %1015, label %1022 [
    i32 0, label %1016
    i32 54, label %1017
  ]

1016:                                             ; preds = %1014
  br label %1017

1017:                                             ; preds = %1016, %1014
  %1018 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %76)
          to label %1019 unwind label %893

1019:                                             ; preds = %1017
  br label %885

1020:                                             ; preds = %1009, %931
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %1021

1021:                                             ; preds = %1020, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #0
  br label %1023

1022:                                             ; preds = %1014, %888
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  br label %1025

1023:                                             ; preds = %1021, %893
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  br label %1024

1024:                                             ; preds = %1023, %889
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  br label %1654

1025:                                             ; preds = %1022
  br label %1026

1026:                                             ; preds = %1025, %869
  %1027 = load i8, ptr %73, align 1, !tbaa !9, !range !17, !noundef !18
  %1028 = trunc i8 %1027 to i1
  br i1 %1028, label %1029, label %1037

1029:                                             ; preds = %1026
  %1030 = load i8, ptr %9, align 1, !tbaa !9, !range !17, !noundef !18
  %1031 = trunc i8 %1030 to i1
  br i1 %1031, label %1032, label %1036

1032:                                             ; preds = %1029
  %1033 = load ptr, ptr %7, align 8, !tbaa !5
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1033, ptr noundef nonnull align 8 dereferenceable(8) %1034)
          to label %1035 unwind label %864

1035:                                             ; preds = %1032
  br label %1036

1036:                                             ; preds = %1035, %1029
  store i1 true, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %1653

1037:                                             ; preds = %1026
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #0
  %1038 = load ptr, ptr %18, align 8, !tbaa !5
  %1039 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1038, i32 0, i32 0
  %1040 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1039)
          to label %1041 unwind label %1084

1041:                                             ; preds = %1037
  %1042 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1040)
          to label %1043 unwind label %1084

1043:                                             ; preds = %1041
  store ptr %1042, ptr %84, align 8, !tbaa !5
  %1044 = load ptr, ptr %84, align 8, !tbaa !5
  %1045 = icmp ne ptr %1044, null
  br i1 %1045, label %1046, label %1346

1046:                                             ; preds = %1043
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  %1047 = load ptr, ptr %84, align 8, !tbaa !5
  %1048 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1047, i32 0, i32 0
  %1049 = getelementptr inbounds %"class.HIR::Path", ptr %1048, i32 0, i32 0
  %1050 = invoke noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %1049)
          to label %1051 unwind label %1088

1051:                                             ; preds = %1046
  store ptr %1050, ptr %85, align 8, !tbaa !5
  %1052 = load ptr, ptr %85, align 8, !tbaa !5
  %1053 = icmp ne ptr %1052, null
  br i1 %1053, label %1054, label %1341

1054:                                             ; preds = %1051
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #0
  %1055 = load ptr, ptr %85, align 8, !tbaa !5
  store ptr %1055, ptr %86, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %1056 = getelementptr inbounds i8, ptr %126, i64 8
  %1057 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1056, i32 0, i32 0
  %1058 = load ptr, ptr %1057, align 8, !tbaa !33
  %1059 = load ptr, ptr %7, align 8, !tbaa !5
  %1060 = load ptr, ptr %86, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1060, i32 0, i32 1
  %1062 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1061, i32 0, i32 0
  %1063 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1058, ptr noundef nonnull align 8 dereferenceable(8) %1059, ptr noundef nonnull align 8 dereferenceable(8) %1062)
          to label %1064 unwind label %1092

1064:                                             ; preds = %1054
  store ptr %1063, ptr %87, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #0
  %1065 = load ptr, ptr %87, align 8, !tbaa !5
  %1066 = getelementptr inbounds %"class.HIR::Trait", ptr %1065, i32 0, i32 4
  %1067 = load ptr, ptr %86, align 8, !tbaa !5
  %1068 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1067, i32 0, i32 2
  %1069 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %1066, ptr noundef nonnull align 8 dereferenceable(8) %1068)
          to label %1070 unwind label %1096

1070:                                             ; preds = %1064
  store ptr %1069, ptr %88, align 8, !tbaa !5
  br label %1071

1071:                                             ; preds = %1070
  %1072 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1073 unwind label %1096

1073:                                             ; preds = %1071
  br i1 %1072, label %1074, label %1100

1074:                                             ; preds = %1073
  %1075 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %1076 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1075, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %1077 unwind label %1096

1077:                                             ; preds = %1074
  %1078 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1076, ptr noundef @.str.62)
          to label %1079 unwind label %1096

1079:                                             ; preds = %1077
  %1080 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1078, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1081 unwind label %1096

1081:                                             ; preds = %1079
  %1082 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1080, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1083 unwind label %1096

1083:                                             ; preds = %1081
  br label %1100

1084:                                             ; preds = %1041, %1037
  %1085 = landingpad { ptr, i32 }
          cleanup
  %1086 = extractvalue { ptr, i32 } %1085, 0
  store ptr %1086, ptr %15, align 8
  %1087 = extractvalue { ptr, i32 } %1085, 1
  store i32 %1087, ptr %16, align 4
  br label %1378

1088:                                             ; preds = %1046
  %1089 = landingpad { ptr, i32 }
          cleanup
  %1090 = extractvalue { ptr, i32 } %1089, 0
  store ptr %1090, ptr %15, align 8
  %1091 = extractvalue { ptr, i32 } %1089, 1
  store i32 %1091, ptr %16, align 4
  br label %1345

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

1096:                                             ; preds = %1081, %1079, %1077, %1074, %1071, %1064
  %1097 = landingpad { ptr, i32 }
          cleanup
  %1098 = extractvalue { ptr, i32 } %1097, 0
  store ptr %1098, ptr %15, align 8
  %1099 = extractvalue { ptr, i32 } %1097, 1
  store i32 %1099, ptr %16, align 4
  br label %1339

1100:                                             ; preds = %1083, %1073
  br label %1101

1101:                                             ; preds = %1100
  br label %1102

1102:                                             ; preds = %1101
  call void @llvm.lifetime.start.p0(i64 128, ptr %89) #0
  %1103 = load ptr, ptr %86, align 8, !tbaa !5
  %1104 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1103, i32 0, i32 0
  %1105 = load ptr, ptr %86, align 8, !tbaa !5
  %1106 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1105, i32 0, i32 1
  %1107 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1106, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %89, ptr noundef %1104, ptr noundef %1107, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %1108 unwind label %1120

1108:                                             ; preds = %1102
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #0
  %1109 = load ptr, ptr %88, align 8, !tbaa !5
  %1110 = getelementptr inbounds %"struct.HIR::AssociatedType", ptr %1109, i32 0, i32 3
  store ptr %1110, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #0
  %1111 = load ptr, ptr %90, align 8, !tbaa !5
  %1112 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1111) #0
  %1113 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %91, i32 0, i32 0
  store ptr %1112, ptr %1113, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  %1114 = load ptr, ptr %90, align 8, !tbaa !5
  %1115 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1114) #0
  %1116 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %92, i32 0, i32 0
  store ptr %1115, ptr %1116, align 8
  br label %1117

1117:                                             ; preds = %1296, %1108
  %1118 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  br i1 %1118, label %1124, label %1119

1119:                                             ; preds = %1117
  store i32 61, ptr %39, align 4
  br label %1302

1120:                                             ; preds = %1102
  %1121 = landingpad { ptr, i32 }
          cleanup
  %1122 = extractvalue { ptr, i32 } %1121, 0
  store ptr %1122, ptr %15, align 8
  %1123 = extractvalue { ptr, i32 } %1121, 1
  store i32 %1123, ptr %16, align 4
  br label %1338

1124:                                             ; preds = %1117
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  %1125 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #0
  store ptr %1125, ptr %93, align 8, !tbaa !5
  %1126 = load ptr, ptr %93, align 8, !tbaa !5
  %1127 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1126, i32 0, i32 1
  %1128 = load ptr, ptr %18, align 8, !tbaa !5
  %1129 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1128, i32 0, i32 1
  %1130 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %1127, ptr noundef nonnull align 8 dereferenceable(32) %1129)
          to label %1131 unwind label %1164

1131:                                             ; preds = %1124
  br i1 %1130, label %1132, label %1228

1132:                                             ; preds = %1131
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #0
  %1133 = load ptr, ptr %93, align 8, !tbaa !5
  %1134 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1133, i32 0, i32 2
  %1135 = load ptr, ptr %18, align 8, !tbaa !5
  %1136 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1135, i32 0, i32 2
  %1137 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %1134, ptr noundef nonnull align 8 dereferenceable(8) %1136)
          to label %1138 unwind label %1168

1138:                                             ; preds = %1132
  %1139 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %94, i32 0, i32 0
  store ptr %1137, ptr %1139, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #0
  %1140 = load ptr, ptr %93, align 8, !tbaa !5
  %1141 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1140, i32 0, i32 2
  %1142 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1141) #0
  %1143 = getelementptr inbounds %"struct.std::_Rb_tree_const_iterator", ptr %95, i32 0, i32 0
  store ptr %1142, ptr %1143, align 8
  %1144 = call noundef zeroext i1 @_ZStneRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %95) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  br i1 %1144, label %1145, label %1223

1145:                                             ; preds = %1138
  br label %1146

1146:                                             ; preds = %1145
  %1147 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1148 unwind label %1168

1148:                                             ; preds = %1146
  br i1 %1147, label %1149, label %1172

1149:                                             ; preds = %1148
  %1150 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %1151 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1150, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %1152 unwind label %1168

1152:                                             ; preds = %1149
  %1153 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1151, ptr noundef @.str.63)
          to label %1154 unwind label %1168

1154:                                             ; preds = %1152
  %1155 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  %1156 = getelementptr inbounds %"struct.std::pair.457", ptr %1155, i32 0, i32 1
  %1157 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1156, i32 0, i32 1
  %1158 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1153, ptr noundef nonnull align 8 dereferenceable(8) %1157)
          to label %1159 unwind label %1168

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

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

1163:                                             ; preds = %1161
  br label %1172

1164:                                             ; preds = %1124
  %1165 = landingpad { ptr, i32 }
          cleanup
  %1166 = extractvalue { ptr, i32 } %1165, 0
  store ptr %1166, ptr %15, align 8
  %1167 = extractvalue { ptr, i32 } %1165, 1
  store i32 %1167, ptr %16, align 4
  br label %1301

1168:                                             ; preds = %1218, %1174, %1161, %1159, %1154, %1152, %1149, %1146, %1132
  %1169 = landingpad { ptr, i32 }
          cleanup
  %1170 = extractvalue { ptr, i32 } %1169, 0
  store ptr %1170, ptr %15, align 8
  %1171 = extractvalue { ptr, i32 } %1169, 1
  store i32 %1171, ptr %16, align 4
  br label %1227

1172:                                             ; preds = %1163, %1148
  br label %1173

1173:                                             ; preds = %1172
  br label %1174

1174:                                             ; preds = %1173
  %1175 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  %1176 = getelementptr inbounds %"struct.std::pair.457", ptr %1175, i32 0, i32 1
  %1177 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1176, i32 0, i32 1
  %1178 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %1177, i1 noundef zeroext false)
          to label %1179 unwind label %1168

1179:                                             ; preds = %1174
  br i1 %1178, label %1180, label %1198

1180:                                             ; preds = %1179
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #0
  %1181 = load ptr, ptr %7, align 8, !tbaa !5
  %1182 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  %1183 = getelementptr inbounds %"struct.std::pair.457", ptr %1182, i32 0, i32 1
  %1184 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1183, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %96, ptr noundef nonnull align 8 dereferenceable(96) %89, ptr noundef nonnull align 8 dereferenceable(8) %1181, ptr noundef nonnull align 8 dereferenceable(8) %1184, i1 noundef zeroext true)
          to label %1185 unwind label %1189

1185:                                             ; preds = %1180
  %1186 = load ptr, ptr %8, align 8, !tbaa !5
  %1187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1186, ptr noundef nonnull align 8 dereferenceable(8) %96)
          to label %1188 unwind label %1193

1188:                                             ; preds = %1185
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  br label %1215

1189:                                             ; preds = %1180
  %1190 = landingpad { ptr, i32 }
          cleanup
  %1191 = extractvalue { ptr, i32 } %1190, 0
  store ptr %1191, ptr %15, align 8
  %1192 = extractvalue { ptr, i32 } %1190, 1
  store i32 %1192, ptr %16, align 4
  br label %1197

1193:                                             ; preds = %1185
  %1194 = landingpad { ptr, i32 }
          cleanup
  %1195 = extractvalue { ptr, i32 } %1194, 0
  store ptr %1195, ptr %15, align 8
  %1196 = extractvalue { ptr, i32 } %1194, 1
  store i32 %1196, ptr %16, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  br label %1197

1197:                                             ; preds = %1193, %1189
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  br label %1227

1198:                                             ; preds = %1179
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #0
  %1199 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  %1200 = getelementptr inbounds %"struct.std::pair.457", ptr %1199, i32 0, i32 1
  %1201 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1200, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %97, ptr noundef nonnull align 8 dereferenceable(8) %1201)
          to label %1202 unwind label %1206

1202:                                             ; preds = %1198
  %1203 = load ptr, ptr %8, align 8, !tbaa !5
  %1204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1203, ptr noundef nonnull align 8 dereferenceable(8) %97)
          to label %1205 unwind label %1210

1205:                                             ; preds = %1202
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  br label %1215

1206:                                             ; preds = %1198
  %1207 = landingpad { ptr, i32 }
          cleanup
  %1208 = extractvalue { ptr, i32 } %1207, 0
  store ptr %1208, ptr %15, align 8
  %1209 = extractvalue { ptr, i32 } %1207, 1
  store i32 %1209, ptr %16, align 4
  br label %1214

1210:                                             ; preds = %1202
  %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
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %97) #0
  br label %1214

1214:                                             ; preds = %1210, %1206
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  br label %1227

1215:                                             ; preds = %1205, %1188
  %1216 = load i8, ptr %9, align 1, !tbaa !9, !range !17, !noundef !18
  %1217 = trunc i8 %1216 to i1
  br i1 %1217, label %1218, label %1222

1218:                                             ; preds = %1215
  %1219 = load ptr, ptr %7, align 8, !tbaa !5
  %1220 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1219, ptr noundef nonnull align 8 dereferenceable(8) %1220)
          to label %1221 unwind label %1168

1221:                                             ; preds = %1218
  br label %1222

1222:                                             ; preds = %1221, %1215
  store i1 true, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %1224

1223:                                             ; preds = %1138
  store i32 0, ptr %39, align 4
  br label %1224

1224:                                             ; preds = %1223, %1222
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  %1225 = load i32, ptr %39, align 4
  switch i32 %1225, label %1293 [
    i32 0, label %1226
  ]

1226:                                             ; preds = %1224
  br label %1228

1227:                                             ; preds = %1214, %1197, %1168
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #0
  br label %1301

1228:                                             ; preds = %1226, %1131
  call void @llvm.lifetime.start.p0(i64 24, ptr %98) #0
  %1229 = load ptr, ptr %7, align 8, !tbaa !5
  %1230 = load ptr, ptr %93, align 8, !tbaa !5
  %1231 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1230, i32 0, i32 1
  %1232 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1231, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser21monomorph_path_paramsERK4SpanRKN3HIR10PathParamsEb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %98, ptr noundef nonnull align 8 dereferenceable(96) %89, ptr noundef nonnull align 8 dereferenceable(8) %1229, ptr noundef nonnull align 8 dereferenceable(24) %1232, i1 noundef zeroext false)
          to label %1233 unwind label %1272

1233:                                             ; preds = %1228
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1234 = getelementptr inbounds i8, ptr %126, i64 8
  %1235 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1234, i32 0, i32 0
  %1236 = load ptr, ptr %1235, align 8, !tbaa !33
  %1237 = load ptr, ptr %7, align 8, !tbaa !5
  %1238 = load ptr, ptr %93, align 8, !tbaa !5
  %1239 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1238, i32 0, i32 1
  %1240 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1239, i32 0, i32 0
  %1241 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1236, ptr noundef nonnull align 8 dereferenceable(8) %1237, ptr noundef nonnull align 8 dereferenceable(8) %1240)
          to label %1242 unwind label %1276

1242:                                             ; preds = %1233
  store ptr %1241, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #0
  %1243 = load ptr, ptr %7, align 8, !tbaa !5
  %1244 = load ptr, ptr %18, align 8, !tbaa !5
  %1245 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1244, i32 0, i32 1
  %1246 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1245, i32 0, i32 0
  %1247 = load ptr, ptr %18, align 8, !tbaa !5
  %1248 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1247, i32 0, i32 1
  %1249 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1248, i32 0, i32 1
  %1250 = load ptr, ptr %99, align 8, !tbaa !5
  %1251 = load ptr, ptr %93, align 8, !tbaa !5
  %1252 = getelementptr inbounds %"class.HIR::TraitPath", ptr %1251, i32 0, i32 1
  %1253 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1252, i32 0, i32 0
  %1254 = load ptr, ptr %18, align 8, !tbaa !5
  %1255 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1254, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #0
  %1256 = getelementptr inbounds %class.anon.561, ptr %102, i32 0, i32 0
  %1257 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1257, ptr %1256, align 8, !tbaa !5
  %1258 = getelementptr inbounds %class.anon.561, ptr %102, i32 0, i32 1
  %1259 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1259, ptr %1258, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRNS0_7TypeRefEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(16) %102) #0
  %1260 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1243, ptr noundef nonnull align 8 dereferenceable(8) %1246, ptr noundef nonnull align 8 dereferenceable(24) %1249, ptr noundef nonnull align 8 dereferenceable(400) %1250, ptr noundef nonnull align 8 dereferenceable(8) %1253, ptr noundef nonnull align 8 dereferenceable(24) %98, ptr noundef nonnull align 8 dereferenceable(8) %1255, ptr noundef %101)
          to label %1261 unwind label %1280

1261:                                             ; preds = %1242
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #0
  %1262 = zext i1 %1260 to i8
  store i8 %1262, ptr %100, align 1, !tbaa !9
  %1263 = load i8, ptr %100, align 1, !tbaa !9, !range !17, !noundef !18
  %1264 = trunc i8 %1263 to i1
  br i1 %1264, label %1265, label %1289

1265:                                             ; preds = %1261
  %1266 = load i8, ptr %9, align 1, !tbaa !9, !range !17, !noundef !18
  %1267 = trunc i8 %1266 to i1
  br i1 %1267, label %1268, label %1288

1268:                                             ; preds = %1265
  %1269 = load ptr, ptr %7, align 8, !tbaa !5
  %1270 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1269, ptr noundef nonnull align 8 dereferenceable(8) %1270)
          to label %1271 unwind label %1284

1271:                                             ; preds = %1268
  br label %1288

1272:                                             ; preds = %1228
  %1273 = landingpad { ptr, i32 }
          cleanup
  %1274 = extractvalue { ptr, i32 } %1273, 0
  store ptr %1274, ptr %15, align 8
  %1275 = extractvalue { ptr, i32 } %1273, 1
  store i32 %1275, ptr %16, align 4
  br label %1300

1276:                                             ; preds = %1233
  %1277 = landingpad { ptr, i32 }
          cleanup
  %1278 = extractvalue { ptr, i32 } %1277, 0
  store ptr %1278, ptr %15, align 8
  %1279 = extractvalue { ptr, i32 } %1277, 1
  store i32 %1279, ptr %16, align 4
  br label %1299

1280:                                             ; preds = %1242
  %1281 = landingpad { ptr, i32 }
          cleanup
  %1282 = extractvalue { ptr, i32 } %1281, 0
  store ptr %1282, ptr %15, align 8
  %1283 = extractvalue { ptr, i32 } %1281, 1
  store i32 %1283, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #0
  br label %1298

1284:                                             ; preds = %1268
  %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 %1298

1288:                                             ; preds = %1271, %1265
  store i1 true, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %1290

1289:                                             ; preds = %1261
  store i32 0, ptr %39, align 4
  br label %1290

1290:                                             ; preds = %1289, %1288
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #0
  %1291 = load i32, ptr %39, align 4
  switch i32 %1291, label %1293 [
    i32 0, label %1292
  ]

1292:                                             ; preds = %1290
  store i32 0, ptr %39, align 4
  br label %1293

1293:                                             ; preds = %1292, %1290, %1224
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  %1294 = load i32, ptr %39, align 4
  switch i32 %1294, label %1302 [
    i32 0, label %1295
  ]

1295:                                             ; preds = %1293
  br label %1296

1296:                                             ; preds = %1295
  %1297 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %91) #0
  br label %1117

1298:                                             ; preds = %1284, %1280
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #0
  br label %1299

1299:                                             ; preds = %1298, %1276
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %98) #0
  br label %1300

1300:                                             ; preds = %1299, %1272
  call void @llvm.lifetime.end.p0(i64 24, ptr %98) #0
  br label %1301

1301:                                             ; preds = %1300, %1227, %1164
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  br label %1337

1302:                                             ; preds = %1293, %1119
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  %1303 = load i32, ptr %39, align 4
  switch i32 %1303, label %1334 [
    i32 61, label %1304
  ]

1304:                                             ; preds = %1302
  br label %1305

1305:                                             ; preds = %1304
  %1306 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1307 unwind label %1327

1307:                                             ; preds = %1305
  br i1 %1306, label %1308, label %1331

1308:                                             ; preds = %1307
  %1309 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %1310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1309, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %1311 unwind label %1327

1311:                                             ; preds = %1308
  %1312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1310, ptr noundef @.str.64)
          to label %1313 unwind label %1327

1313:                                             ; preds = %1311
  %1314 = load ptr, ptr %18, align 8, !tbaa !5
  %1315 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1314, i32 0, i32 0
  %1316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1312, ptr noundef nonnull align 8 dereferenceable(8) %1315)
          to label %1317 unwind label %1327

1317:                                             ; preds = %1313
  %1318 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1316, ptr noundef @.str.65)
          to label %1319 unwind label %1327

1319:                                             ; preds = %1317
  %1320 = load ptr, ptr %8, align 8, !tbaa !5
  %1321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1318, ptr noundef nonnull align 8 dereferenceable(8) %1320)
          to label %1322 unwind label %1327

1322:                                             ; preds = %1319
  %1323 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1321, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1324 unwind label %1327

1324:                                             ; preds = %1322
  %1325 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1323, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1326 unwind label %1327

1326:                                             ; preds = %1324
  br label %1331

1327:                                             ; preds = %1324, %1322, %1319, %1317, %1313, %1311, %1308, %1305
  %1328 = landingpad { ptr, i32 }
          cleanup
  %1329 = extractvalue { ptr, i32 } %1328, 0
  store ptr %1329, ptr %15, align 8
  %1330 = extractvalue { ptr, i32 } %1328, 1
  store i32 %1330, ptr %16, align 4
  br label %1337

1331:                                             ; preds = %1326, %1307
  br label %1332

1332:                                             ; preds = %1331
  br label %1333

1333:                                             ; preds = %1332
  store i32 0, ptr %39, align 4
  br label %1334

1334:                                             ; preds = %1333, %1302
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %89) #0
  call void @llvm.lifetime.end.p0(i64 128, ptr %89) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  %1335 = load i32, ptr %39, align 4
  switch i32 %1335, label %1342 [
    i32 0, label %1336
  ]

1336:                                             ; preds = %1334
  br label %1341

1337:                                             ; preds = %1327, %1301
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %89) #0
  br label %1338

1338:                                             ; preds = %1337, %1120
  call void @llvm.lifetime.end.p0(i64 128, ptr %89) #0
  br label %1339

1339:                                             ; preds = %1338, %1096
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #0
  br label %1340

1340:                                             ; preds = %1339, %1092
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #0
  br label %1345

1341:                                             ; preds = %1336, %1051
  store i32 0, ptr %39, align 4
  br label %1342

1342:                                             ; preds = %1341, %1334
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  %1343 = load i32, ptr %39, align 4
  switch i32 %1343, label %1347 [
    i32 0, label %1344
  ]

1344:                                             ; preds = %1342
  br label %1346

1345:                                             ; preds = %1340, %1088
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  br label %1378

1346:                                             ; preds = %1344, %1043
  store i32 0, ptr %39, align 4
  br label %1347

1347:                                             ; preds = %1346, %1342
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  %1348 = load i32, ptr %39, align 4
  switch i32 %1348, label %1653 [
    i32 0, label %1349
  ]

1349:                                             ; preds = %1347
  call void @llvm.lifetime.start.p0(i64 32, ptr %103) #0
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1350 unwind label %1379

1350:                                             ; preds = %1349
  %1351 = load ptr, ptr %7, align 8, !tbaa !5
  %1352 = load ptr, ptr %18, align 8, !tbaa !5
  %1353 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1352, i32 0, i32 1
  %1354 = getelementptr inbounds i8, ptr %126, i64 8
  %1355 = getelementptr inbounds %struct.TraitResolveCommon, ptr %1354, i32 0, i32 0
  %1356 = load ptr, ptr %1355, align 8, !tbaa !33
  %1357 = load ptr, ptr %7, align 8, !tbaa !5
  %1358 = load ptr, ptr %18, align 8, !tbaa !5
  %1359 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1358, i32 0, i32 1
  %1360 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1359, i32 0, i32 0
  %1361 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %1356, ptr noundef nonnull align 8 dereferenceable(8) %1357, ptr noundef nonnull align 8 dereferenceable(8) %1360)
          to label %1362 unwind label %1383

1362:                                             ; preds = %1350
  %1363 = load ptr, ptr %18, align 8, !tbaa !5
  %1364 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1363, i32 0, i32 2
  %1365 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %1364)
          to label %1366 unwind label %1383

1366:                                             ; preds = %1362
  %1367 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1351, ptr noundef nonnull align 8 dereferenceable(32) %1353, ptr noundef nonnull align 8 dereferenceable(400) %1361, ptr noundef %1365, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1368 unwind label %1383

1368:                                             ; preds = %1366
  br i1 %1367, label %1402, label %1369

1369:                                             ; preds = %1368
  br label %1370

1370:                                             ; preds = %1369
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  %1371 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %1371)
          to label %1372 unwind label %1387

1372:                                             ; preds = %1370
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #0
  %1373 = getelementptr inbounds %class.anon.562, ptr %106, i32 0, i32 0
  %1374 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1374, ptr %1373, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(8) %106) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef %105)
          to label %1375 unwind label %1391

1375:                                             ; preds = %1372
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  %1376 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1376, ptr noundef @.str)
          to label %1377 unwind label %1396

1377:                                             ; preds = %1375
  invoke void @__cxa_throw(ptr %1376, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %1383

1378:                                             ; preds = %1345, %1084
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  br label %1654

1379:                                             ; preds = %1349
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %15, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %16, align 4
  br label %1652

1383:                                             ; preds = %1377, %1366, %1362, %1350
  %1384 = landingpad { ptr, i32 }
          cleanup
  %1385 = extractvalue { ptr, i32 } %1384, 0
  store ptr %1385, ptr %15, align 8
  %1386 = extractvalue { ptr, i32 } %1384, 1
  store i32 %1386, ptr %16, align 4
  br label %1651

1387:                                             ; preds = %1370
  %1388 = landingpad { ptr, i32 }
          cleanup
  %1389 = extractvalue { ptr, i32 } %1388, 0
  store ptr %1389, ptr %15, align 8
  %1390 = extractvalue { ptr, i32 } %1388, 1
  store i32 %1390, ptr %16, align 4
  br label %1395

1391:                                             ; preds = %1372
  %1392 = landingpad { ptr, i32 }
          cleanup
  %1393 = extractvalue { ptr, i32 } %1392, 0
  store ptr %1393, ptr %15, align 8
  %1394 = extractvalue { ptr, i32 } %1392, 1
  store i32 %1394, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  br label %1395

1395:                                             ; preds = %1391, %1387
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  br label %1651

1396:                                             ; preds = %1375
  %1397 = landingpad { ptr, i32 }
          cleanup
  %1398 = extractvalue { ptr, i32 } %1397, 0
  store ptr %1398, ptr %15, align 8
  %1399 = extractvalue { ptr, i32 } %1397, 1
  store i32 %1399, ptr %16, align 4
  call void @__cxa_free_exception(ptr %1376) #0
  br label %1651

1400:                                             ; No predecessors!
  br label %1401

1401:                                             ; preds = %1400
  br label %1402

1402:                                             ; preds = %1401, %1368
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #0
  store i8 1, ptr %107, align 1, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 184, ptr %108) #0
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %108)
          to label %1403 unwind label %1434

1403:                                             ; preds = %1402
  %1404 = load ptr, ptr %7, align 8, !tbaa !5
  %1405 = getelementptr inbounds %"class.HIR::GenericPath", ptr %103, i32 0, i32 0
  %1406 = getelementptr inbounds %"class.HIR::GenericPath", ptr %103, i32 0, i32 1
  %1407 = load ptr, ptr %18, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1407, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 64, ptr %110) #0
  %1409 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 0
  store ptr %126, ptr %1409, align 8, !tbaa !52
  %1410 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 1
  %1411 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %1411, ptr %1410, align 8, !tbaa !5
  %1412 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 2
  %1413 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1413, ptr %1412, align 8, !tbaa !5
  %1414 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 3
  store ptr %103, ptr %1414, align 8, !tbaa !5
  %1415 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 4
  store ptr %108, ptr %1415, align 8, !tbaa !5
  %1416 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 5
  %1417 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1417, ptr %1416, align 8, !tbaa !5
  %1418 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 6
  %1419 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1419, ptr %1418, align 8, !tbaa !5
  %1420 = getelementptr inbounds %class.anon.563, ptr %110, i32 0, i32 7
  store ptr %107, ptr %1420, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(64) %110)
          to label %1421 unwind label %1438

1421:                                             ; preds = %1403
  %1422 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1404, ptr noundef nonnull align 8 dereferenceable(8) %1405, ptr noundef nonnull align 8 dereferenceable(24) %1406, ptr noundef nonnull align 8 dereferenceable(8) %1408, ptr noundef %109)
          to label %1423 unwind label %1442

1423:                                             ; preds = %1421
  %1424 = zext i1 %1422 to i8
  store i8 %1424, ptr %73, align 1, !tbaa !9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #0
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #0
  %1425 = load i8, ptr %73, align 1, !tbaa !9, !range !17, !noundef !18
  %1426 = trunc i8 %1425 to i1
  br i1 %1426, label %1427, label %1454

1427:                                             ; preds = %1423
  %1428 = load i8, ptr %9, align 1, !tbaa !9, !range !17, !noundef !18
  %1429 = trunc i8 %1428 to i1
  br i1 %1429, label %1430, label %1451

1430:                                             ; preds = %1427
  %1431 = load ptr, ptr %7, align 8, !tbaa !5
  %1432 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1431, ptr noundef nonnull align 8 dereferenceable(8) %1432)
          to label %1433 unwind label %1447

1433:                                             ; preds = %1430
  br label %1451

1434:                                             ; preds = %1402
  %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 %1650

1438:                                             ; preds = %1403
  %1439 = landingpad { ptr, i32 }
          cleanup
  %1440 = extractvalue { ptr, i32 } %1439, 0
  store ptr %1440, ptr %15, align 8
  %1441 = extractvalue { ptr, i32 } %1439, 1
  store i32 %1441, ptr %16, align 4
  br label %1446

1442:                                             ; preds = %1421
  %1443 = landingpad { ptr, i32 }
          cleanup
  %1444 = extractvalue { ptr, i32 } %1443, 0
  store ptr %1444, ptr %15, align 8
  %1445 = extractvalue { ptr, i32 } %1443, 1
  store i32 %1445, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #0
  br label %1446

1446:                                             ; preds = %1442, %1438
  call void @llvm.lifetime.end.p0(i64 64, ptr %110) #0
  br label %1649

1447:                                             ; preds = %1632, %1597, %1595, %1593, %1590, %1588, %1585, %1582, %1556, %1545, %1526, %1524, %1522, %1518, %1516, %1514, %1512, %1509, %1506, %1499, %1474, %1463, %1454, %1430
  %1448 = landingpad { ptr, i32 }
          cleanup
  %1449 = extractvalue { ptr, i32 } %1448, 0
  store ptr %1449, ptr %15, align 8
  %1450 = extractvalue { ptr, i32 } %1448, 1
  store i32 %1450, ptr %16, align 4
  br label %1649

1451:                                             ; preds = %1433, %1427
  %1452 = load i8, ptr %107, align 1, !tbaa !9, !range !17, !noundef !18
  %1453 = trunc i8 %1452 to i1
  store i1 %1453, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %1648

1454:                                             ; preds = %1423
  %1455 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %108)
          to label %1456 unwind label %1447

1456:                                             ; preds = %1454
  br i1 %1455, label %1457, label %1532

1457:                                             ; preds = %1456
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #0
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %111)
          to label %1458 unwind label %1475

1458:                                             ; preds = %1457
  %1459 = load ptr, ptr %17, align 8, !tbaa !5
  %1460 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1459, i32 0, i32 1
  %1461 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %1460, ptr noundef nonnull align 8 dereferenceable(16) %111)
          to label %1462 unwind label %1479

1462:                                             ; preds = %1458
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #0
  br label %1463

1463:                                             ; preds = %1462
  %1464 = load ptr, ptr %8, align 8, !tbaa !5
  %1465 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1464)
          to label %1466 unwind label %1447

1466:                                             ; preds = %1463
  br i1 %1465, label %1497, label %1467

1467:                                             ; preds = %1466
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #0
  %1468 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %1468)
          to label %1469 unwind label %1484

1469:                                             ; preds = %1467
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #0
  %1470 = getelementptr inbounds %class.anon.564, ptr %115, i32 0, i32 0
  %1471 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1471, ptr %1470, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(8) %115) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef %114)
          to label %1472 unwind label %1488

1472:                                             ; preds = %1469
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  %1473 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1473, ptr noundef @.str)
          to label %1474 unwind label %1493

1474:                                             ; preds = %1472
  invoke void @__cxa_throw(ptr %1473, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %1447

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

1479:                                             ; preds = %1458
  %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
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %111) #0
  br label %1483

1483:                                             ; preds = %1479, %1475
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #0
  br label %1649

1484:                                             ; preds = %1467
  %1485 = landingpad { ptr, i32 }
          cleanup
  %1486 = extractvalue { ptr, i32 } %1485, 0
  store ptr %1486, ptr %15, align 8
  %1487 = extractvalue { ptr, i32 } %1485, 1
  store i32 %1487, ptr %16, align 4
  br label %1492

1488:                                             ; preds = %1469
  %1489 = landingpad { ptr, i32 }
          cleanup
  %1490 = extractvalue { ptr, i32 } %1489, 0
  store ptr %1490, ptr %15, align 8
  %1491 = extractvalue { ptr, i32 } %1489, 1
  store i32 %1491, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  br label %1492

1492:                                             ; preds = %1488, %1484
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  br label %1649

1493:                                             ; preds = %1472
  %1494 = landingpad { ptr, i32 }
          cleanup
  %1495 = extractvalue { ptr, i32 } %1494, 0
  store ptr %1495, ptr %15, align 8
  %1496 = extractvalue { ptr, i32 } %1494, 1
  store i32 %1496, ptr %16, align 4
  call void @__cxa_free_exception(ptr %1473) #0
  br label %1649

1497:                                             ; preds = %1466
  br label %1498

1498:                                             ; preds = %1497
  br label %1499

1499:                                             ; preds = %1498
  %1500 = load ptr, ptr %8, align 8, !tbaa !5
  %1501 = load ptr, ptr %126, align 8, !tbaa !31
  %1502 = getelementptr inbounds ptr, ptr %1501, i64 0
  %1503 = load ptr, ptr %1502, align 8
  %1504 = invoke noundef zeroext i1 %1503(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1500)
          to label %1505 unwind label %1447

1505:                                             ; preds = %1499
  br label %1506

1506:                                             ; preds = %1505
  %1507 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1508 unwind label %1447

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

1509:                                             ; preds = %1508
  %1510 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %1511 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1510, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %1512 unwind label %1447

1512:                                             ; preds = %1509
  %1513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1511, ptr noundef @.str.66)
          to label %1514 unwind label %1447

1514:                                             ; preds = %1512
  %1515 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1513, ptr noundef nonnull align 8 dereferenceable(32) %103)
          to label %1516 unwind label %1447

1516:                                             ; preds = %1514
  %1517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1515, ptr noundef @.str.20)
          to label %1518 unwind label %1447

1518:                                             ; preds = %1516
  %1519 = load ptr, ptr %18, align 8, !tbaa !5
  %1520 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %1519, i32 0, i32 0
  %1521 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1517, ptr noundef nonnull align 8 dereferenceable(8) %1520)
          to label %1522 unwind label %1447

1522:                                             ; preds = %1518
  %1523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1521, ptr noundef @.str.67)
          to label %1524 unwind label %1447

1524:                                             ; preds = %1522
  %1525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1523, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1526 unwind label %1447

1526:                                             ; preds = %1524
  %1527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1525, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1528 unwind label %1447

1528:                                             ; preds = %1526
  br label %1529

1529:                                             ; preds = %1528, %1508
  br label %1530

1530:                                             ; preds = %1529
  br label %1531

1531:                                             ; preds = %1530
  store i1 false, ptr %5, align 1
  store i32 1, ptr %39, align 4
  br label %1648

1532:                                             ; preds = %1456
  %1533 = load i8, ptr %74, align 1, !tbaa !9, !range !17, !noundef !18
  %1534 = trunc i8 %1533 to i1
  br i1 %1534, label %1535, label %1623

1535:                                             ; preds = %1532
  call void @llvm.lifetime.start.p0(i64 16, ptr %116) #0
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %116)
          to label %1536 unwind label %1557

1536:                                             ; preds = %1535
  %1537 = load ptr, ptr %8, align 8, !tbaa !5
  %1538 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %1537)
          to label %1539 unwind label %1561

1539:                                             ; preds = %1536
  %1540 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1538)
          to label %1541 unwind label %1561

1541:                                             ; preds = %1539
  %1542 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1540, i32 0, i32 1
  %1543 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %1542, ptr noundef nonnull align 8 dereferenceable(16) %116)
          to label %1544 unwind label %1561

1544:                                             ; preds = %1541
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #0
  br label %1545

1545:                                             ; preds = %1544
  %1546 = load ptr, ptr %8, align 8, !tbaa !5
  %1547 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1546)
          to label %1548 unwind label %1447

1548:                                             ; preds = %1545
  br i1 %1547, label %1579, label %1549

1549:                                             ; preds = %1548
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #0
  %1550 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %1550)
          to label %1551 unwind label %1566

1551:                                             ; preds = %1549
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #0
  %1552 = getelementptr inbounds %class.anon.565, ptr %120, i32 0, i32 0
  %1553 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %1553, ptr %1552, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %119, ptr noundef nonnull align 8 dereferenceable(8) %120) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef %119)
          to label %1554 unwind label %1570

1554:                                             ; preds = %1551
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  %1555 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1555, ptr noundef @.str)
          to label %1556 unwind label %1575

1556:                                             ; preds = %1554
  invoke void @__cxa_throw(ptr %1555, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %1447

1557:                                             ; preds = %1535
  %1558 = landingpad { ptr, i32 }
          cleanup
  %1559 = extractvalue { ptr, i32 } %1558, 0
  store ptr %1559, ptr %15, align 8
  %1560 = extractvalue { ptr, i32 } %1558, 1
  store i32 %1560, ptr %16, align 4
  br label %1565

1561:                                             ; preds = %1541, %1539, %1536
  %1562 = landingpad { ptr, i32 }
          cleanup
  %1563 = extractvalue { ptr, i32 } %1562, 0
  store ptr %1563, ptr %15, align 8
  %1564 = extractvalue { ptr, i32 } %1562, 1
  store i32 %1564, ptr %16, align 4
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %116) #0
  br label %1565

1565:                                             ; preds = %1561, %1557
  call void @llvm.lifetime.end.p0(i64 16, ptr %116) #0
  br label %1649

1566:                                             ; preds = %1549
  %1567 = landingpad { ptr, i32 }
          cleanup
  %1568 = extractvalue { ptr, i32 } %1567, 0
  store ptr %1568, ptr %15, align 8
  %1569 = extractvalue { ptr, i32 } %1567, 1
  store i32 %1569, ptr %16, align 4
  br label %1574

1570:                                             ; preds = %1551
  %1571 = landingpad { ptr, i32 }
          cleanup
  %1572 = extractvalue { ptr, i32 } %1571, 0
  store ptr %1572, ptr %15, align 8
  %1573 = extractvalue { ptr, i32 } %1571, 1
  store i32 %1573, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %119) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  br label %1574

1574:                                             ; preds = %1570, %1566
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  br label %1649

1575:                                             ; preds = %1554
  %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
  call void @__cxa_free_exception(ptr %1555) #0
  br label %1649

1579:                                             ; preds = %1548
  br label %1580

1580:                                             ; preds = %1579
  br label %1581

1581:                                             ; preds = %1580
  br label %1582

1582:                                             ; preds = %1581
  %1583 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1584 unwind label %1447

1584:                                             ; preds = %1582
  br i1 %1583, label %1585, label %1600

1585:                                             ; preds = %1584
  %1586 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !12
  %1587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1586, ptr noundef @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %1588 unwind label %1447

1588:                                             ; preds = %1585
  %1589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1587, ptr noundef @.str.68)
          to label %1590 unwind label %1447

1590:                                             ; preds = %1588
  %1591 = load ptr, ptr %8, align 8, !tbaa !5
  %1592 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1589, ptr noundef nonnull align 8 dereferenceable(8) %1591)
          to label %1593 unwind label %1447

1593:                                             ; preds = %1590
  %1594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1592, ptr noundef @.str.69)
          to label %1595 unwind label %1447

1595:                                             ; preds = %1593
  %1596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1594, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1597 unwind label %1447

1597:                                             ; preds = %1595
  %1598 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1596, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1599 unwind label %1447

1599:                                             ; preds = %1597
  br label %1600

1600:                                             ; preds = %1599, %1584
  br label %1601

1601:                                             ; preds = %1600
  br label %1602

1602:                                             ; preds = %1601
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #0
  %1603 = load ptr, ptr %8, align 8, !tbaa !5
  %1604 = load ptr, ptr %126, align 8, !tbaa !31
  %1605 = getelementptr inbounds ptr, ptr %1604, i64 0
  %1606 = load ptr, ptr %1605, align 8
  %1607 = invoke noundef zeroext i1 %1606(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1603)
          to label %1608 unwind label %1616

1608:                                             ; preds = %1602
  %1609 = zext i1 %1607 to i8
  store i8 %1609, ptr %121, align 1, !tbaa !9
  %1610 = load i8, ptr %9, align 1, !tbaa !9, !range !17, !noundef !18
  %1611 = trunc i8 %1610 to i1
  br i1 %1611, label %1612, label %1620

1612:                                             ; preds = %1608
  %1613 = load ptr, ptr %7, align 8, !tbaa !5
  %1614 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %126, ptr noundef nonnull align 8 dereferenceable(8) %1613, ptr noundef nonnull align 8 dereferenceable(8) %1614)
          to label %1615 unwind label %1616

1615:                                             ; preds = %1612
  br label %1620

1616:                                             ; preds = %1612, %1602
  %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
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  br label %1649

1620:                                             ; preds = %1615, %1608
  %1621 = load i8, ptr %121, align 1, !tbaa !9, !range !17, !noundef !18
  %1622 = trunc i8 %1621 to i1
  store i1 %1622, ptr %5, align 1
  store i32 1, ptr %39, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  br label %1648

1623:                                             ; preds = %1532
  br label %1624

1624:                                             ; preds = %1623
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #0
  %1625 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %122, ptr noundef nonnull align 8 dereferenceable(8) %1625)
          to label %1626 unwind label %1633

1626:                                             ; preds = %1624
  call void @llvm.lifetime.start.p0(i64 16, ptr %124) #0
  %1627 = getelementptr inbounds %class.anon.566, ptr %124, i32 0, i32 0
  store ptr %103, ptr %1627, align 8, !tbaa !5
  %1628 = getelementptr inbounds %class.anon.566, ptr %124, i32 0, i32 1
  %1629 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %1629, ptr %1628, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %123, ptr noundef nonnull align 8 dereferenceable(16) %124) #0
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %122, i32 noundef 0, ptr noundef %123)
          to label %1630 unwind label %1637

1630:                                             ; preds = %1626
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  %1631 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1631, ptr noundef @.str.58)
          to label %1632 unwind label %1642

1632:                                             ; preds = %1630
  invoke void @__cxa_throw(ptr %1631, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1667 unwind label %1447

1633:                                             ; preds = %1624
  %1634 = landingpad { ptr, i32 }
          cleanup
  %1635 = extractvalue { ptr, i32 } %1634, 0
  store ptr %1635, ptr %15, align 8
  %1636 = extractvalue { ptr, i32 } %1634, 1
  store i32 %1636, ptr %16, align 4
  br label %1641

1637:                                             ; preds = %1626
  %1638 = landingpad { ptr, i32 }
          cleanup
  %1639 = extractvalue { ptr, i32 } %1638, 0
  store ptr %1639, ptr %15, align 8
  %1640 = extractvalue { ptr, i32 } %1638, 1
  store i32 %1640, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %123) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #0
  br label %1641

1641:                                             ; preds = %1637, %1633
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  br label %1649

1642:                                             ; preds = %1630
  %1643 = landingpad { ptr, i32 }
          cleanup
  %1644 = extractvalue { ptr, i32 } %1643, 0
  store ptr %1644, ptr %15, align 8
  %1645 = extractvalue { ptr, i32 } %1643, 1
  store i32 %1645, ptr %16, align 4
  call void @__cxa_free_exception(ptr %1631) #0
  br label %1649

1646:                                             ; No predecessors!
  br label %1647

1647:                                             ; preds = %1646
  unreachable

1648:                                             ; preds = %1620, %1531, %1451
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %108) #0
  call void @llvm.lifetime.end.p0(i64 184, ptr %108) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #0
  br label %1653

1649:                                             ; preds = %1642, %1641, %1616, %1575, %1574, %1565, %1493, %1492, %1483, %1447, %1446
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %108) #0
  br label %1650

1650:                                             ; preds = %1649, %1434
  call void @llvm.lifetime.end.p0(i64 184, ptr %108) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #0
  br label %1651

1651:                                             ; preds = %1650, %1396, %1395, %1383
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #0
  br label %1652

1652:                                             ; preds = %1651, %1379
  call void @llvm.lifetime.end.p0(i64 32, ptr %103) #0
  br label %1654

1653:                                             ; preds = %1648, %1347, %1036
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #0
  br label %1655

1654:                                             ; preds = %1652, %1378, %1024, %864
  call void @llvm.lifetime.end.p0(i64 1, ptr %74) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #0
  br label %1656

1655:                                             ; preds = %1653, %851, %552
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #0
  br label %1657

1656:                                             ; preds = %1654, %848, %524, %469, %444, %443
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %40) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %40) #0
  br label %1659

1657:                                             ; preds = %1655, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #0
  %1658 = load i1, ptr %5, align 1
  ret i1 %1658

1659:                                             ; preds = %1656, %404, %168
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #0
  br label %1660

1660:                                             ; preds = %1659, %164
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #0
  br label %1661

1661:                                             ; preds = %1660, %160
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #0
  br label %1662

1662:                                             ; preds = %1661
  %1663 = load ptr, ptr %15, align 8
  %1664 = load i32, ptr %16, align 4
  %1665 = insertvalue { ptr, i32 } poison, ptr %1663, 0
  %1666 = insertvalue { ptr, i32 } %1665, i32 %1664, 1
  resume { ptr, i32 } %1666

1667:                                             ; preds = %1632, %1556, %1474, %1377, %782, %694, %221
  unreachable
}

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_1vEEOT_"(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 @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPKN3HIR7TypeRefESt6vectorIS5_SaIS5_EEEEZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRS3_bE4$_11EvT_SH_T0_"(ptr, ptr) #7

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

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

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

; 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(12)) #4 align 2

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(88)) #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 uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 @_ZNK3HIR10PathParamseqERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #4 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)) #4 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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_4vEEOT_"(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 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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRNS0_7TypeRefEbE3$_5vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_6vEEOT_"(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 void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8)) #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_8vEEOT_"(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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_9vEEOT_"(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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE4$_10vEEOT_"(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 hidden void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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

attributes #0 = { nounwind }
attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { 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 = { 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 #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { 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 = !{!"bool", !7, i64 0}
!11 = !{!"branch_weights", i32 1, i32 1048575}
!12 = !{!13, !13, i64 0}
!13 = !{!"int", !7, i64 0}
!14 = !{!15, !13, i64 8}
!15 = !{!"_ZTSZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntry", !16, i64 0, !13, i64 8}
!16 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!17 = !{i8 0, i8 2}
!18 = !{}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = !{!24, !6, i64 0}
!24 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!25 = distinct !{!25, !20}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = !{!32, !32, i64 0}
!32 = !{!"vtable pointer", !8, i64 0}
!33 = !{!34, !6, i64 0}
!34 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !35, i64 24, !44, i64 72, !50, i64 104, !50, i64 112, !50, i64 120, !50, i64 128, !50, i64 136, !50, i64 144, !50, i64 152, !50, i64 160, !50, i64 168, !50, i64 176, !50, i64 184, !50, i64 192, !50, i64 200, !50, i64 208}
!35 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !36, i64 0}
!36 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !37, i64 0}
!37 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !39, i64 0}
!39 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!40 = !{!"_ZTSSt15_Rb_tree_header", !41, i64 0, !43, i64 32}
!41 = !{!"_ZTSSt18_Rb_tree_node_base", !42, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!42 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!43 = !{!"long", !7, i64 0}
!44 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !45, i64 0, !49, i64 24}
!45 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !46, i64 0}
!46 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !47, i64 0}
!47 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!49 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!50 = !{!"_ZTSN3HIR10SimplePathE", !51, i64 0}
!51 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!52 = !{!53, !6, i64 0}
!53 = !{!"_ZTSZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_7", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}


; 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.std::vector.543" = type { %"struct.std::_Vector_base.544" }
%"struct.std::_Vector_base.544" = type { %"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl" }
%"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl" = type { %"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl_data" }
%"struct.std::_Vector_base<RecurseEntry, std::allocator<RecurseEntry>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.541 = type { ptr }
%class.anon.542 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.548" = type { ptr }
%struct.Span = type { ptr }
%class.anon.549 = type { i8 }
%"class.std::vector.551" = type { %"struct.std::_Vector_base.552" }
%"struct.std::_Vector_base.552" = type { %"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::TypeRef *, std::allocator<const HIR::TypeRef *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%struct.StackGuard = type { i8 }
%struct.RecurseEntry = type <{ %"class.HIR::TypeRef", i32, [4 x i8] }>
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%class.anon.559 = type { ptr }
%"struct.std::_Rb_tree_const_iterator" = type { ptr }
%class.anon.560 = type { ptr, ptr }
%"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" = type { %"class.__gnu_cxx::__normal_iterator.439" }
%"class.__gnu_cxx::__normal_iterator.439" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%"class.std::function.336" = type { %"class.std::_Function_base", ptr }
%class.anon.561 = type { ptr, ptr }
%class.anon.562 = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.563 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.564 = type { ptr }
%class.anon.565 = type { ptr }
%class.anon.566 = type { ptr, ptr }

@__dso_handle = external hidden global i8
@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [7 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.20 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb = external hidden unnamed_addr constant [35 x i8], align 1
@_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level = external hidden local_unnamed_addr global i32, align 4
@_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack = external hidden global %"class.std::vector.543", align 8
@_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack = external hidden global i64, align 8
@.str.54 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.55 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.56 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.57 = external hidden unnamed_addr constant [40 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb = external hidden unnamed_addr constant [104 x i8], align 1
@.str.58 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.59 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.60 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.61 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.62 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [20 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [11 x i8], align 1
@.str.66 = external hidden unnamed_addr constant [43 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [22 x i8], align 1
@.str.68 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [19 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

declare i32 @__gxx_personality_v0(...)

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

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef, ptr noundef) local_unnamed_addr #7 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 nounwind uwtable
declare dso_local void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88)) unnamed_addr #3 align 2

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

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

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

; Function Attrs: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #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)) 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 uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4 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 #3

; 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: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(216) ptr @_ZSt3decRSt8ios_base(ptr noundef nonnull align 8 dereferenceable(216)) #7

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

; Function Attrs: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_(ptr noundef nonnull align 8 dereferenceable(8)) #7

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 #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 @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #2

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

; 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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(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(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext %3) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function.0", align 8
  %7 = alloca %class.anon.541, align 8
  %8 = alloca %"class.std::function.0", align 8
  %9 = alloca %class.anon.542, align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %12 = alloca %struct.Span, align 8
  %13 = alloca %"class.std::function.0", align 8
  %14 = alloca %class.anon.549, align 1
  %15 = alloca %"class.std::vector.551", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.548", align 8
  %18 = alloca ptr, align 8
  %19 = alloca %"class.HIR::TypeRef", align 8
  %20 = alloca %"class.HIR::TypePathBinding", align 8
  %21 = alloca %struct.StackGuard, align 1
  %22 = alloca %struct.RecurseEntry, align 8
  %23 = alloca %"class.HIR::Path", align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"class.HIR::GenericPath", align 8
  %26 = alloca %class.RcString, align 8
  %27 = alloca %"struct.HIR::PathParams", align 8
  %28 = alloca %"class.HIR::TypePathBinding", align 8
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca %struct.Span, align 8
  %31 = alloca %"class.std::function.0", align 8
  %32 = alloca %class.anon.559, align 8
  %33 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %34 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %35 = alloca ptr, align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function.0", align 8
  %38 = alloca %class.anon.560, align 8
  %39 = alloca %"class.HIR::TypeRef", align 8
  %40 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %41 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %42 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %43 = alloca %"struct.std::_Rb_tree_const_iterator", align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca %struct.MonomorphStatePtr, align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.395", 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::TypeRef", align 8
  %52 = alloca %"struct.HIR::PathParams", align 8
  %53 = alloca %"class.std::function.336", align 8
  %54 = alloca %class.anon.561, align 8
  %55 = alloca %"class.HIR::GenericPath", align 8
  %56 = alloca %struct.Span, align 8
  %57 = alloca %"class.std::function.0", align 8
  %58 = alloca %class.anon.562, align 8
  %59 = alloca i8, align 1
  %60 = alloca %struct.ImplRef, align 8
  %61 = alloca %"class.std::function", align 8
  %62 = alloca %class.anon.563, align 8
  %63 = alloca %"class.HIR::TypePathBinding", align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function.0", align 8
  %66 = alloca %class.anon.564, align 8
  %67 = alloca %"class.HIR::TypePathBinding", align 8
  %68 = alloca %struct.Span, align 8
  %69 = alloca %"class.std::function.0", align 8
  %70 = alloca %class.anon.565, align 8
  %71 = alloca %struct.Span, align 8
  %72 = alloca %"class.std::function.0", align 8
  %73 = alloca %class.anon.566, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #9
  %74 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %75 = select i1 %74, ptr @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #9
  store ptr %2, ptr %7, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #9
  store ptr %2, ptr %9, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %75, ptr noundef nonnull %6, ptr noundef nonnull %8)
          to label %76 unwind label %90

76:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  %77 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %78 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %77)
  %79 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %78)
  %80 = load atomic i8, ptr @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack acquire, align 8
  %81 = icmp eq i8 %80, 0
  br i1 %81, label %82, label %86, !prof !9

82:                                               ; preds = %76
  %83 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  %.not = icmp eq i32 %83, 0
  br i1 %.not, label %86, label %84

84:                                               ; preds = %82
  call void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  %85 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EED2Ev, ptr nonnull @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr nonnull @__dso_handle) #9
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  br label %86

86:                                               ; preds = %84, %82, %76
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #9
  %87 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  store ptr %87, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #9
  %88 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  store ptr %88, ptr %11, align 8
  %89 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br i1 %89, label %.lr.ph, label %.critedge401.critedge

._crit_edge:                                      ; preds = %130
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  br i1 %.1292, label %134, label %.critedge401

90:                                               ; preds = %4
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #9
  br label %762

.lr.ph:                                           ; preds = %86, %130
  %.0291530 = phi i1 [ %.1292, %130 ], [ false, %86 ]
  %92 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %93 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %94 unwind label %.loopexit469

94:                                               ; preds = %.lr.ph
  br i1 %93, label %95, label %110

95:                                               ; preds = %94
  %96 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %97 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %96, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %98 unwind label %.loopexit469

98:                                               ; preds = %95
  %99 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %100 unwind label %.loopexit469

100:                                              ; preds = %98
  %101 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %99, ptr noundef nonnull @.str.25)
          to label %102 unwind label %.loopexit469

102:                                              ; preds = %100
  %103 = getelementptr inbounds i8, ptr %92, i64 8
  %104 = load i32, ptr %103, align 8, !tbaa !12
  %105 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %101, i32 noundef %104)
          to label %106 unwind label %.loopexit469

106:                                              ; preds = %102
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %108 unwind label %.loopexit469

108:                                              ; preds = %106
  %109 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %110 unwind label %.loopexit469

.loopexit469:                                     ; preds = %.lr.ph, %95, %98, %100, %102, %106, %108, %110
  %lpad.loopexit471 = landingpad { ptr, i32 }
          cleanup
  br label %133

.loopexit.split-lp470:                            ; preds = %122
  %lpad.loopexit.split-lp472 = landingpad { ptr, i32 }
          cleanup
  br label %133

110:                                              ; preds = %108, %94
  %111 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %112 unwind label %.loopexit469

112:                                              ; preds = %110
  br i1 %111, label %113, label %130

113:                                              ; preds = %112
  %114 = getelementptr inbounds i8, ptr %92, i64 8
  %115 = load i32, ptr %114, align 8, !tbaa !12
  %116 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  %117 = icmp eq i32 %115, %116
  br i1 %117, label %130, label %118

118:                                              ; preds = %113
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %119 unwind label %123

119:                                              ; preds = %118
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %14) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 1 dereferenceable(1) %14) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull %13)
          to label %120 unwind label %125

120:                                              ; preds = %119
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  %121 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %121, ptr noundef nonnull @.str)
          to label %122 unwind label %128

122:                                              ; preds = %120
  invoke void @__cxa_throw(ptr nonnull %121, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %763 unwind label %.loopexit.split-lp470

123:                                              ; preds = %118
  %124 = landingpad { ptr, i32 }
          cleanup
  br label %127

125:                                              ; preds = %119
  %126 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %14) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br label %127

127:                                              ; preds = %125, %123
  %.pn393 = phi { ptr, i32 } [ %126, %125 ], [ %124, %123 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %133

128:                                              ; preds = %120
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %121) #9
  br label %133

130:                                              ; preds = %113, %112
  %.1292 = phi i1 [ %.0291530, %112 ], [ true, %113 ]
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #9
  %132 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br i1 %132, label %.lr.ph, label %._crit_edge

133:                                              ; preds = %.loopexit469, %.loopexit.split-lp470, %128, %127
  %.pn395 = phi { ptr, i32 } [ %129, %128 ], [ %.pn393, %127 ], [ %lpad.loopexit471, %.loopexit469 ], [ %lpad.loopexit.split-lp472, %.loopexit.split-lp470 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  br label %761

134:                                              ; preds = %._crit_edge
  %135 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %136 unwind label %146

136:                                              ; preds = %134
  br i1 %135, label %137, label %148

137:                                              ; preds = %136
  %138 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %139 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %138, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %140 unwind label %146

140:                                              ; preds = %137
  %141 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef nonnull @.str.54)
          to label %142 unwind label %146

142:                                              ; preds = %140
  %143 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %141, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %144 unwind label %146

144:                                              ; preds = %142
  %145 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %143, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %148 unwind label %146

146:                                              ; preds = %144, %142, %140, %137, %134
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %761

148:                                              ; preds = %144, %136
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #9
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #9
  %149 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  store ptr %149, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  %150 = call ptr @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack) #9
  store ptr %150, ptr %17, align 8
  %151 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br i1 %151, label %.lr.ph592, label %._crit_edge593

._crit_edge593:                                   ; preds = %163, %148
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  %152 = call noundef i64 @_ZNKSt6vectorIPKN3HIR7TypeRefESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  %153 = icmp ugt i64 %152, 1
  br i1 %153, label %166, label %178

.lr.ph592:                                        ; preds = %148, %163
  %154 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  %155 = getelementptr inbounds i8, ptr %154, i64 8
  %156 = load i32, ptr %155, align 8, !tbaa !12
  %157 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  %158 = icmp eq i32 %156, %157
  br i1 %158, label %159, label %163

159:                                              ; preds = %.lr.ph592
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  store ptr %154, ptr %18, align 8, !tbaa !5
  invoke void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE9push_backEOS3_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(8) %18)
          to label %160 unwind label %161

160:                                              ; preds = %159
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  br label %163

161:                                              ; preds = %159
  %162 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #9
  br label %200

163:                                              ; preds = %160, %.lr.ph592
  %164 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  %165 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #9
  br i1 %165, label %.lr.ph592, label %._crit_edge593

166:                                              ; preds = %._crit_edge593
  %167 = call ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  %168 = call ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  invoke void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPKN3HIR7TypeRefESt6vectorIS5_SaIS5_EEEEZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRS3_bE4$_11EvT_SH_T0_"(ptr %167, ptr %168)
          to label %169 unwind label %174

169:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %15, i64 noundef 0) #9
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %19, ptr noundef nonnull align 8 dereferenceable(8) %171)
          to label %172 unwind label %176

172:                                              ; preds = %169
  %173 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %19)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %178

174:                                              ; preds = %190, %188, %186, %184, %181, %178, %166
  %175 = landingpad { ptr, i32 }
          cleanup
  br label %200

176:                                              ; preds = %169
  %177 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %200

178:                                              ; preds = %._crit_edge593, %172
  %179 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %180 unwind label %174

180:                                              ; preds = %178
  br i1 %179, label %181, label %192

181:                                              ; preds = %180
  %182 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %182, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %184 unwind label %174

184:                                              ; preds = %181
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull @.str.55)
          to label %186 unwind label %174

186:                                              ; preds = %184
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %188 unwind label %174

188:                                              ; preds = %186
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %187, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %190 unwind label %174

190:                                              ; preds = %188
  %191 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %189, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %192 unwind label %174

192:                                              ; preds = %190, %180
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %20) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %20)
          to label %193 unwind label %198

193:                                              ; preds = %192
  %194 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %195 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %194)
  %196 = getelementptr inbounds i8, ptr %195, i64 88
  %197 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %196, ptr noundef nonnull align 8 dereferenceable(16) %20)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %20) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  br label %760

198:                                              ; preds = %192
  %199 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %20) #9
  br label %200

200:                                              ; preds = %198, %176, %174, %161
  %.pn391 = phi { ptr, i32 } [ %162, %161 ], [ %199, %198 ], [ %175, %174 ], [ %177, %176 ]
  call void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  br label %761

.critedge401.critedge:                            ; preds = %86
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #9
  br label %.critedge401

.critedge401:                                     ; preds = %.critedge401.critedge, %._crit_edge
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %21) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %22) #9
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %24, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %201 unwind label %222

201:                                              ; preds = %.critedge401
  %202 = getelementptr inbounds i8, ptr %79, i64 8
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %25, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %203 unwind label %224

203:                                              ; preds = %201
  %204 = getelementptr inbounds i8, ptr %79, i64 40
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %204)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %27)
          to label %205 unwind label %226

205:                                              ; preds = %203
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26, ptr noundef nonnull %27)
          to label %206 unwind label %228

206:                                              ; preds = %205
  invoke void @_ZN3HIR15TypePathBindingC2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28)
          to label %207 unwind label %230

207:                                              ; preds = %206
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull %23, ptr noundef nonnull %28)
          to label %208 unwind label %232

208:                                              ; preds = %207
  %209 = getelementptr inbounds i8, ptr %22, i64 8
  %210 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  store i32 %210, ptr %209, align 8, !tbaa !12
  invoke void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_stack, ptr noundef nonnull align 8 dereferenceable(12) %22)
          to label %211 unwind label %234

211:                                              ; preds = %208
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN12RecurseEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %22) #9
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  %212 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  %213 = add i32 %212, 1
  store i32 %213, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %214 unwind label %242

214:                                              ; preds = %211
  %215 = getelementptr inbounds i8, ptr %79, i64 16
  %216 = getelementptr inbounds i8, ptr %79, i64 24
  %217 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %216)
  %218 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %.preheader468 unwind label %244

.preheader468:                                    ; preds = %214
  %.not340531 = icmp eq ptr %217, %218
  br i1 %.not340531, label %._crit_edge534, label %.lr.ph533

._crit_edge534:                                   ; preds = %246, %.preheader468
  %219 = load i32, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  %220 = add i32 %219, -1
  store i32 %220, ptr @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE17s_recursion_level, align 4, !tbaa !10
  %221 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %250 unwind label %242

222:                                              ; preds = %.critedge401
  %223 = landingpad { ptr, i32 }
          cleanup
  br label %241

224:                                              ; preds = %201
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %240

226:                                              ; preds = %203
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %239

228:                                              ; preds = %205
  %229 = landingpad { ptr, i32 }
          cleanup
  br label %238

230:                                              ; preds = %206
  %231 = landingpad { ptr, i32 }
          cleanup
  br label %237

232:                                              ; preds = %207
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %236

234:                                              ; preds = %208
  %235 = landingpad { ptr, i32 }
          cleanup
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN12RecurseEntryD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %22) #9
  br label %236

236:                                              ; preds = %234, %232
  %.pn = phi { ptr, i32 } [ %235, %234 ], [ %233, %232 ]
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %28) #9
  br label %237

237:                                              ; preds = %236, %230
  %.pn.pn = phi { ptr, i32 } [ %.pn, %236 ], [ %231, %230 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %23) #9
  br label %238

238:                                              ; preds = %237, %228
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %237 ], [ %229, %228 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #9
  br label %239

239:                                              ; preds = %238, %226
  %.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn, %238 ], [ %227, %226 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  br label %240

240:                                              ; preds = %239, %224
  %.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn, %239 ], [ %225, %224 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %241

241:                                              ; preds = %240, %222
  %.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn.pn.pn.pn, %240 ], [ %223, %222 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %22) #9
  br label %.loopexit.split-lp458

242:                                              ; preds = %260, %258, %256, %254, %251, %._crit_edge534, %211
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

244:                                              ; preds = %214
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

.lr.ph533:                                        ; preds = %.preheader468, %246
  %.0312532 = phi ptr [ %247, %246 ], [ %217, %.preheader468 ]
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %.0312532)
          to label %246 unwind label %248

246:                                              ; preds = %.lr.ph533
  %247 = getelementptr inbounds i8, ptr %.0312532, i64 8
  %.not340 = icmp eq ptr %247, %218
  br i1 %.not340, label %._crit_edge534, label %.lr.ph533

248:                                              ; preds = %.lr.ph533
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

250:                                              ; preds = %._crit_edge534
  br i1 %221, label %251, label %262

251:                                              ; preds = %250
  %252 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %253 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %252, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %254 unwind label %242

254:                                              ; preds = %251
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %253, ptr noundef nonnull @.str.56)
          to label %256 unwind label %242

256:                                              ; preds = %254
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_4PathE(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull align 8 dereferenceable(88) %78)
          to label %258 unwind label %242

258:                                              ; preds = %256
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %260 unwind label %242

260:                                              ; preds = %258
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %262 unwind label %242

262:                                              ; preds = %260, %250
  %263 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %79)
  %264 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %263)
  br i1 %264, label %.lr.ph537, label %.critedge

.lr.ph537:                                        ; preds = %262, %268
  %.0313535 = phi ptr [ %271, %268 ], [ %79, %262 ]
  %265 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0313535)
  %266 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %265)
  %267 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %266)
  br i1 %267, label %268, label %.critedge

268:                                              ; preds = %.lr.ph537
  %269 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0313535)
  %270 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %269)
  %271 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %270)
  %272 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %271)
  %273 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %272)
  br i1 %273, label %.lr.ph537, label %.critedge, !llvm.loop !15

274:                                              ; preds = %288, %286, %284, %281, %278
  %275 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

.critedge:                                        ; preds = %.lr.ph537, %268, %262
  %.0313.lcssa = phi ptr [ %79, %262 ], [ %271, %268 ], [ %.0313535, %.lr.ph537 ]
  %276 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.0313.lcssa)
  %277 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
  br i1 %277, label %278, label %.lr.ph575

278:                                              ; preds = %.critedge
  %279 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %280 unwind label %274

280:                                              ; preds = %278
  br i1 %279, label %281, label %.thread421

281:                                              ; preds = %280
  %282 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %282, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %284 unwind label %274

284:                                              ; preds = %281
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull @.str.57)
          to label %286 unwind label %274

286:                                              ; preds = %284
  %287 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %285, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %288 unwind label %274

288:                                              ; preds = %286
  %289 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %287, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread421 unwind label %274

.lr.ph575:                                        ; preds = %.critedge
  %290 = getelementptr inbounds i8, ptr %0, i64 160
  %291 = getelementptr inbounds i8, ptr %0, i64 168
  %292 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %79)
  %293 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %292)
  switch i32 %293, label %.thread423 [
    i32 0, label %301
    i32 1, label %302
    i32 15, label %.preheader.split
    i32 6, label %.preheader463.split.split
  ]

.preheader463.split.split:                        ; preds = %.lr.ph575
  %294 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %292)
  %295 = getelementptr inbounds i8, ptr %294, i64 8
  %296 = getelementptr inbounds i8, ptr %294, i64 16
  %297 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %344 unwind label %.split.split

.preheader.split:                                 ; preds = %.lr.ph575
  %298 = getelementptr inbounds i8, ptr %0, i64 152
  %299 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %292)
  %300 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %298)
          to label %317 unwind label %.loopexit457.split

301:                                              ; preds = %.lr.ph575
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1703, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb) #11
  unreachable

302:                                              ; preds = %.lr.ph575
  %303 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %292)
  %304 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %307 unwind label %305

305:                                              ; preds = %315, %313, %311, %308, %302
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

307:                                              ; preds = %302
  br i1 %304, label %308, label %.thread421

308:                                              ; preds = %307
  %309 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %309, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %311 unwind label %305

311:                                              ; preds = %308
  %312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %310, ptr noundef nonnull @.str.57)
          to label %313 unwind label %305

313:                                              ; preds = %311
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %312, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %315 unwind label %305

315:                                              ; preds = %313
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread421 unwind label %305

.loopexit457.split:                               ; preds = %.preheader.split, %318, %321
  %lpad.loopexit459 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

.loopexit.split-lp458.loopexit:                   ; preds = %.split569
  %lpad.loopexit465 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

.loopexit.split-lp458.loopexit.split-lp:          ; preds = %335
  %lpad.loopexit.split-lp466 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

317:                                              ; preds = %.preheader.split
  br i1 %300, label %.split569, label %318

318:                                              ; preds = %317
  %319 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %290)
          to label %320 unwind label %.loopexit457.split

320:                                              ; preds = %318
  br i1 %319, label %.split569, label %321

321:                                              ; preds = %320
  %322 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %291)
          to label %323 unwind label %.loopexit457.split

323:                                              ; preds = %321
  br i1 %322, label %.split569, label %.thread423, !llvm.loop !17

.split569:                                        ; preds = %317, %320, %323
  %324 = invoke noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull @.str.7)
          to label %325 unwind label %.loopexit.split-lp458.loopexit

325:                                              ; preds = %.split569
  br i1 %324, label %326, label %331

326:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  %327 = load ptr, ptr %299, align 8, !tbaa !18
  %328 = getelementptr inbounds i8, ptr %327, i64 56
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %328)
          to label %._crit_edge579 unwind label %329

329:                                              ; preds = %326
  %330 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %.loopexit.split-lp458

331:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %332 unwind label %336

332:                                              ; preds = %331
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #9
  store ptr %79, ptr %32, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 0, ptr noundef nonnull %31)
          to label %333 unwind label %338

333:                                              ; preds = %332
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  %334 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %334, ptr noundef nonnull @.str.58)
          to label %335 unwind label %341

335:                                              ; preds = %333
  invoke void @__cxa_throw(ptr nonnull %334, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %763 unwind label %.loopexit.split-lp458.loopexit.split-lp

336:                                              ; preds = %331
  %337 = landingpad { ptr, i32 }
          cleanup
  br label %340

338:                                              ; preds = %332
  %339 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %340

340:                                              ; preds = %338, %336
  %.pn347 = phi { ptr, i32 } [ %339, %338 ], [ %337, %336 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %.loopexit.split-lp458

341:                                              ; preds = %333
  %342 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %334) #9
  br label %.loopexit.split-lp458

._crit_edge579:                                   ; preds = %326
  %343 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %29)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %.thread421

344:                                              ; preds = %.preheader463.split.split
  br i1 %297, label %345, label %.thread423

345:                                              ; preds = %344
  %346 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamseqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %215, ptr noundef nonnull align 8 dereferenceable(24) %296)
          to label %347 unwind label %.split.split

347:                                              ; preds = %345
  br i1 %346, label %.split544, label %.thread423

.split544:                                        ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #9
  %348 = getelementptr inbounds i8, ptr %294, i64 40
  %349 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %348, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %350 unwind label %360

350:                                              ; preds = %.split544
  store ptr %349, ptr %33, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #9
  %351 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %348) #9
  store ptr %351, ptr %34, align 8
  %352 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #9
  br i1 %352, label %353, label %372

353:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  store ptr @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %354 unwind label %362

354:                                              ; preds = %353
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %38) #9
  store ptr %35, ptr %38, align 8, !tbaa !5
  %355 = getelementptr inbounds i8, ptr %38, i64 8
  store ptr %79, ptr %355, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(16) %38) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %356 unwind label %364

356:                                              ; preds = %354
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  %357 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %357, ptr noundef nonnull @.str.3)
          to label %358 unwind label %367

358:                                              ; preds = %356
  invoke void @__cxa_throw(ptr nonnull %357, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %763 unwind label %369

.split.split:                                     ; preds = %345, %.preheader463.split.split
  %359 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

360:                                              ; preds = %.split544
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %377

362:                                              ; preds = %353
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %366

364:                                              ; preds = %354
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %38) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %366

366:                                              ; preds = %364, %362
  %.pn341 = phi { ptr, i32 } [ %365, %364 ], [ %363, %362 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %371

367:                                              ; preds = %356
  %368 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %357) #9
  br label %371

369:                                              ; preds = %358
  %370 = landingpad { ptr, i32 }
          cleanup
  br label %371

371:                                              ; preds = %369, %367, %366
  %.pn343 = phi { ptr, i32 } [ %370, %369 ], [ %368, %367 ], [ %.pn341, %366 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %377

372:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #9
  %373 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %33) #9
  %374 = getelementptr inbounds i8, ptr %373, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %39, ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %._crit_edge582 unwind label %375

375:                                              ; preds = %372
  %376 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  br label %377

377:                                              ; preds = %375, %371, %360
  %.pn343.pn = phi { ptr, i32 } [ %.pn343, %371 ], [ %376, %375 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %.loopexit.split-lp458

._crit_edge582:                                   ; preds = %372
  %378 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %39)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #9
  br label %.thread421

.thread423:                                       ; preds = %.lr.ph575, %344, %347, %323
  %379 = load ptr, ptr %0, align 8, !tbaa !20
  %380 = load ptr, ptr %379, align 8
  %381 = invoke noundef zeroext i1 %380(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %382 unwind label %383

382:                                              ; preds = %.thread423
  br i1 %381, label %.thread, label %385

383:                                              ; preds = %460, %.thread423
  %384 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

385:                                              ; preds = %382
  %386 = getelementptr inbounds i8, ptr %0, i64 80
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #9
  %387 = invoke ptr @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE5beginEv(ptr noundef nonnull align 8 dereferenceable(25) %386)
          to label %388 unwind label %392

388:                                              ; preds = %385
  store ptr %387, ptr %40, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #9
  %389 = invoke ptr @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE3endEv(ptr noundef nonnull align 8 dereferenceable(25) %386)
          to label %390 unwind label %394

390:                                              ; preds = %388
  store ptr %389, ptr %41, align 8
  %391 = call noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41)
  br i1 %391, label %.lr.ph586, label %.thread640

392:                                              ; preds = %385
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %457

394:                                              ; preds = %388
  %395 = landingpad { ptr, i32 }
          cleanup
  br label %456

.lr.ph586:                                        ; preds = %390, %453
  %396 = call noundef nonnull align 8 dereferenceable(192) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratordeEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
  %397 = getelementptr inbounds i8, ptr %396, i64 8
  %398 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %399 unwind label %415

399:                                              ; preds = %.lr.ph586
  br i1 %398, label %400, label %417

400:                                              ; preds = %399
  %401 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %402 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %401, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %403 unwind label %415

403:                                              ; preds = %400
  %404 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %402, ptr noundef nonnull @.str.59)
          to label %405 unwind label %415

405:                                              ; preds = %403
  %406 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %404, ptr noundef nonnull align 8 dereferenceable(8) %396)
          to label %407 unwind label %415

407:                                              ; preds = %405
  %408 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %406, ptr noundef nonnull @.str.33)
          to label %409 unwind label %415

409:                                              ; preds = %407
  %410 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %408, ptr noundef nonnull align 8 dereferenceable(32) %397)
          to label %411 unwind label %415

411:                                              ; preds = %409
  %412 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %410, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %413 unwind label %415

413:                                              ; preds = %411
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %412, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %417 unwind label %415

415:                                              ; preds = %420, %417, %413, %411, %409, %407, %405, %403, %400, %.lr.ph586
  %416 = landingpad { ptr, i32 }
          cleanup
  br label %456

417:                                              ; preds = %413, %399
  %418 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %419 unwind label %415

419:                                              ; preds = %417
  br i1 %418, label %453, label %420

420:                                              ; preds = %419
  %421 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %397, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %422 unwind label %415

422:                                              ; preds = %420
  br i1 %421, label %423, label %453

423:                                              ; preds = %422
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #9
  %424 = getelementptr inbounds i8, ptr %396, i64 144
  %425 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %424, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %426 unwind label %445

426:                                              ; preds = %423
  store ptr %425, ptr %42, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #9
  %427 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %424) #9
  store ptr %427, ptr %43, align 8
  %428 = call noundef zeroext i1 @_ZSteqRKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #9
  br i1 %428, label %429, label %447

429:                                              ; preds = %426
  %430 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %431 unwind label %445

431:                                              ; preds = %429
  br i1 %430, label %432, label %.thread645

432:                                              ; preds = %431
  %433 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %433, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %435 unwind label %445

435:                                              ; preds = %432
  %436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %434, ptr noundef nonnull @.str.60)
          to label %437 unwind label %445

437:                                              ; preds = %435
  %438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %436, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %439 unwind label %445

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %438, ptr noundef nonnull @.str.61)
          to label %441 unwind label %445

441:                                              ; preds = %439
  %442 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %440, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %443 unwind label %445

443:                                              ; preds = %441
  %444 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread645 unwind label %445

445:                                              ; preds = %443, %441, %439, %437, %435, %432, %429, %423
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %452

447:                                              ; preds = %426
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #9
  %448 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  %449 = getelementptr inbounds i8, ptr %448, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %44, ptr noundef nonnull align 8 dereferenceable(8) %449)
          to label %458 unwind label %450

450:                                              ; preds = %447
  %451 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  br label %452

452:                                              ; preds = %450, %445
  %.pn352 = phi { ptr, i32 } [ %446, %445 ], [ %451, %450 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %456

453:                                              ; preds = %419, %422
  %454 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %40)
  %455 = call noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %41)
  br i1 %455, label %.lr.ph586, label %.thread640

456:                                              ; preds = %415, %452, %394
  %.pn352.pn.pn = phi { ptr, i32 } [ %395, %394 ], [ %.pn352, %452 ], [ %416, %415 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  br label %457

457:                                              ; preds = %456, %392
  %.pn352.pn.pn.pn = phi { ptr, i32 } [ %.pn352.pn.pn, %456 ], [ %393, %392 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %.loopexit.split-lp458

.thread640:                                       ; preds = %453, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %461

.thread645:                                       ; preds = %431, %443
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %461

458:                                              ; preds = %447
  %459 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %44)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #9
  br label %.thread

.thread:                                          ; preds = %382, %458
  br i1 %3, label %460, label %.thread421

460:                                              ; preds = %.thread
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.thread421 unwind label %383

461:                                              ; preds = %.thread645, %.thread640
  %462 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %79)
  %463 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %462)
  %.not357 = icmp eq ptr %463, null
  br i1 %.not357, label %.thread449, label %464

464:                                              ; preds = %461
  %465 = call noundef ptr @_ZNK3HIR4Path4Data13opt_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %463)
  %.not358 = icmp eq ptr %465, null
  br i1 %.not358, label %.thread449, label %466

466:                                              ; preds = %464
  %467 = getelementptr inbounds i8, ptr %0, i64 8
  %468 = load ptr, ptr %467, align 8, !tbaa !22
  %469 = getelementptr inbounds i8, ptr %465, i64 8
  %470 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %468, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %469)
          to label %471 unwind label %487

471:                                              ; preds = %466
  %472 = getelementptr inbounds i8, ptr %470, i64 136
  %473 = getelementptr inbounds i8, ptr %465, i64 40
  %474 = invoke noundef nonnull align 8 dereferenceable(136) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %472, ptr noundef nonnull align 8 dereferenceable(8) %473)
          to label %475 unwind label %489

475:                                              ; preds = %471
  %476 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %477 unwind label %489

477:                                              ; preds = %475
  br i1 %476, label %478, label %491

478:                                              ; preds = %477
  %479 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %479, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %481 unwind label %489

481:                                              ; preds = %478
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull @.str.62)
          to label %483 unwind label %489

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %485 unwind label %489

485:                                              ; preds = %483
  %486 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %484, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %491 unwind label %489

487:                                              ; preds = %466
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

489:                                              ; preds = %485, %483, %481, %478, %475, %471
  %490 = landingpad { ptr, i32 }
          cleanup
  br label %.loopexit.split-lp458

491:                                              ; preds = %485, %477
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %45) #9
  %492 = getelementptr inbounds i8, ptr %465, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %45, ptr noundef nonnull %465, ptr noundef nonnull %492, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %493 unwind label %499

493:                                              ; preds = %491
  %494 = getelementptr inbounds i8, ptr %474, i64 104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  %495 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %494) #9
  store ptr %495, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  %496 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %494) #9
  store ptr %496, ptr %47, align 8
  %497 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br i1 %497, label %.lr.ph589, label %._crit_edge590

.lr.ph589:                                        ; preds = %493
  %498 = getelementptr inbounds i8, ptr %54, i64 8
  br label %501

499:                                              ; preds = %491
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %597

501:                                              ; preds = %.lr.ph589, %571
  %502 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  %503 = getelementptr inbounds i8, ptr %502, i64 8
  %504 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %503, ptr noundef nonnull align 8 dereferenceable(32) %202)
          to label %505 unwind label %528

505:                                              ; preds = %501
  br i1 %504, label %506, label %553

506:                                              ; preds = %505
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  %507 = getelementptr inbounds i8, ptr %502, i64 40
  %508 = invoke ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %507, ptr noundef nonnull align 8 dereferenceable(8) %204)
          to label %509 unwind label %.loopexit

509:                                              ; preds = %506
  store ptr %508, ptr %48, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  %510 = call ptr @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %507) #9
  store ptr %510, ptr %49, align 8
  %511 = 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) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  br i1 %511, label %512, label %551

512:                                              ; preds = %509
  %513 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %514 unwind label %.loopexit.split-lp

514:                                              ; preds = %512
  br i1 %513, label %515, label %530

515:                                              ; preds = %514
  %516 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %517 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %516, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %518 unwind label %.loopexit.split-lp

518:                                              ; preds = %515
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef nonnull @.str.63)
          to label %520 unwind label %.loopexit.split-lp

520:                                              ; preds = %518
  %521 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  %522 = getelementptr inbounds i8, ptr %521, i64 40
  %523 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %519, ptr noundef nonnull align 8 dereferenceable(8) %522)
          to label %524 unwind label %.loopexit.split-lp

524:                                              ; preds = %520
  %525 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %526 unwind label %.loopexit.split-lp

526:                                              ; preds = %524
  %527 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %525, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %530 unwind label %.loopexit.split-lp

528:                                              ; preds = %501
  %529 = landingpad { ptr, i32 }
          cleanup
  br label %576

.loopexit:                                        ; preds = %506
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %552

.loopexit.split-lp:                               ; preds = %512, %515, %518, %520, %524, %526, %530, %550
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %552

530:                                              ; preds = %526, %514
  %531 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  %532 = getelementptr inbounds i8, ptr %531, i64 40
  %533 = invoke noundef zeroext i1 @_Z24monomorphise_type_neededRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(8) %532, i1 noundef zeroext false)
          to label %534 unwind label %.loopexit.split-lp

534:                                              ; preds = %530
  br i1 %533, label %535, label %542

535:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %50) #9
  %536 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  %537 = getelementptr inbounds i8, ptr %536, i64 40
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %50, ptr noundef nonnull align 8 dereferenceable(96) %45, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %537, i1 noundef zeroext true)
          to label %538 unwind label %540

538:                                              ; preds = %535
  %539 = 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) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  br label %549

540:                                              ; preds = %535
  %541 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %50) #9
  br label %552

542:                                              ; preds = %534
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #9
  %543 = call noundef ptr @_ZNKSt23_Rb_tree_const_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  %544 = getelementptr inbounds i8, ptr %543, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %51, ptr noundef nonnull align 8 dereferenceable(8) %544)
          to label %545 unwind label %547

545:                                              ; preds = %542
  %546 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %51)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  br label %549

547:                                              ; preds = %542
  %548 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  br label %552

549:                                              ; preds = %545, %538
  br i1 %3, label %550, label %.thread436

550:                                              ; preds = %549
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.thread436 unwind label %.loopexit.split-lp

.thread436:                                       ; preds = %550, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %.thread452

551:                                              ; preds = %509
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %553

552:                                              ; preds = %.loopexit, %.loopexit.split-lp, %547, %540
  %.pn359 = phi { ptr, i32 } [ %541, %540 ], [ %548, %547 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %576

553:                                              ; preds = %551, %505
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %52) #9
  %554 = getelementptr inbounds i8, ptr %502, i64 16
  invoke void @_ZNK13Monomorphiser21monomorph_path_paramsERK4SpanRKN3HIR10PathParamsEb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %52, ptr noundef nonnull align 8 dereferenceable(96) %45, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %554, i1 noundef zeroext false)
          to label %555 unwind label %562

555:                                              ; preds = %553
  %556 = load ptr, ptr %467, align 8, !tbaa !22
  %557 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %556, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %503)
          to label %558 unwind label %564

558:                                              ; preds = %555
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %54) #9
  store ptr %79, ptr %54, align 8, !tbaa !5
  store ptr %2, ptr %498, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRNS0_7TypeRefEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(16) %54) #9
  %559 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve25find_named_trait_in_traitERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_5TraitES6_S9_RKNS3_7TypeRefESt8functionIFbS9_St3mapI8RcStringNS3_9TraitPath8AtyEqualESt4lessISI_ESaISt4pairIKSI_SK_EEEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(24) %215, ptr noundef nonnull align 8 dereferenceable(400) %557, ptr noundef nonnull align 8 dereferenceable(8) %503, ptr noundef nonnull align 8 dereferenceable(24) %52, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull %53)
          to label %560 unwind label %566

560:                                              ; preds = %558
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #9
  %brmerge.not = and i1 %559, %3
  br i1 %brmerge.not, label %561, label %570

561:                                              ; preds = %560
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %.thread440 unwind label %568

.thread440:                                       ; preds = %561
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #9
  br label %.thread452

562:                                              ; preds = %553
  %563 = landingpad { ptr, i32 }
          cleanup
  br label %575

564:                                              ; preds = %555
  %565 = landingpad { ptr, i32 }
          cleanup
  br label %574

566:                                              ; preds = %558
  %567 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %54) #9
  br label %574

568:                                              ; preds = %561
  %569 = landingpad { ptr, i32 }
          cleanup
  br label %574

570:                                              ; preds = %560
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #9
  br i1 %559, label %.thread452, label %571

571:                                              ; preds = %570
  %572 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  %573 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br i1 %573, label %501, label %._crit_edge590

574:                                              ; preds = %566, %568, %564
  %.pn361.pn = phi { ptr, i32 } [ %565, %564 ], [ %569, %568 ], [ %567, %566 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #9
  br label %575

575:                                              ; preds = %574, %562
  %.pn361.pn.pn = phi { ptr, i32 } [ %.pn361.pn, %574 ], [ %563, %562 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #9
  br label %576

576:                                              ; preds = %575, %552, %528
  %.pn361.pn.pn.pn = phi { ptr, i32 } [ %.pn361.pn.pn, %575 ], [ %.pn359, %552 ], [ %529, %528 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %596

._crit_edge590:                                   ; preds = %571, %493
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  %577 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %578 unwind label %594

578:                                              ; preds = %._crit_edge590
  br i1 %577, label %579, label %598

579:                                              ; preds = %578
  %580 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %580, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %582 unwind label %594

582:                                              ; preds = %579
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef nonnull @.str.64)
          to label %584 unwind label %594

584:                                              ; preds = %582
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %583, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %586 unwind label %594

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

588:                                              ; preds = %586
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %587, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %590 unwind label %594

590:                                              ; preds = %588
  %591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %592 unwind label %594

592:                                              ; preds = %590
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %598 unwind label %594

594:                                              ; preds = %592, %590, %588, %586, %584, %582, %579, %._crit_edge590
  %595 = landingpad { ptr, i32 }
          cleanup
  br label %596

596:                                              ; preds = %594, %576
  %.pn366 = phi { ptr, i32 } [ %595, %594 ], [ %.pn361.pn.pn.pn, %576 ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %45) #9
  br label %597

597:                                              ; preds = %596, %499
  %.pn366.pn = phi { ptr, i32 } [ %.pn366, %596 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %45) #9
  br label %.loopexit.split-lp458

.thread452:                                       ; preds = %570, %.thread436, %.thread440
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %45) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %45) #9
  br label %.thread421

598:                                              ; preds = %592, %578
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %45) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %45) #9
  br label %.thread449

.thread449:                                       ; preds = %464, %461, %598
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %55) #9
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %599 unwind label %612

599:                                              ; preds = %.thread449
  %600 = getelementptr inbounds i8, ptr %0, i64 8
  %601 = load ptr, ptr %600, align 8, !tbaa !22
  %602 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %601, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %202)
          to label %603 unwind label %614

603:                                              ; preds = %599
  %604 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %204)
  %605 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %202, ptr noundef nonnull align 8 dereferenceable(400) %602, ptr noundef %604, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %606 unwind label %614

606:                                              ; preds = %603
  br i1 %605, label %623, label %607

607:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %608 unwind label %616

608:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  store ptr %79, ptr %58, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull %57)
          to label %609 unwind label %618

609:                                              ; preds = %608
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  %610 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %610, ptr noundef nonnull @.str)
          to label %611 unwind label %621

611:                                              ; preds = %609
  invoke void @__cxa_throw(ptr nonnull %610, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %763 unwind label %614

612:                                              ; preds = %.thread449
  %613 = landingpad { ptr, i32 }
          cleanup
  br label %759

614:                                              ; preds = %611, %603, %599
  %615 = landingpad { ptr, i32 }
          cleanup
  br label %758

616:                                              ; preds = %607
  %617 = landingpad { ptr, i32 }
          cleanup
  br label %620

618:                                              ; preds = %608
  %619 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br label %620

620:                                              ; preds = %618, %616
  %.pn371 = phi { ptr, i32 } [ %619, %618 ], [ %617, %616 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  br label %758

621:                                              ; preds = %609
  %622 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %610) #9
  br label %758

623:                                              ; preds = %606
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #9
  store i8 1, ptr %59, align 1, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 184, ptr nonnull %60) #9
  invoke void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60)
          to label %624 unwind label %638

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %62) #9
  store ptr %0, ptr %62, align 8, !tbaa !43
  %625 = getelementptr inbounds i8, ptr %62, i64 8
  store ptr %1, ptr %625, align 8, !tbaa !5
  %626 = getelementptr inbounds i8, ptr %62, i64 16
  store ptr %79, ptr %626, align 8, !tbaa !5
  %627 = getelementptr inbounds i8, ptr %62, i64 24
  store ptr %55, ptr %627, align 8, !tbaa !5
  %628 = getelementptr inbounds i8, ptr %62, i64 32
  store ptr %60, ptr %628, align 8, !tbaa !5
  %629 = getelementptr inbounds i8, ptr %62, i64 40
  store ptr %78, ptr %629, align 8, !tbaa !5
  %630 = getelementptr inbounds i8, ptr %62, i64 48
  store ptr %2, ptr %630, align 8, !tbaa !5
  %631 = getelementptr inbounds i8, ptr %62, i64 56
  store ptr %59, ptr %631, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(64) %62)
          to label %632 unwind label %640

632:                                              ; preds = %624
  %633 = getelementptr inbounds i8, ptr %55, i64 8
  %634 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(24) %633, ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull %61)
          to label %635 unwind label %642

635:                                              ; preds = %632
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %62) #9
  br i1 %634, label %636, label %650

636:                                              ; preds = %635
  br i1 %3, label %637, label %647

637:                                              ; preds = %636
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %647 unwind label %645

638:                                              ; preds = %623
  %639 = landingpad { ptr, i32 }
          cleanup
  br label %757

640:                                              ; preds = %624
  %641 = landingpad { ptr, i32 }
          cleanup
  br label %644

642:                                              ; preds = %632
  %643 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %644

644:                                              ; preds = %642, %640
  %.pn373 = phi { ptr, i32 } [ %643, %642 ], [ %641, %640 ]
  call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %62) #9
  br label %756

645:                                              ; preds = %.invoke, %732, %730, %728, %726, %724, %721, %718, %698, %694, %692, %690, %688, %686, %684, %682, %679, %676, %672, %654, %650, %637
  %646 = landingpad { ptr, i32 }
          cleanup
  br label %756

647:                                              ; preds = %637, %636
  %648 = load i8, ptr %59, align 1, !tbaa !41, !range !45, !noundef !46
  %649 = trunc nuw i8 %648 to i1
  br label %755

650:                                              ; preds = %635
  %651 = invoke noundef zeroext i1 @_ZNK7ImplRef8is_validEv(ptr noundef nonnull align 8 dereferenceable(184) %60)
          to label %652 unwind label %645

652:                                              ; preds = %650
  br i1 %651, label %653, label %696

653:                                              ; preds = %652
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %63) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %63)
          to label %654 unwind label %663

654:                                              ; preds = %653
  %655 = getelementptr inbounds i8, ptr %78, i64 88
  %656 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %655, ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %63) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #9
  %657 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %658 unwind label %645

658:                                              ; preds = %654
  br i1 %657, label %672, label %659

659:                                              ; preds = %658
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %660 unwind label %665

660:                                              ; preds = %659
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #9
  store ptr %2, ptr %66, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull %65)
          to label %661 unwind label %667

661:                                              ; preds = %660
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  %662 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %662, ptr noundef nonnull @.str)
          to label %.invoke unwind label %670

663:                                              ; preds = %653
  %664 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %63) #9
  br label %756

665:                                              ; preds = %659
  %666 = landingpad { ptr, i32 }
          cleanup
  br label %669

667:                                              ; preds = %660
  %668 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %669

669:                                              ; preds = %667, %665
  %.pn379 = phi { ptr, i32 } [ %668, %667 ], [ %666, %665 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #9
  br label %756

670:                                              ; preds = %661
  %671 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %662) #9
  br label %756

672:                                              ; preds = %658
  %673 = load ptr, ptr %0, align 8, !tbaa !20
  %674 = load ptr, ptr %673, align 8
  %675 = invoke noundef zeroext i1 %674(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %676 unwind label %645

676:                                              ; preds = %672
  %677 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %678 unwind label %645

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

679:                                              ; preds = %678
  %680 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %680, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %682 unwind label %645

682:                                              ; preds = %679
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull @.str.66)
          to label %684 unwind label %645

684:                                              ; preds = %682
  %685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %686 unwind label %645

686:                                              ; preds = %684
  %687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %685, ptr noundef nonnull @.str.20)
          to label %688 unwind label %645

688:                                              ; preds = %686
  %689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %687, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %690 unwind label %645

690:                                              ; preds = %688
  %691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %689, ptr noundef nonnull @.str.67)
          to label %692 unwind label %645

692:                                              ; preds = %690
  %693 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %694 unwind label %645

694:                                              ; preds = %692
  %695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %693, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %755 unwind label %645

696:                                              ; preds = %652
  br i1 %381, label %742, label %697

697:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %67) #9
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %67)
          to label %698 unwind label %709

698:                                              ; preds = %697
  %699 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %700 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %699)
  %701 = getelementptr inbounds i8, ptr %700, i64 88
  %702 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR15TypePathBindingaSEOS0_(ptr noundef nonnull align 8 dereferenceable(16) %701, ptr noundef nonnull align 8 dereferenceable(16) %67)
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %67) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #9
  %703 = invoke noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %704 unwind label %645

704:                                              ; preds = %698
  br i1 %703, label %718, label %705

705:                                              ; preds = %704
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %706 unwind label %711

706:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #9
  store ptr %2, ptr %70, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull %69)
          to label %707 unwind label %713

707:                                              ; preds = %706
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  %708 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %708, ptr noundef nonnull @.str)
          to label %.invoke unwind label %716

709:                                              ; preds = %697
  %710 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %67) #9
  br label %756

711:                                              ; preds = %705
  %712 = landingpad { ptr, i32 }
          cleanup
  br label %715

713:                                              ; preds = %706
  %714 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #9
  br label %715

715:                                              ; preds = %713, %711
  %.pn377 = phi { ptr, i32 } [ %714, %713 ], [ %712, %711 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #9
  br label %756

716:                                              ; preds = %707
  %717 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %708) #9
  br label %756

718:                                              ; preds = %704
  %719 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %720 unwind label %645

720:                                              ; preds = %718
  br i1 %719, label %721, label %734

721:                                              ; preds = %720
  %722 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %723 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %722, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEb)
          to label %724 unwind label %645

724:                                              ; preds = %721
  %725 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %723, ptr noundef nonnull @.str.68)
          to label %726 unwind label %645

726:                                              ; preds = %724
  %727 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %725, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %728 unwind label %645

728:                                              ; preds = %726
  %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.69)
          to label %730 unwind label %645

730:                                              ; preds = %728
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %729, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %732 unwind label %645

732:                                              ; preds = %730
  %733 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %731, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %734 unwind label %645

734:                                              ; preds = %732, %720
  %735 = load ptr, ptr %0, align 8, !tbaa !20
  %736 = load ptr, ptr %735, align 8
  %737 = invoke noundef zeroext i1 %736(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %738 unwind label %740

738:                                              ; preds = %734
  br i1 %3, label %739, label %755

739:                                              ; preds = %738
  invoke void @_ZNK18StaticTraitResolve29expand_associated_types_innerERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %755 unwind label %740

740:                                              ; preds = %739, %734
  %741 = landingpad { ptr, i32 }
          cleanup
  br label %756

742:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %743 unwind label %748

743:                                              ; preds = %742
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #9
  store ptr %55, ptr %73, align 8, !tbaa !5
  %744 = getelementptr inbounds i8, ptr %73, i64 8
  store ptr %79, ptr %744, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(16) %73) #9
  invoke void @_ZNK4Span5errorE9ErrorTypeSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %71, i32 noundef 0, ptr noundef nonnull %72)
          to label %745 unwind label %750

745:                                              ; preds = %743
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  %746 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %746, ptr noundef nonnull @.str.58)
          to label %.invoke unwind label %753

.invoke:                                          ; preds = %745, %707, %661
  %747 = phi ptr [ %662, %661 ], [ %708, %707 ], [ %746, %745 ]
  invoke void @__cxa_throw(ptr nonnull %747, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %.cont unwind label %645

.cont:                                            ; preds = %.invoke
  unreachable

748:                                              ; preds = %742
  %749 = landingpad { ptr, i32 }
          cleanup
  br label %752

750:                                              ; preds = %743
  %751 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %752

752:                                              ; preds = %750, %748
  %.pn375 = phi { ptr, i32 } [ %751, %750 ], [ %749, %748 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  br label %756

753:                                              ; preds = %745
  %754 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %746) #9
  br label %756

755:                                              ; preds = %738, %739, %678, %694, %647
  %.28 = phi i1 [ %649, %647 ], [ false, %694 ], [ false, %678 ], [ %737, %739 ], [ %737, %738 ]
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #9
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  br label %.thread421

756:                                              ; preds = %753, %752, %740, %716, %715, %709, %670, %669, %663, %645, %644
  %.pn381 = phi { ptr, i32 } [ %646, %645 ], [ %671, %670 ], [ %.pn379, %669 ], [ %664, %663 ], [ %741, %740 ], [ %717, %716 ], [ %.pn377, %715 ], [ %710, %709 ], [ %754, %753 ], [ %.pn375, %752 ], [ %.pn373, %644 ]
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %60) #9
  br label %757

757:                                              ; preds = %756, %638
  %.pn381.pn = phi { ptr, i32 } [ %.pn381, %756 ], [ %639, %638 ]
  call void @llvm.lifetime.end.p0(i64 184, ptr nonnull %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  br label %758

758:                                              ; preds = %757, %621, %620, %614
  %.pn381.pn.pn = phi { ptr, i32 } [ %.pn381.pn, %757 ], [ %615, %614 ], [ %622, %621 ], [ %.pn371, %620 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #9
  br label %759

759:                                              ; preds = %758, %612
  %.pn381.pn.pn.pn = phi { ptr, i32 } [ %.pn381.pn.pn, %758 ], [ %613, %612 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %55) #9
  br label %.loopexit.split-lp458

.thread421:                                       ; preds = %307, %315, %._crit_edge579, %._crit_edge582, %.thread452, %288, %280, %755, %460, %.thread
  %.30 = phi i1 [ %.28, %755 ], [ true, %460 ], [ true, %.thread ], [ false, %280 ], [ false, %288 ], [ true, %.thread452 ], [ false, %307 ], [ false, %315 ], [ true, %._crit_edge579 ], [ true, %._crit_edge582 ]
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  br label %760

.loopexit.split-lp458:                            ; preds = %.loopexit457.split, %.loopexit.split-lp458.loopexit.split-lp, %.loopexit.split-lp458.loopexit, %383, %457, %759, %489, %597, %487, %305, %341, %340, %329, %377, %.split.split, %244, %248, %274, %242, %241
  %.pn388.pn = phi { ptr, i32 } [ %275, %274 ], [ %243, %242 ], [ %.pn.pn.pn.pn.pn.pn, %241 ], [ %249, %248 ], [ %245, %244 ], [ %306, %305 ], [ %330, %329 ], [ %342, %341 ], [ %.pn347, %340 ], [ %.pn343.pn, %377 ], [ %359, %.split.split ], [ %384, %383 ], [ %.pn381.pn.pn.pn, %759 ], [ %.pn352.pn.pn.pn, %457 ], [ %488, %487 ], [ %.pn366.pn, %597 ], [ %490, %489 ], [ %lpad.loopexit459, %.loopexit457.split ], [ %lpad.loopexit465, %.loopexit.split-lp458.loopexit ], [ %lpad.loopexit.split-lp466, %.loopexit.split-lp458.loopexit.split-lp ]
  call void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %21) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %21) #9
  br label %761

760:                                              ; preds = %193, %.thread421
  %.31 = phi i1 [ %.30, %.thread421 ], [ false, %193 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #9
  ret i1 %.31

761:                                              ; preds = %133, %146, %200, %.loopexit.split-lp458
  %.pn395.pn.pn = phi { ptr, i32 } [ %.pn388.pn, %.loopexit.split-lp458 ], [ %.pn395, %133 ], [ %.pn391, %200 ], [ %147, %146 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #9
  br label %762

762:                                              ; preds = %761, %90
  %.pn395.pn.pn.pn = phi { ptr, i32 } [ %.pn395.pn.pn, %761 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #9
  resume { ptr, i32 } %.pn395.pn.pn.pn

763:                                              ; preds = %611, %358, %335, %122
  unreachable
}

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_1vEEOT_"(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 @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden noundef nonnull align 8 dereferenceable(12) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySt6vectorIS8_SaIS8_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZSt4sortIN9__gnu_cxx17__normal_iteratorIPPKN3HIR7TypeRefESt6vectorIS5_SaIS5_EEEEZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRS3_bE4$_11EvT_SH_T0_"(ptr, ptr) local_unnamed_addr #7

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

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

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

; 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 nounwind uwtable
declare dso_local void @_ZNSt6vectorIPKN3HIR7TypeRefESaIS3_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #5 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZNSt6vectorIZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntrySaIS7_EE9push_backEOS7_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(12)) local_unnamed_addr #4 align 2

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

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

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

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

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 #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 uwtable
declare dso_local noundef zeroext i1 @_ZNK8RcStringeqEPKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_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 @_ZNK3HIR10PathParamseqERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #4 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 #4 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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_4vEEOT_"(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 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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFbRKN3HIR10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS5_ESaISt4pairIKS5_S7_EEEEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRNS0_7TypeRefEbE3$_5vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_6vEEOT_"(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 void @_ZN7ImplRefC2Ev(ptr noundef nonnull align 8 dereferenceable(184)) unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress uwtable
declare hidden noundef zeroext i1 @_ZN12_GLOBAL__N_116valid_for_opaqueERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_8vEEOT_"(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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_9vEEOT_"(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 @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE4$_10vEEOT_"(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 hidden void @_ZZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbEN10StackGuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) 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

attributes #0 = { nofree nounwind }
attributes #1 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #2 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress 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 = { 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 = { 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 #8 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nounwind }
attributes #10 = { noreturn }
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 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !11, i64 8}
!13 = !{!"_ZTSZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE12RecurseEntry", !14, i64 0, !11, i64 8}
!14 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!15 = distinct !{!15, !16}
!16 = !{!"llvm.loop.mustprogress"}
!17 = distinct !{!17, !16}
!18 = !{!19, !6, i64 0}
!19 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!20 = !{!21, !21, i64 0}
!21 = !{!"vtable pointer", !8, i64 0}
!22 = !{!23, !6, i64 0}
!23 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !24, i64 24, !33, i64 72, !39, i64 104, !39, i64 112, !39, i64 120, !39, i64 128, !39, i64 136, !39, i64 144, !39, i64 152, !39, i64 160, !39, i64 168, !39, i64 176, !39, i64 184, !39, i64 192, !39, i64 200, !39, i64 208}
!24 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !25, i64 0}
!25 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !26, i64 0}
!26 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !27, i64 0, !29, i64 8}
!27 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !28, i64 0}
!28 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!29 = !{!"_ZTSSt15_Rb_tree_header", !30, i64 0, !32, i64 32}
!30 = !{!"_ZTSSt18_Rb_tree_node_base", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!31 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!32 = !{!"long", !7, i64 0}
!33 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !34, i64 0, !38, i64 24}
!34 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!39 = !{!"_ZTSN3HIR10SimplePathE", !40, i64 0}
!40 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!41 = !{!42, !42, i64 0}
!42 = !{!"bool", !7, i64 0}
!43 = !{!44, !6, i64 0}
!44 = !{!"_ZTSZNK18StaticTraitResolve34expand_associated_types__UfcsKnownERK4SpanRN3HIR7TypeRefEbE3$_7", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56}
!45 = !{i8 0, i8 2}
!46 = !{}


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