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

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

%"class.HIR::TypeRef" = type { ptr }
%struct.LList = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.512 = type { ptr, ptr }
%struct.D = type { ptr }
%class.anon.513 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.162" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.164" = type { ptr }
%class.anon.515 = type { i8 }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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.RangeVecMap = type <{ %"class.std::vector.211", [8 x i8] }>
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.29" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"struct.HIR::Path::Data::Data_UfcsInherent" = type { %"class.HIR::TypeRef", %class.RcString, %"struct.HIR::PathParams", %"struct.HIR::PathParams" }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.45", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"class.std::map" = 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" }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.16", [8 x i8] }
%"class.std::unique_ptr.16" = type { %"struct.std::__uniq_ptr_data.17" }
%"struct.std::__uniq_ptr_data.17" = type { %"class.std::__uniq_ptr_impl.18" }
%"class.std::__uniq_ptr_impl.18" = type { %"class.std::tuple.19" }
%"class.std::tuple.19" = type { %"struct.std::_Tuple_impl.20" }
%"struct.std::_Tuple_impl.20" = type { %"struct.std::_Head_base.23" }
%"struct.std::_Head_base.23" = type { ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_NamedFunction" = type { %"class.HIR::Path", %"class.HIR::TypeData_NamedFunction_Ty" }
%"class.HIR::TypeData_NamedFunction_Ty" = type { i32, %"union.HIR::TypeData_NamedFunction_Ty::DataUnion" }
%"union.HIR::TypeData_NamedFunction_Ty::DataUnion" = type { %"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" }
%"struct.HIR::TypeData_NamedFunction_Ty::Data_EnumConstructor" = type { ptr, i64 }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.60" }
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@g_debug_indent_level = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [32 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [123 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [30 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr %3, ptr %4) #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %struct.LList, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %13 = alloca i32, align 4
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %"class.HIR::TypeRef", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca %struct.LList, align 8
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca i8, align 1
  %27 = alloca ptr, align 8
  %28 = alloca i8, align 1
  %29 = alloca ptr, align 8
  %30 = alloca i8, align 1
  %31 = alloca ptr, align 8
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca %struct.LList, align 8
  %35 = alloca i8, align 1
  %36 = alloca ptr, align 8
  %37 = alloca %struct.LList, align 8
  %38 = alloca %struct.LList, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %struct.Span, align 8
  %41 = alloca %"class.std::function", align 8
  %42 = alloca %class.anon.512, align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca %struct.D, align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %struct.LList, align 8
  %49 = alloca %struct.LList, align 8
  %50 = alloca %struct.LList, align 8
  %51 = alloca %struct.LList, align 8
  %52 = alloca %struct.LList, align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca %struct.Span, align 8
  %56 = alloca %"class.std::function", align 8
  %57 = alloca %class.anon.513, align 1
  %58 = alloca i8, align 1
  %59 = alloca ptr, align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca %struct.LList, align 8
  %63 = alloca ptr, align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.162", align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.162", align 8
  %66 = alloca ptr, align 8
  %67 = alloca %struct.LList, align 8
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca %struct.LList, align 8
  %73 = alloca i8, align 1
  %74 = alloca ptr, align 8
  %75 = alloca %struct.LList, align 8
  %76 = alloca i8, align 1
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %80 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %81 = alloca ptr, align 8
  %82 = alloca %struct.LList, align 8
  %83 = alloca i8, align 1
  %84 = alloca ptr, align 8
  %85 = alloca %struct.LList, align 8
  %86 = alloca i8, align 1
  %87 = alloca ptr, align 8
  %88 = alloca %struct.LList, align 8
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca i8, align 1
  %92 = alloca ptr, align 8
  %93 = alloca i8, align 1
  %94 = alloca ptr, align 8
  %95 = alloca %struct.LList, align 8
  %96 = alloca i8, align 1
  %97 = alloca ptr, align 8
  %98 = alloca %struct.LList, align 8
  %99 = alloca %struct.LList, align 8
  %100 = alloca i8, align 1
  %101 = alloca ptr, align 8
  %102 = alloca %struct.LList, align 8
  %103 = alloca %struct.LList, align 8
  %104 = alloca %struct.LList, align 8
  %105 = alloca i8, align 1
  %106 = alloca ptr, align 8
  %107 = alloca %struct.Span, align 8
  %108 = alloca %"class.std::function", align 8
  %109 = alloca %class.anon.515, align 1
  %110 = alloca i8, align 1
  %111 = alloca ptr, align 8
  %112 = alloca ptr, align 8
  %113 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %114 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %115 = alloca ptr, align 8
  %116 = alloca %struct.LList, align 8
  %117 = alloca %struct.LList, align 8
  %118 = alloca i8, align 1
  %119 = alloca ptr, align 8
  %120 = alloca i8, align 1
  %121 = alloca ptr, align 8
  %122 = getelementptr inbounds { ptr, ptr }, ptr %6, i32 0, i32 0
  store ptr %3, ptr %122, align 8
  %123 = getelementptr inbounds { ptr, ptr }, ptr %6, i32 0, i32 1
  store ptr %4, ptr %123, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  %124 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #9
  %125 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 6
  store ptr %125, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %11) #9
  %126 = load ptr, ptr %10, align 8, !tbaa !5
  %127 = call ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %126) #9
  %128 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %11, i32 0, i32 0
  store ptr %127, ptr %128, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #9
  %129 = load ptr, ptr %10, align 8, !tbaa !5
  %130 = call ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %129) #9
  %131 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %12, i32 0, i32 0
  store ptr %130, ptr %131, align 8
  br label %132

132:                                              ; preds = %159, %5
  %133 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  br i1 %133, label %135, label %134

134:                                              ; preds = %132
  store i32 2, ptr %13, align 4
  br label %161

135:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #9
  %136 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  store ptr %136, ptr %14, align 8, !tbaa !5
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = load ptr, ptr %14, align 8, !tbaa !5
  %139 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %138) #9
  %140 = call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %139)
  br i1 %140, label %141, label %155

141:                                              ; preds = %135
  br label %142

142:                                              ; preds = %141
  %143 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %143, label %144, label %152

144:                                              ; preds = %142
  %145 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %145, ptr noundef @__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
  %147 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %146, ptr noundef @.str.91)
  %148 = load ptr, ptr %9, align 8, !tbaa !5
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %147, ptr noundef %148)
  %150 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef @_ZSt3decRSt8ios_base)
  %151 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %152

152:                                              ; preds = %144, %142
  br label %153

153:                                              ; preds = %152
  br label %154

154:                                              ; preds = %153
  store i32 1, ptr %13, align 4
  br label %156

155:                                              ; preds = %135
  store i32 0, ptr %13, align 4
  br label %156

156:                                              ; preds = %155, %154
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #9
  %157 = load i32, ptr %13, align 4
  switch i32 %157, label %161 [
    i32 0, label %158
  ]

158:                                              ; preds = %156
  br label %159

159:                                              ; preds = %158
  %160 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %11) #9
  br label %132

161:                                              ; preds = %156, %134
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %11) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #9
  %162 = load i32, ptr %13, align 4
  switch i32 %162, label %1022 [
    i32 2, label %163
    i32 1, label %1016
  ]

163:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #9
  store i8 1, ptr %15, align 1, !tbaa !11
  br label %164

164:                                              ; preds = %1013, %163
  %165 = load i8, ptr %15, align 1, !tbaa !11, !range !13, !noundef !14
  %166 = trunc i8 %165 to i1
  br i1 %166, label %168, label %167

167:                                              ; preds = %164
  store i32 6, ptr %13, align 4
  br label %1014

168:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #9
  %169 = load ptr, ptr %9, align 8, !tbaa !5
  %170 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %169)
  store ptr %170, ptr %16, align 8, !tbaa !5
  br label %171

171:                                              ; preds = %1008, %168
  %172 = load i8, ptr %15, align 1, !tbaa !11, !range !13, !noundef !14
  %173 = trunc i8 %172 to i1
  br i1 %173, label %175, label %174

174:                                              ; preds = %171
  store i32 9, ptr %13, align 4
  br label %1009

175:                                              ; preds = %171
  %176 = load ptr, ptr %16, align 8, !tbaa !5
  %177 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %176)
  switch i32 %177, label %1007 [
    i32 0, label %178
    i32 1, label %179
    i32 2, label %220
    i32 3, label %238
    i32 4, label %256
    i32 5, label %524
    i32 6, label %542
    i32 7, label %590
    i32 8, label %608
    i32 9, label %640
    i32 10, label %665
    i32 11, label %704
    i32 12, label %729
    i32 13, label %754
    i32 14, label %924
    i32 15, label %971
    i32 16, label %989
  ]

178:                                              ; preds = %175
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 2160, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

179:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #9
  store i8 1, ptr %17, align 1, !tbaa !11
  br label %180

180:                                              ; preds = %218, %179
  %181 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %182 = trunc i8 %181 to i1
  br i1 %182, label %184, label %183

183:                                              ; preds = %180
  store i32 13, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  br label %219

184:                                              ; preds = %180
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #9
  %185 = load ptr, ptr %16, align 8, !tbaa !5
  %186 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %185)
  store ptr %186, ptr %18, align 8, !tbaa !5
  br label %187

187:                                              ; preds = %216, %184
  %188 = load ptr, ptr %18, align 8, !tbaa !5
  %189 = load i8, ptr %17, align 1, !tbaa !11, !range !13, !noundef !14
  %190 = trunc i8 %189 to i1
  br i1 %190, label %192, label %191

191:                                              ; preds = %187
  store i32 16, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  br label %217

192:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #9
  %193 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 2
  %194 = load ptr, ptr %193, align 8, !tbaa !15
  %195 = load ptr, ptr %9, align 8, !tbaa !5
  %196 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %194, ptr noundef nonnull align 8 dereferenceable(8) %195)
  store ptr %196, ptr %19, align 8, !tbaa !5
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = call noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull align 8 dereferenceable(8) %198)
  br i1 %199, label %200, label %215

200:                                              ; preds = %192
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %201 = load ptr, ptr %19, align 8, !tbaa !5
  call void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %201)
  %202 = load ptr, ptr %9, align 8, !tbaa !5
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %204 unwind label %211

204:                                              ; preds = %200
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  %205 = load ptr, ptr %8, align 8, !tbaa !5
  %206 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %23, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %207 = getelementptr inbounds { ptr, ptr }, ptr %23, i32 0, i32 0
  %208 = load ptr, ptr %207, align 8
  %209 = getelementptr inbounds { ptr, ptr }, ptr %23, i32 0, i32 1
  %210 = load ptr, ptr %209, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull align 8 dereferenceable(8) %206, ptr %208, ptr %210)
  br label %215

211:                                              ; preds = %200
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %21, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %22, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #9
  br label %1011

215:                                              ; preds = %204, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #9
  br label %216

216:                                              ; preds = %215
  store i8 0, ptr %17, align 1, !tbaa !11
  br label %187, !llvm.loop !40

217:                                              ; preds = %191
  br label %218

218:                                              ; preds = %217
  store i8 0, ptr %17, align 1, !tbaa !11
  br label %180, !llvm.loop !42

219:                                              ; preds = %183
  br label %1007

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

221:                                              ; preds = %236, %220
  %222 = load i8, ptr %24, align 1, !tbaa !11, !range !13, !noundef !14
  %223 = trunc i8 %222 to i1
  br i1 %223, label %225, label %224

224:                                              ; preds = %221
  store i32 19, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #9
  br label %237

225:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #9
  %226 = load ptr, ptr %16, align 8, !tbaa !5
  %227 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %226)
  store ptr %227, ptr %25, align 8, !tbaa !5
  br label %228

228:                                              ; preds = %234, %225
  %229 = load ptr, ptr %25, align 8, !tbaa !5
  %230 = load i8, ptr %24, align 1, !tbaa !11, !range !13, !noundef !14
  %231 = trunc i8 %230 to i1
  br i1 %231, label %233, label %232

232:                                              ; preds = %228
  store i32 22, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #9
  br label %235

233:                                              ; preds = %228
  br label %234

234:                                              ; preds = %233
  store i8 0, ptr %24, align 1, !tbaa !11
  br label %228, !llvm.loop !43

235:                                              ; preds = %232
  br label %236

236:                                              ; preds = %235
  store i8 0, ptr %24, align 1, !tbaa !11
  br label %221, !llvm.loop !44

237:                                              ; preds = %224
  br label %1007

238:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #9
  store i8 1, ptr %26, align 1, !tbaa !11
  br label %239

239:                                              ; preds = %254, %238
  %240 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %241 = trunc i8 %240 to i1
  br i1 %241, label %243, label %242

242:                                              ; preds = %239
  store i32 25, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #9
  br label %255

243:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #9
  %244 = load ptr, ptr %16, align 8, !tbaa !5
  %245 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %244)
  store ptr %245, ptr %27, align 8, !tbaa !5
  br label %246

246:                                              ; preds = %252, %243
  %247 = load ptr, ptr %27, align 8, !tbaa !5
  %248 = load i8, ptr %26, align 1, !tbaa !11, !range !13, !noundef !14
  %249 = trunc i8 %248 to i1
  br i1 %249, label %251, label %250

250:                                              ; preds = %246
  store i32 28, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #9
  br label %253

251:                                              ; preds = %246
  br label %252

252:                                              ; preds = %251
  store i8 0, ptr %26, align 1, !tbaa !11
  br label %246, !llvm.loop !45

253:                                              ; preds = %250
  br label %254

254:                                              ; preds = %253
  store i8 0, ptr %26, align 1, !tbaa !11
  br label %239, !llvm.loop !46

255:                                              ; preds = %242
  br label %1007

256:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #9
  store i8 1, ptr %28, align 1, !tbaa !11
  br label %257

257:                                              ; preds = %520, %256
  %258 = load i8, ptr %28, align 1, !tbaa !11, !range !13, !noundef !14
  %259 = trunc i8 %258 to i1
  br i1 %259, label %261, label %260

260:                                              ; preds = %257
  store i32 31, ptr %13, align 4
  br label %521

261:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #9
  %262 = load ptr, ptr %16, align 8, !tbaa !5
  %263 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %262)
  store ptr %263, ptr %29, align 8, !tbaa !5
  br label %264

264:                                              ; preds = %516, %261
  %265 = load ptr, ptr %29, align 8, !tbaa !5
  %266 = load i8, ptr %28, align 1, !tbaa !11, !range !13, !noundef !14
  %267 = trunc i8 %266 to i1
  br i1 %267, label %269, label %268

268:                                              ; preds = %264
  store i32 34, ptr %13, align 4
  br label %517

269:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #9
  store i8 1, ptr %30, align 1, !tbaa !11
  br label %270

270:                                              ; preds = %512, %269
  %271 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %272 = trunc i8 %271 to i1
  br i1 %272, label %274, label %273

273:                                              ; preds = %270
  store i32 37, ptr %13, align 4
  br label %513

274:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #9
  %275 = load ptr, ptr %29, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds %"class.HIR::Path", ptr %276, i32 0, i32 0
  store ptr %277, ptr %31, align 8, !tbaa !5
  br label %278

278:                                              ; preds = %507, %274
  %279 = load i8, ptr %30, align 1, !tbaa !11, !range !13, !noundef !14
  %280 = trunc i8 %279 to i1
  br i1 %280, label %282, label %281

281:                                              ; preds = %278
  store i32 40, ptr %13, align 4
  br label %508

282:                                              ; preds = %278
  %283 = load ptr, ptr %31, align 8, !tbaa !5
  %284 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %283)
  switch i32 %284, label %506 [
    i32 0, label %285
    i32 1, label %286
    i32 2, label %325
    i32 3, label %393
    i32 4, label %472
  ]

285:                                              ; preds = %282
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 2173, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

286:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #9
  store i8 1, ptr %32, align 1, !tbaa !11
  br label %287

287:                                              ; preds = %323, %286
  %288 = load i8, ptr %32, align 1, !tbaa !11, !range !13, !noundef !14
  %289 = trunc i8 %288 to i1
  br i1 %289, label %291, label %290

290:                                              ; preds = %287
  store i32 44, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #9
  br label %324

291:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #9
  %292 = load ptr, ptr %31, align 8, !tbaa !5
  %293 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %292)
  store ptr %293, ptr %33, align 8, !tbaa !5
  br label %294

294:                                              ; preds = %321, %291
  %295 = load ptr, ptr %33, align 8, !tbaa !5
  %296 = load i8, ptr %32, align 1, !tbaa !11, !range !13, !noundef !14
  %297 = trunc i8 %296 to i1
  br i1 %297, label %299, label %298

298:                                              ; preds = %294
  store i32 47, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #9
  br label %322

299:                                              ; preds = %294
  %300 = load ptr, ptr %8, align 8, !tbaa !5
  %301 = getelementptr inbounds %struct.TraitResolveCommon, ptr %124, i32 0, i32 0
  %302 = load ptr, ptr %301, align 8, !tbaa !47
  %303 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 3
  %304 = load ptr, ptr %303, align 8, !tbaa !48
  %305 = getelementptr inbounds %struct.TraitResolveCommon, ptr %124, i32 0, i32 1
  %306 = load ptr, ptr %305, align 8, !tbaa !49
  %307 = getelementptr inbounds %struct.TraitResolveCommon, ptr %124, i32 0, i32 2
  %308 = load ptr, ptr %307, align 8, !tbaa !50
  %309 = load ptr, ptr %29, align 8, !tbaa !5
  %310 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %309, i32 0, i32 1
  %311 = call noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16) %310)
  %312 = load ptr, ptr %33, align 8, !tbaa !5
  %313 = getelementptr inbounds %"class.HIR::GenericPath", ptr %312, i32 0, i32 1
  call void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %300, ptr noundef nonnull align 8 dereferenceable(944) %302, ptr noundef nonnull align 8 dereferenceable(8) %304, ptr noundef %306, ptr noundef %308, ptr noundef nonnull align 8 dereferenceable(96) %311, ptr noundef nonnull align 8 dereferenceable(24) %313)
  %314 = load ptr, ptr %8, align 8, !tbaa !5
  %315 = load ptr, ptr %33, align 8, !tbaa !5
  %316 = getelementptr inbounds %"class.HIR::GenericPath", ptr %315, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %34, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %317 = getelementptr inbounds { ptr, ptr }, ptr %34, i32 0, i32 0
  %318 = load ptr, ptr %317, align 8
  %319 = getelementptr inbounds { ptr, ptr }, ptr %34, i32 0, i32 1
  %320 = load ptr, ptr %319, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %316, ptr %318, ptr %320)
  br label %321

321:                                              ; preds = %299
  store i8 0, ptr %32, align 1, !tbaa !11
  br label %294, !llvm.loop !51

322:                                              ; preds = %298
  br label %323

323:                                              ; preds = %322
  store i8 0, ptr %32, align 1, !tbaa !11
  br label %287, !llvm.loop !52

324:                                              ; preds = %290
  br label %506

325:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #9
  store i8 1, ptr %35, align 1, !tbaa !11
  br label %326

326:                                              ; preds = %389, %325
  %327 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %328 = trunc i8 %327 to i1
  br i1 %328, label %330, label %329

329:                                              ; preds = %326
  store i32 50, ptr %13, align 4
  br label %390

330:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %331 = load ptr, ptr %31, align 8, !tbaa !5
  %332 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %331)
  store ptr %332, ptr %36, align 8, !tbaa !5
  br label %333

333:                                              ; preds = %385, %330
  %334 = load ptr, ptr %36, align 8, !tbaa !5
  %335 = load i8, ptr %35, align 1, !tbaa !11, !range !13, !noundef !14
  %336 = trunc i8 %335 to i1
  br i1 %336, label %338, label %337

337:                                              ; preds = %333
  store i32 53, ptr %13, align 4
  br label %386

338:                                              ; preds = %333
  %339 = load ptr, ptr %8, align 8, !tbaa !5
  %340 = load ptr, ptr %36, align 8, !tbaa !5
  %341 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %340, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %37, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %342 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 0
  %343 = load ptr, ptr %342, align 8
  %344 = getelementptr inbounds { ptr, ptr }, ptr %37, i32 0, i32 1
  %345 = load ptr, ptr %344, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull align 8 dereferenceable(8) %341, ptr %343, ptr %345)
  %346 = load ptr, ptr %8, align 8, !tbaa !5
  %347 = load ptr, ptr %36, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %347, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %38, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %349 = getelementptr inbounds { ptr, ptr }, ptr %38, i32 0, i32 0
  %350 = load ptr, ptr %349, align 8
  %351 = getelementptr inbounds { ptr, ptr }, ptr %38, i32 0, i32 1
  %352 = load ptr, ptr %351, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %346, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %348, ptr %350, ptr %352)
  %353 = load ptr, ptr %36, align 8, !tbaa !5
  %354 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %353, i32 0, i32 0
  %355 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %354)
  %356 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %355)
  br i1 %356, label %357, label %365

357:                                              ; preds = %338
  %358 = load ptr, ptr %36, align 8, !tbaa !5
  %359 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %358, i32 0, i32 0
  %360 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
  %361 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %360)
  %362 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %361, i32 0, i32 1
  %363 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %362)
  br i1 %363, label %364, label %365

364:                                              ; preds = %357
  store i32 1, ptr %13, align 4
  br label %386

365:                                              ; preds = %357, %338
  br label %366

366:                                              ; preds = %365
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  store ptr @__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #9
  %367 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %367)
  call void @llvm.lifetime.start.p0(i64 16, ptr %42) #9
  %368 = getelementptr inbounds %class.anon.512, ptr %42, i32 0, i32 0
  store ptr %39, ptr %368, align 8, !tbaa !5
  %369 = getelementptr inbounds %class.anon.512, ptr %42, i32 0, i32 1
  %370 = load ptr, ptr %29, align 8, !tbaa !5
  store ptr %370, ptr %369, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %41, ptr noundef nonnull align 8 dereferenceable(16) %42) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef %41)
          to label %371 unwind label %374

371:                                              ; preds = %366
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  %372 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %372, ptr noundef @.str.70)
          to label %373 unwind label %378

373:                                              ; preds = %371
  call void @__cxa_throw(ptr %372, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
  unreachable

374:                                              ; preds = %366
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %21, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %22, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %41) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %42) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #9
  br label %382

378:                                              ; preds = %371
  %379 = landingpad { ptr, i32 }
          cleanup
  %380 = extractvalue { ptr, i32 } %379, 0
  store ptr %380, ptr %21, align 8
  %381 = extractvalue { ptr, i32 } %379, 1
  store i32 %381, ptr %22, align 4
  call void @__cxa_free_exception(ptr %372) #9
  br label %382

382:                                              ; preds = %378, %374
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  br label %510

383:                                              ; No predecessors!
  br label %384

384:                                              ; preds = %383
  br label %385

385:                                              ; preds = %384
  store i8 0, ptr %35, align 1, !tbaa !11
  br label %333, !llvm.loop !53

386:                                              ; preds = %364, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  %387 = load i32, ptr %13, align 4
  switch i32 %387, label %390 [
    i32 53, label %388
  ]

388:                                              ; preds = %386
  br label %389

389:                                              ; preds = %388
  store i8 0, ptr %35, align 1, !tbaa !11
  br label %326, !llvm.loop !54

390:                                              ; preds = %386, %329
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #9
  %391 = load i32, ptr %13, align 4
  switch i32 %391, label %508 [
    i32 50, label %392
  ]

392:                                              ; preds = %390
  br label %506

393:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #9
  store i8 1, ptr %43, align 1, !tbaa !11
  br label %394

394:                                              ; preds = %470, %393
  %395 = load i8, ptr %43, align 1, !tbaa !11, !range !13, !noundef !14
  %396 = trunc i8 %395 to i1
  br i1 %396, label %398, label %397

397:                                              ; preds = %394
  store i32 58, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #9
  br label %471

398:                                              ; preds = %394
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #9
  %399 = load ptr, ptr %31, align 8, !tbaa !5
  %400 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %399)
  store ptr %400, ptr %44, align 8, !tbaa !5
  br label %401

401:                                              ; preds = %467, %398
  %402 = load ptr, ptr %44, align 8, !tbaa !5
  %403 = load i8, ptr %43, align 1, !tbaa !11, !range !13, !noundef !14
  %404 = trunc i8 %403 to i1
  br i1 %404, label %406, label %405

405:                                              ; preds = %401
  store i32 61, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  br label %469

406:                                              ; preds = %401
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %407 = load ptr, ptr %9, align 8, !tbaa !5
  call void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(8) %407)
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DC2ERKS_S4_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef %46)
          to label %408 unwind label %414

408:                                              ; preds = %406
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  %409 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 6
  %410 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %409) #9
  %411 = icmp ugt i64 %410, 0
  br i1 %411, label %412, label %413

412:                                              ; preds = %408
  br label %419

413:                                              ; preds = %408
  call void @__assert_fail(ptr noundef @.str.92, ptr noundef @.str.7, i32 noundef 2202, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

414:                                              ; preds = %406
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %21, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %22, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %468

418:                                              ; No predecessors!
  br label %419

419:                                              ; preds = %418, %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #9
  store ptr %6, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #9
  %420 = load ptr, ptr %47, align 8, !tbaa !5
  %421 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 6
  %422 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %421) #9
  %423 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %422) #9
  invoke void @_ZN5LListIPKN3HIR7TypeRefEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %48, ptr noundef %420, ptr noundef %423)
          to label %424 unwind label %462

424:                                              ; preds = %419
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = load ptr, ptr %44, align 8, !tbaa !5
  %427 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %426, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %49, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !39
  %428 = getelementptr inbounds { ptr, ptr }, ptr %49, i32 0, i32 0
  %429 = load ptr, ptr %428, align 8
  %430 = getelementptr inbounds { ptr, ptr }, ptr %49, i32 0, i32 1
  %431 = load ptr, ptr %430, align 8
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %425, ptr noundef nonnull align 8 dereferenceable(8) %427, ptr %429, ptr %431)
          to label %432 unwind label %462

432:                                              ; preds = %424
  %433 = load ptr, ptr %8, align 8, !tbaa !5
  %434 = load ptr, ptr %44, align 8, !tbaa !5
  %435 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %434, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %50, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !39
  %436 = getelementptr inbounds { ptr, ptr }, ptr %50, i32 0, i32 0
  %437 = load ptr, ptr %436, align 8
  %438 = getelementptr inbounds { ptr, ptr }, ptr %50, i32 0, i32 1
  %439 = load ptr, ptr %438, align 8
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %433, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %435, ptr %437, ptr %439)
          to label %440 unwind label %462

440:                                              ; preds = %432
  %441 = load ptr, ptr %8, align 8, !tbaa !5
  %442 = load ptr, ptr %44, align 8, !tbaa !5
  %443 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %442, i32 0, i32 1
  %444 = getelementptr inbounds %"class.HIR::GenericPath", ptr %443, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %51, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !39
  %445 = getelementptr inbounds { ptr, ptr }, ptr %51, i32 0, i32 0
  %446 = load ptr, ptr %445, align 8
  %447 = getelementptr inbounds { ptr, ptr }, ptr %51, i32 0, i32 1
  %448 = load ptr, ptr %447, align 8
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %444, ptr %446, ptr %448)
          to label %449 unwind label %462

449:                                              ; preds = %440
  %450 = load ptr, ptr %29, align 8, !tbaa !5
  %451 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %450, i32 0, i32 1
  %452 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %451)
          to label %453 unwind label %462

453:                                              ; preds = %449
  br i1 %452, label %454, label %466

454:                                              ; preds = %453
  %455 = load ptr, ptr %8, align 8, !tbaa !5
  %456 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %52, ptr align 8 %48, i64 16, i1 false), !tbaa.struct !39
  %457 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 0
  %458 = load ptr, ptr %457, align 8
  %459 = getelementptr inbounds { ptr, ptr }, ptr %52, i32 0, i32 1
  %460 = load ptr, ptr %459, align 8
  invoke void @_ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef nonnull align 8 dereferenceable(8) %456, ptr %458, ptr %460)
          to label %461 unwind label %462

461:                                              ; preds = %454
  br label %466

462:                                              ; preds = %454, %449, %440, %432, %424, %419
  %463 = landingpad { ptr, i32 }
          cleanup
  %464 = extractvalue { ptr, i32 } %463, 0
  store ptr %464, ptr %21, align 8
  %465 = extractvalue { ptr, i32 } %463, 1
  store i32 %465, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %468

466:                                              ; preds = %461, %453
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #9
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %467

467:                                              ; preds = %466
  store i8 0, ptr %43, align 1, !tbaa !11
  br label %401, !llvm.loop !55

468:                                              ; preds = %462, %414
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #9
  br label %510

469:                                              ; preds = %405
  br label %470

470:                                              ; preds = %469
  store i8 0, ptr %43, align 1, !tbaa !11
  br label %394, !llvm.loop !56

471:                                              ; preds = %397
  br label %506

472:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #9
  store i8 1, ptr %53, align 1, !tbaa !11
  br label %473

473:                                              ; preds = %504, %472
  %474 = load i8, ptr %53, align 1, !tbaa !11, !range !13, !noundef !14
  %475 = trunc i8 %474 to i1
  br i1 %475, label %477, label %476

476:                                              ; preds = %473
  store i32 64, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  br label %505

477:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #9
  %478 = load ptr, ptr %31, align 8, !tbaa !5
  %479 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %478)
  store ptr %479, ptr %54, align 8, !tbaa !5
  br label %480

480:                                              ; preds = %501, %477
  %481 = load ptr, ptr %54, align 8, !tbaa !5
  %482 = load i8, ptr %53, align 1, !tbaa !11, !range !13, !noundef !14
  %483 = trunc i8 %482 to i1
  br i1 %483, label %485, label %484

484:                                              ; preds = %480
  store i32 67, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  br label %503

485:                                              ; preds = %480
  br label %486

486:                                              ; preds = %485
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %487 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %487)
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %56, ptr noundef nonnull align 1 dereferenceable(1) %57) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef %56)
          to label %488 unwind label %491

488:                                              ; preds = %486
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  %489 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %489, ptr noundef @.str.8)
          to label %490 unwind label %495

490:                                              ; preds = %488
  call void @__cxa_throw(ptr %489, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
  unreachable

491:                                              ; preds = %486
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %21, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %22, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %56) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %502

495:                                              ; preds = %488
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %21, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %22, align 4
  call void @__cxa_free_exception(ptr %489) #9
  br label %502

499:                                              ; No predecessors!
  br label %500

500:                                              ; preds = %499
  br label %501

501:                                              ; preds = %500
  store i8 0, ptr %53, align 1, !tbaa !11
  br label %480, !llvm.loop !57

502:                                              ; preds = %495, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #9
  br label %510

503:                                              ; preds = %484
  br label %504

504:                                              ; preds = %503
  store i8 0, ptr %53, align 1, !tbaa !11
  br label %473, !llvm.loop !58

505:                                              ; preds = %476
  br label %506

506:                                              ; preds = %505, %471, %392, %324, %282
  br label %507

507:                                              ; preds = %506
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %278, !llvm.loop !59

508:                                              ; preds = %390, %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  %509 = load i32, ptr %13, align 4
  switch i32 %509, label %513 [
    i32 40, label %511
  ]

510:                                              ; preds = %502, %468, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  br label %1011

511:                                              ; preds = %508
  br label %512

512:                                              ; preds = %511
  store i8 0, ptr %30, align 1, !tbaa !11
  br label %270, !llvm.loop !60

513:                                              ; preds = %508, %273
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #9
  %514 = load i32, ptr %13, align 4
  switch i32 %514, label %517 [
    i32 37, label %515
  ]

515:                                              ; preds = %513
  br label %516

516:                                              ; preds = %515
  store i8 0, ptr %28, align 1, !tbaa !11
  br label %264, !llvm.loop !61

517:                                              ; preds = %513, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #9
  %518 = load i32, ptr %13, align 4
  switch i32 %518, label %521 [
    i32 34, label %519
  ]

519:                                              ; preds = %517
  br label %520

520:                                              ; preds = %519
  store i8 0, ptr %28, align 1, !tbaa !11
  br label %257, !llvm.loop !62

521:                                              ; preds = %517, %260
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #9
  %522 = load i32, ptr %13, align 4
  switch i32 %522, label %1009 [
    i32 31, label %523
  ]

523:                                              ; preds = %521
  br label %1007

524:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %58) #9
  store i8 1, ptr %58, align 1, !tbaa !11
  br label %525

525:                                              ; preds = %540, %524
  %526 = load i8, ptr %58, align 1, !tbaa !11, !range !13, !noundef !14
  %527 = trunc i8 %526 to i1
  br i1 %527, label %529, label %528

528:                                              ; preds = %525
  store i32 72, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %58) #9
  br label %541

529:                                              ; preds = %525
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #9
  %530 = load ptr, ptr %16, align 8, !tbaa !5
  %531 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %530)
  store ptr %531, ptr %59, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %538, %529
  %533 = load ptr, ptr %59, align 8, !tbaa !5
  %534 = load i8, ptr %58, align 1, !tbaa !11, !range !13, !noundef !14
  %535 = trunc i8 %534 to i1
  br i1 %535, label %537, label %536

536:                                              ; preds = %532
  store i32 75, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #9
  br label %539

537:                                              ; preds = %532
  br label %538

538:                                              ; preds = %537
  store i8 0, ptr %58, align 1, !tbaa !11
  br label %532, !llvm.loop !63

539:                                              ; preds = %536
  br label %540

540:                                              ; preds = %539
  store i8 0, ptr %58, align 1, !tbaa !11
  br label %525, !llvm.loop !64

541:                                              ; preds = %528
  br label %1007

542:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #9
  store i8 1, ptr %60, align 1, !tbaa !11
  br label %543

543:                                              ; preds = %588, %542
  %544 = load i8, ptr %60, align 1, !tbaa !11, !range !13, !noundef !14
  %545 = trunc i8 %544 to i1
  br i1 %545, label %547, label %546

546:                                              ; preds = %543
  store i32 78, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #9
  br label %589

547:                                              ; preds = %543
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #9
  %548 = load ptr, ptr %16, align 8, !tbaa !5
  %549 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZN3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %548)
  store ptr %549, ptr %61, align 8, !tbaa !5
  br label %550

550:                                              ; preds = %586, %547
  %551 = load ptr, ptr %61, align 8, !tbaa !5
  %552 = load i8, ptr %60, align 1, !tbaa !11, !range !13, !noundef !14
  %553 = trunc i8 %552 to i1
  br i1 %553, label %555, label %554

554:                                              ; preds = %550
  store i32 81, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #9
  br label %587

555:                                              ; preds = %550
  %556 = load ptr, ptr %8, align 8, !tbaa !5
  %557 = load ptr, ptr %61, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %557, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %62, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %559 = getelementptr inbounds { ptr, ptr }, ptr %62, i32 0, i32 0
  %560 = load ptr, ptr %559, align 8
  %561 = getelementptr inbounds { ptr, ptr }, ptr %62, i32 0, i32 1
  %562 = load ptr, ptr %561, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H26expand_associated_types_tpES2_RKS_RNS3_9TraitPathES9_(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(144) %558, ptr %560, ptr %562)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #9
  %563 = load ptr, ptr %61, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %563, i32 0, i32 1
  store ptr %564, ptr %63, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #9
  %565 = load ptr, ptr %63, align 8, !tbaa !5
  %566 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %565) #9
  %567 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.162", ptr %64, i32 0, i32 0
  store ptr %566, ptr %567, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #9
  %568 = load ptr, ptr %63, align 8, !tbaa !5
  %569 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %568) #9
  %570 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.162", ptr %65, i32 0, i32 0
  store ptr %569, ptr %570, align 8
  br label %571

571:                                              ; preds = %583, %555
  %572 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #9
  br i1 %572, label %574, label %573

573:                                              ; preds = %571
  store i32 84, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #9
  br label %585

574:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #9
  %575 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  store ptr %575, ptr %66, align 8, !tbaa !5
  %576 = load ptr, ptr %8, align 8, !tbaa !5
  %577 = load ptr, ptr %66, align 8, !tbaa !5
  %578 = getelementptr inbounds %"class.HIR::GenericPath", ptr %577, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %67, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %579 = getelementptr inbounds { ptr, ptr }, ptr %67, i32 0, i32 0
  %580 = load ptr, ptr %579, align 8
  %581 = getelementptr inbounds { ptr, ptr }, ptr %67, i32 0, i32 1
  %582 = load ptr, ptr %581, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %576, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %578, ptr %580, ptr %582)
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #9
  br label %583

583:                                              ; preds = %574
  %584 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #9
  br label %571

585:                                              ; preds = %573
  br label %586

586:                                              ; preds = %585
  store i8 0, ptr %60, align 1, !tbaa !11
  br label %550, !llvm.loop !65

587:                                              ; preds = %554
  br label %588

588:                                              ; preds = %587
  store i8 0, ptr %60, align 1, !tbaa !11
  br label %543, !llvm.loop !66

589:                                              ; preds = %546
  br label %1007

590:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #9
  store i8 1, ptr %68, align 1, !tbaa !11
  br label %591

591:                                              ; preds = %606, %590
  %592 = load i8, ptr %68, align 1, !tbaa !11, !range !13, !noundef !14
  %593 = trunc i8 %592 to i1
  br i1 %593, label %595, label %594

594:                                              ; preds = %591
  store i32 86, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #9
  br label %607

595:                                              ; preds = %591
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %596 = load ptr, ptr %16, align 8, !tbaa !5
  %597 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %596)
  store ptr %597, ptr %69, align 8, !tbaa !5
  br label %598

598:                                              ; preds = %604, %595
  %599 = load ptr, ptr %69, align 8, !tbaa !5
  %600 = load i8, ptr %68, align 1, !tbaa !11, !range !13, !noundef !14
  %601 = trunc i8 %600 to i1
  br i1 %601, label %603, label %602

602:                                              ; preds = %598
  store i32 89, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %605

603:                                              ; preds = %598
  br label %604

604:                                              ; preds = %603
  store i8 0, ptr %68, align 1, !tbaa !11
  br label %598, !llvm.loop !67

605:                                              ; preds = %602
  br label %606

606:                                              ; preds = %605
  store i8 0, ptr %68, align 1, !tbaa !11
  br label %591, !llvm.loop !68

607:                                              ; preds = %594
  br label %1007

608:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #9
  store i8 1, ptr %70, align 1, !tbaa !11
  br label %609

609:                                              ; preds = %638, %608
  %610 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %611 = trunc i8 %610 to i1
  br i1 %611, label %613, label %612

612:                                              ; preds = %609
  store i32 92, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #9
  br label %639

613:                                              ; preds = %609
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #9
  %614 = load ptr, ptr %16, align 8, !tbaa !5
  %615 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %614)
  store ptr %615, ptr %71, align 8, !tbaa !5
  br label %616

616:                                              ; preds = %636, %613
  %617 = load ptr, ptr %71, align 8, !tbaa !5
  %618 = load i8, ptr %70, align 1, !tbaa !11, !range !13, !noundef !14
  %619 = trunc i8 %618 to i1
  br i1 %619, label %621, label %620

620:                                              ; preds = %616
  store i32 95, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #9
  br label %637

621:                                              ; preds = %616
  %622 = load ptr, ptr %8, align 8, !tbaa !5
  %623 = getelementptr inbounds %struct.TraitResolveCommon, ptr %124, i32 0, i32 0
  %624 = load ptr, ptr %623, align 8, !tbaa !47
  %625 = getelementptr inbounds %class.TraitResolution, ptr %124, i32 0, i32 3
  %626 = load ptr, ptr %625, align 8, !tbaa !48
  %627 = load ptr, ptr %71, align 8, !tbaa !5
  %628 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %627, i32 0, i32 1
  call void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef nonnull align 8 dereferenceable(944) %624, ptr noundef nonnull align 8 dereferenceable(8) %626, ptr noundef nonnull align 8 dereferenceable(32) %628)
  %629 = load ptr, ptr %8, align 8, !tbaa !5
  %630 = load ptr, ptr %71, align 8, !tbaa !5
  %631 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %630, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %72, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %632 = getelementptr inbounds { ptr, ptr }, ptr %72, i32 0, i32 0
  %633 = load ptr, ptr %632, align 8
  %634 = getelementptr inbounds { ptr, ptr }, ptr %72, i32 0, i32 1
  %635 = load ptr, ptr %634, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef nonnull align 8 dereferenceable(8) %631, ptr %633, ptr %635)
  br label %636

636:                                              ; preds = %621
  store i8 0, ptr %70, align 1, !tbaa !11
  br label %616, !llvm.loop !69

637:                                              ; preds = %620
  br label %638

638:                                              ; preds = %637
  store i8 0, ptr %70, align 1, !tbaa !11
  br label %609, !llvm.loop !70

639:                                              ; preds = %612
  br label %1007

640:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #9
  store i8 1, ptr %73, align 1, !tbaa !11
  br label %641

641:                                              ; preds = %663, %640
  %642 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %643 = trunc i8 %642 to i1
  br i1 %643, label %645, label %644

644:                                              ; preds = %641
  store i32 98, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #9
  br label %664

645:                                              ; preds = %641
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #9
  %646 = load ptr, ptr %16, align 8, !tbaa !5
  %647 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %646)
  store ptr %647, ptr %74, align 8, !tbaa !5
  br label %648

648:                                              ; preds = %661, %645
  %649 = load ptr, ptr %74, align 8, !tbaa !5
  %650 = load i8, ptr %73, align 1, !tbaa !11, !range !13, !noundef !14
  %651 = trunc i8 %650 to i1
  br i1 %651, label %653, label %652

652:                                              ; preds = %648
  store i32 101, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #9
  br label %662

653:                                              ; preds = %648
  %654 = load ptr, ptr %8, align 8, !tbaa !5
  %655 = load ptr, ptr %74, align 8, !tbaa !5
  %656 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %655, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %75, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %657 = getelementptr inbounds { ptr, ptr }, ptr %75, i32 0, i32 0
  %658 = load ptr, ptr %657, align 8
  %659 = getelementptr inbounds { ptr, ptr }, ptr %75, i32 0, i32 1
  %660 = load ptr, ptr %659, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %654, ptr noundef nonnull align 8 dereferenceable(8) %656, ptr %658, ptr %660)
  br label %661

661:                                              ; preds = %653
  store i8 0, ptr %73, align 1, !tbaa !11
  br label %648, !llvm.loop !71

662:                                              ; preds = %652
  br label %663

663:                                              ; preds = %662
  store i8 0, ptr %73, align 1, !tbaa !11
  br label %641, !llvm.loop !72

664:                                              ; preds = %644
  br label %1007

665:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #9
  store i8 1, ptr %76, align 1, !tbaa !11
  br label %666

666:                                              ; preds = %702, %665
  %667 = load i8, ptr %76, align 1, !tbaa !11, !range !13, !noundef !14
  %668 = trunc i8 %667 to i1
  br i1 %668, label %670, label %669

669:                                              ; preds = %666
  store i32 104, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #9
  br label %703

670:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #9
  %671 = load ptr, ptr %16, align 8, !tbaa !5
  %672 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %671)
  store ptr %672, ptr %77, align 8, !tbaa !5
  br label %673

673:                                              ; preds = %700, %670
  %674 = load ptr, ptr %77, align 8, !tbaa !5
  %675 = load i8, ptr %76, align 1, !tbaa !11, !range !13, !noundef !14
  %676 = trunc i8 %675 to i1
  br i1 %676, label %678, label %677

677:                                              ; preds = %673
  store i32 107, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #9
  br label %701

678:                                              ; preds = %673
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #9
  %679 = load ptr, ptr %77, align 8, !tbaa !5
  store ptr %679, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #9
  %680 = load ptr, ptr %78, align 8, !tbaa !5
  %681 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %680) #9
  %682 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.164", ptr %79, i32 0, i32 0
  store ptr %681, ptr %682, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %683 = load ptr, ptr %78, align 8, !tbaa !5
  %684 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %683) #9
  %685 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.164", ptr %80, i32 0, i32 0
  store ptr %684, ptr %685, align 8
  br label %686

686:                                              ; preds = %697, %678
  %687 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  br i1 %687, label %689, label %688

688:                                              ; preds = %686
  store i32 110, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #9
  br label %699

689:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #9
  %690 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  store ptr %690, ptr %81, align 8, !tbaa !5
  %691 = load ptr, ptr %8, align 8, !tbaa !5
  %692 = load ptr, ptr %81, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %82, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %693 = getelementptr inbounds { ptr, ptr }, ptr %82, i32 0, i32 0
  %694 = load ptr, ptr %693, align 8
  %695 = getelementptr inbounds { ptr, ptr }, ptr %82, i32 0, i32 1
  %696 = load ptr, ptr %695, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef nonnull align 8 dereferenceable(8) %692, ptr %694, ptr %696)
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #9
  br label %697

697:                                              ; preds = %689
  %698 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %79) #9
  br label %686

699:                                              ; preds = %688
  br label %700

700:                                              ; preds = %699
  store i8 0, ptr %76, align 1, !tbaa !11
  br label %673, !llvm.loop !73

701:                                              ; preds = %677
  br label %702

702:                                              ; preds = %701
  store i8 0, ptr %76, align 1, !tbaa !11
  br label %666, !llvm.loop !74

703:                                              ; preds = %669
  br label %1007

704:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %83) #9
  store i8 1, ptr %83, align 1, !tbaa !11
  br label %705

705:                                              ; preds = %727, %704
  %706 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %707 = trunc i8 %706 to i1
  br i1 %707, label %709, label %708

708:                                              ; preds = %705
  store i32 112, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %83) #9
  br label %728

709:                                              ; preds = %705
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #9
  %710 = load ptr, ptr %16, align 8, !tbaa !5
  %711 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %710)
  store ptr %711, ptr %84, align 8, !tbaa !5
  br label %712

712:                                              ; preds = %725, %709
  %713 = load ptr, ptr %84, align 8, !tbaa !5
  %714 = load i8, ptr %83, align 1, !tbaa !11, !range !13, !noundef !14
  %715 = trunc i8 %714 to i1
  br i1 %715, label %717, label %716

716:                                              ; preds = %712
  store i32 115, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #9
  br label %726

717:                                              ; preds = %712
  %718 = load ptr, ptr %8, align 8, !tbaa !5
  %719 = load ptr, ptr %84, align 8, !tbaa !5
  %720 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %719, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %85, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %721 = getelementptr inbounds { ptr, ptr }, ptr %85, i32 0, i32 0
  %722 = load ptr, ptr %721, align 8
  %723 = getelementptr inbounds { ptr, ptr }, ptr %85, i32 0, i32 1
  %724 = load ptr, ptr %723, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %718, ptr noundef nonnull align 8 dereferenceable(8) %720, ptr %722, ptr %724)
  br label %725

725:                                              ; preds = %717
  store i8 0, ptr %83, align 1, !tbaa !11
  br label %712, !llvm.loop !75

726:                                              ; preds = %716
  br label %727

727:                                              ; preds = %726
  store i8 0, ptr %83, align 1, !tbaa !11
  br label %705, !llvm.loop !76

728:                                              ; preds = %708
  br label %1007

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

730:                                              ; preds = %752, %729
  %731 = load i8, ptr %86, align 1, !tbaa !11, !range !13, !noundef !14
  %732 = trunc i8 %731 to i1
  br i1 %732, label %734, label %733

733:                                              ; preds = %730
  store i32 118, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #9
  br label %753

734:                                              ; preds = %730
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #9
  %735 = load ptr, ptr %16, align 8, !tbaa !5
  %736 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %735)
  store ptr %736, ptr %87, align 8, !tbaa !5
  br label %737

737:                                              ; preds = %750, %734
  %738 = load ptr, ptr %87, align 8, !tbaa !5
  %739 = load i8, ptr %86, align 1, !tbaa !11, !range !13, !noundef !14
  %740 = trunc i8 %739 to i1
  br i1 %740, label %742, label %741

741:                                              ; preds = %737
  store i32 121, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #9
  br label %751

742:                                              ; preds = %737
  %743 = load ptr, ptr %8, align 8, !tbaa !5
  %744 = load ptr, ptr %87, align 8, !tbaa !5
  %745 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %744, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %88, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %746 = getelementptr inbounds { ptr, ptr }, ptr %88, i32 0, i32 0
  %747 = load ptr, ptr %746, align 8
  %748 = getelementptr inbounds { ptr, ptr }, ptr %88, i32 0, i32 1
  %749 = load ptr, ptr %748, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %743, ptr noundef nonnull align 8 dereferenceable(8) %745, ptr %747, ptr %749)
  br label %750

750:                                              ; preds = %742
  store i8 0, ptr %86, align 1, !tbaa !11
  br label %737, !llvm.loop !77

751:                                              ; preds = %741
  br label %752

752:                                              ; preds = %751
  store i8 0, ptr %86, align 1, !tbaa !11
  br label %730, !llvm.loop !78

753:                                              ; preds = %733
  br label %1007

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

755:                                              ; preds = %922, %754
  %756 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %757 = trunc i8 %756 to i1
  br i1 %757, label %759, label %758

758:                                              ; preds = %755
  store i32 124, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %923

759:                                              ; preds = %755
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #9
  %760 = load ptr, ptr %16, align 8, !tbaa !5
  %761 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %760)
  store ptr %761, ptr %90, align 8, !tbaa !5
  br label %762

762:                                              ; preds = %920, %759
  %763 = load ptr, ptr %90, align 8, !tbaa !5
  %764 = load i8, ptr %89, align 1, !tbaa !11, !range !13, !noundef !14
  %765 = trunc i8 %764 to i1
  br i1 %765, label %767, label %766

766:                                              ; preds = %762
  store i32 127, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  br label %921

767:                                              ; preds = %762
  call void @llvm.lifetime.start.p0(i64 1, ptr %91) #9
  store i8 1, ptr %91, align 1, !tbaa !11
  br label %768

768:                                              ; preds = %918, %767
  %769 = load i8, ptr %91, align 1, !tbaa !11, !range !13, !noundef !14
  %770 = trunc i8 %769 to i1
  br i1 %770, label %772, label %771

771:                                              ; preds = %768
  store i32 130, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #9
  br label %919

772:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #9
  %773 = load ptr, ptr %90, align 8, !tbaa !5
  %774 = getelementptr inbounds %"struct.HIR::TypeData::Data_NamedFunction", ptr %773, i32 0, i32 0
  %775 = getelementptr inbounds %"class.HIR::Path", ptr %774, i32 0, i32 0
  store ptr %775, ptr %92, align 8, !tbaa !5
  br label %776

776:                                              ; preds = %916, %772
  %777 = load i8, ptr %91, align 1, !tbaa !11, !range !13, !noundef !14
  %778 = trunc i8 %777 to i1
  br i1 %778, label %780, label %779

779:                                              ; preds = %776
  store i32 133, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  br label %917

780:                                              ; preds = %776
  %781 = load ptr, ptr %92, align 8, !tbaa !5
  %782 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %781)
  switch i32 %782, label %915 [
    i32 0, label %783
    i32 1, label %784
    i32 2, label %809
    i32 3, label %841
    i32 4, label %881
  ]

783:                                              ; preds = %780
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 2250, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #10
  unreachable

784:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #9
  store i8 1, ptr %93, align 1, !tbaa !11
  br label %785

785:                                              ; preds = %807, %784
  %786 = load i8, ptr %93, align 1, !tbaa !11, !range !13, !noundef !14
  %787 = trunc i8 %786 to i1
  br i1 %787, label %789, label %788

788:                                              ; preds = %785
  store i32 137, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #9
  br label %808

789:                                              ; preds = %785
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %790 = load ptr, ptr %92, align 8, !tbaa !5
  %791 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %790)
  store ptr %791, ptr %94, align 8, !tbaa !5
  br label %792

792:                                              ; preds = %805, %789
  %793 = load ptr, ptr %94, align 8, !tbaa !5
  %794 = load i8, ptr %93, align 1, !tbaa !11, !range !13, !noundef !14
  %795 = trunc i8 %794 to i1
  br i1 %795, label %797, label %796

796:                                              ; preds = %792
  store i32 140, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %806

797:                                              ; preds = %792
  %798 = load ptr, ptr %8, align 8, !tbaa !5
  %799 = load ptr, ptr %94, align 8, !tbaa !5
  %800 = getelementptr inbounds %"class.HIR::GenericPath", ptr %799, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %95, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %801 = getelementptr inbounds { ptr, ptr }, ptr %95, i32 0, i32 0
  %802 = load ptr, ptr %801, align 8
  %803 = getelementptr inbounds { ptr, ptr }, ptr %95, i32 0, i32 1
  %804 = load ptr, ptr %803, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %798, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %800, ptr %802, ptr %804)
  br label %805

805:                                              ; preds = %797
  store i8 0, ptr %93, align 1, !tbaa !11
  br label %792, !llvm.loop !79

806:                                              ; preds = %796
  br label %807

807:                                              ; preds = %806
  store i8 0, ptr %93, align 1, !tbaa !11
  br label %785, !llvm.loop !80

808:                                              ; preds = %788
  br label %915

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

810:                                              ; preds = %839, %809
  %811 = load i8, ptr %96, align 1, !tbaa !11, !range !13, !noundef !14
  %812 = trunc i8 %811 to i1
  br i1 %812, label %814, label %813

813:                                              ; preds = %810
  store i32 143, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %96) #9
  br label %840

814:                                              ; preds = %810
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #9
  %815 = load ptr, ptr %92, align 8, !tbaa !5
  %816 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %815)
  store ptr %816, ptr %97, align 8, !tbaa !5
  br label %817

817:                                              ; preds = %837, %814
  %818 = load ptr, ptr %97, align 8, !tbaa !5
  %819 = load i8, ptr %96, align 1, !tbaa !11, !range !13, !noundef !14
  %820 = trunc i8 %819 to i1
  br i1 %820, label %822, label %821

821:                                              ; preds = %817
  store i32 146, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #9
  br label %838

822:                                              ; preds = %817
  %823 = load ptr, ptr %8, align 8, !tbaa !5
  %824 = load ptr, ptr %97, align 8, !tbaa !5
  %825 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %824, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %98, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %826 = getelementptr inbounds { ptr, ptr }, ptr %98, i32 0, i32 0
  %827 = load ptr, ptr %826, align 8
  %828 = getelementptr inbounds { ptr, ptr }, ptr %98, i32 0, i32 1
  %829 = load ptr, ptr %828, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %823, ptr noundef nonnull align 8 dereferenceable(8) %825, ptr %827, ptr %829)
  %830 = load ptr, ptr %8, align 8, !tbaa !5
  %831 = load ptr, ptr %97, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsInherent", ptr %831, i32 0, i32 2
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %99, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %833 = getelementptr inbounds { ptr, ptr }, ptr %99, i32 0, i32 0
  %834 = load ptr, ptr %833, align 8
  %835 = getelementptr inbounds { ptr, ptr }, ptr %99, i32 0, i32 1
  %836 = load ptr, ptr %835, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %830, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %832, ptr %834, ptr %836)
  br label %837

837:                                              ; preds = %822
  store i8 0, ptr %96, align 1, !tbaa !11
  br label %817, !llvm.loop !81

838:                                              ; preds = %821
  br label %839

839:                                              ; preds = %838
  store i8 0, ptr %96, align 1, !tbaa !11
  br label %810, !llvm.loop !82

840:                                              ; preds = %813
  br label %915

841:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #9
  store i8 1, ptr %100, align 1, !tbaa !11
  br label %842

842:                                              ; preds = %879, %841
  %843 = load i8, ptr %100, align 1, !tbaa !11, !range !13, !noundef !14
  %844 = trunc i8 %843 to i1
  br i1 %844, label %846, label %845

845:                                              ; preds = %842
  store i32 149, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #9
  br label %880

846:                                              ; preds = %842
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #9
  %847 = load ptr, ptr %92, align 8, !tbaa !5
  %848 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %847)
  store ptr %848, ptr %101, align 8, !tbaa !5
  br label %849

849:                                              ; preds = %877, %846
  %850 = load ptr, ptr %101, align 8, !tbaa !5
  %851 = load i8, ptr %100, align 1, !tbaa !11, !range !13, !noundef !14
  %852 = trunc i8 %851 to i1
  br i1 %852, label %854, label %853

853:                                              ; preds = %849
  store i32 152, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #9
  br label %878

854:                                              ; preds = %849
  %855 = load ptr, ptr %8, align 8, !tbaa !5
  %856 = load ptr, ptr %101, align 8, !tbaa !5
  %857 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %856, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %102, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %858 = getelementptr inbounds { ptr, ptr }, ptr %102, i32 0, i32 0
  %859 = load ptr, ptr %858, align 8
  %860 = getelementptr inbounds { ptr, ptr }, ptr %102, i32 0, i32 1
  %861 = load ptr, ptr %860, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %855, ptr noundef nonnull align 8 dereferenceable(8) %857, ptr %859, ptr %861)
  %862 = load ptr, ptr %8, align 8, !tbaa !5
  %863 = load ptr, ptr %101, align 8, !tbaa !5
  %864 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %863, i32 0, i32 3
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %103, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %865 = getelementptr inbounds { ptr, ptr }, ptr %103, i32 0, i32 0
  %866 = load ptr, ptr %865, align 8
  %867 = getelementptr inbounds { ptr, ptr }, ptr %103, i32 0, i32 1
  %868 = load ptr, ptr %867, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %862, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %864, ptr %866, ptr %868)
  %869 = load ptr, ptr %8, align 8, !tbaa !5
  %870 = load ptr, ptr %101, align 8, !tbaa !5
  %871 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %870, i32 0, i32 1
  %872 = getelementptr inbounds %"class.HIR::GenericPath", ptr %871, i32 0, i32 1
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %104, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %873 = getelementptr inbounds { ptr, ptr }, ptr %104, i32 0, i32 0
  %874 = load ptr, ptr %873, align 8
  %875 = getelementptr inbounds { ptr, ptr }, ptr %104, i32 0, i32 1
  %876 = load ptr, ptr %875, align 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %869, ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(24) %872, ptr %874, ptr %876)
  br label %877

877:                                              ; preds = %854
  store i8 0, ptr %100, align 1, !tbaa !11
  br label %849, !llvm.loop !83

878:                                              ; preds = %853
  br label %879

879:                                              ; preds = %878
  store i8 0, ptr %100, align 1, !tbaa !11
  br label %842, !llvm.loop !84

880:                                              ; preds = %845
  br label %915

881:                                              ; preds = %780
  call void @llvm.lifetime.start.p0(i64 1, ptr %105) #9
  store i8 1, ptr %105, align 1, !tbaa !11
  br label %882

882:                                              ; preds = %913, %881
  %883 = load i8, ptr %105, align 1, !tbaa !11, !range !13, !noundef !14
  %884 = trunc i8 %883 to i1
  br i1 %884, label %886, label %885

885:                                              ; preds = %882
  store i32 155, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  br label %914

886:                                              ; preds = %882
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  %887 = load ptr, ptr %92, align 8, !tbaa !5
  %888 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %887)
  store ptr %888, ptr %106, align 8, !tbaa !5
  br label %889

889:                                              ; preds = %910, %886
  %890 = load ptr, ptr %106, align 8, !tbaa !5
  %891 = load i8, ptr %105, align 1, !tbaa !11, !range !13, !noundef !14
  %892 = trunc i8 %891 to i1
  br i1 %892, label %894, label %893

893:                                              ; preds = %889
  store i32 158, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br label %912

894:                                              ; preds = %889
  br label %895

895:                                              ; preds = %894
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #9
  %896 = load ptr, ptr %8, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef nonnull align 8 dereferenceable(8) %896)
  call void @llvm.lifetime.start.p0(i64 1, ptr %109) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 1 dereferenceable(1) %109) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %107, ptr noundef %108)
          to label %897 unwind label %900

897:                                              ; preds = %895
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  %898 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %898, ptr noundef @.str.8)
          to label %899 unwind label %904

899:                                              ; preds = %897
  call void @__cxa_throw(ptr %898, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
  unreachable

900:                                              ; preds = %895
  %901 = landingpad { ptr, i32 }
          cleanup
  %902 = extractvalue { ptr, i32 } %901, 0
  store ptr %902, ptr %21, align 8
  %903 = extractvalue { ptr, i32 } %901, 1
  store i32 %903, ptr %22, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %109) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #9
  br label %911

904:                                              ; preds = %897
  %905 = landingpad { ptr, i32 }
          cleanup
  %906 = extractvalue { ptr, i32 } %905, 0
  store ptr %906, ptr %21, align 8
  %907 = extractvalue { ptr, i32 } %905, 1
  store i32 %907, ptr %22, align 4
  call void @__cxa_free_exception(ptr %898) #9
  br label %911

908:                                              ; No predecessors!
  br label %909

909:                                              ; preds = %908
  br label %910

910:                                              ; preds = %909
  store i8 0, ptr %105, align 1, !tbaa !11
  br label %889, !llvm.loop !85

911:                                              ; preds = %904, %900
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %105) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %91) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #9
  br label %1011

912:                                              ; preds = %893
  br label %913

913:                                              ; preds = %912
  store i8 0, ptr %105, align 1, !tbaa !11
  br label %882, !llvm.loop !86

914:                                              ; preds = %885
  br label %915

915:                                              ; preds = %914, %880, %840, %808, %780
  br label %916

916:                                              ; preds = %915
  store i8 0, ptr %91, align 1, !tbaa !11
  br label %776, !llvm.loop !87

917:                                              ; preds = %779
  br label %918

918:                                              ; preds = %917
  store i8 0, ptr %91, align 1, !tbaa !11
  br label %768, !llvm.loop !88

919:                                              ; preds = %771
  br label %920

920:                                              ; preds = %919
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %762, !llvm.loop !89

921:                                              ; preds = %766
  br label %922

922:                                              ; preds = %921
  store i8 0, ptr %89, align 1, !tbaa !11
  br label %755, !llvm.loop !90

923:                                              ; preds = %758
  br label %1007

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

925:                                              ; preds = %969, %924
  %926 = load i8, ptr %110, align 1, !tbaa !11, !range !13, !noundef !14
  %927 = trunc i8 %926 to i1
  br i1 %927, label %929, label %928

928:                                              ; preds = %925
  store i32 163, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #9
  br label %970

929:                                              ; preds = %925
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #9
  %930 = load ptr, ptr %16, align 8, !tbaa !5
  %931 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %930)
  store ptr %931, ptr %111, align 8, !tbaa !5
  br label %932

932:                                              ; preds = %967, %929
  %933 = load ptr, ptr %111, align 8, !tbaa !5
  %934 = load i8, ptr %110, align 1, !tbaa !11, !range !13, !noundef !14
  %935 = trunc i8 %934 to i1
  br i1 %935, label %937, label %936

936:                                              ; preds = %932
  store i32 166, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #9
  br label %968

937:                                              ; preds = %932
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #9
  %938 = load ptr, ptr %111, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %938, i32 0, i32 5
  store ptr %939, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #9
  %940 = load ptr, ptr %112, align 8, !tbaa !5
  %941 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %940) #9
  %942 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.164", ptr %113, i32 0, i32 0
  store ptr %941, ptr %942, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #9
  %943 = load ptr, ptr %112, align 8, !tbaa !5
  %944 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %943) #9
  %945 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.164", ptr %114, i32 0, i32 0
  store ptr %944, ptr %945, align 8
  br label %946

946:                                              ; preds = %957, %937
  %947 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %114) #9
  br i1 %947, label %949, label %948

948:                                              ; preds = %946
  store i32 169, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #9
  br label %959

949:                                              ; preds = %946
  call void @llvm.lifetime.start.p0(i64 8, ptr %115) #9
  %950 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %113) #9
  store ptr %950, ptr %115, align 8, !tbaa !5
  %951 = load ptr, ptr %8, align 8, !tbaa !5
  %952 = load ptr, ptr %115, align 8, !tbaa !5
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %116, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %953 = getelementptr inbounds { ptr, ptr }, ptr %116, i32 0, i32 0
  %954 = load ptr, ptr %953, align 8
  %955 = getelementptr inbounds { ptr, ptr }, ptr %116, i32 0, i32 1
  %956 = load ptr, ptr %955, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %951, ptr noundef nonnull align 8 dereferenceable(8) %952, ptr %954, ptr %956)
  call void @llvm.lifetime.end.p0(i64 8, ptr %115) #9
  br label %957

957:                                              ; preds = %949
  %958 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %113) #9
  br label %946

959:                                              ; preds = %948
  %960 = load ptr, ptr %8, align 8, !tbaa !5
  %961 = load ptr, ptr %111, align 8, !tbaa !5
  %962 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %961, i32 0, i32 4
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %117, ptr align 8 %6, i64 16, i1 false), !tbaa.struct !39
  %963 = getelementptr inbounds { ptr, ptr }, ptr %117, i32 0, i32 0
  %964 = load ptr, ptr %963, align 8
  %965 = getelementptr inbounds { ptr, ptr }, ptr %117, i32 0, i32 1
  %966 = load ptr, ptr %965, align 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %124, ptr noundef nonnull align 8 dereferenceable(8) %960, ptr noundef nonnull align 8 dereferenceable(8) %962, ptr %964, ptr %966)
  br label %967

967:                                              ; preds = %959
  store i8 0, ptr %110, align 1, !tbaa !11
  br label %932, !llvm.loop !91

968:                                              ; preds = %936
  br label %969

969:                                              ; preds = %968
  store i8 0, ptr %110, align 1, !tbaa !11
  br label %925, !llvm.loop !92

970:                                              ; preds = %928
  br label %1007

971:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #9
  store i8 1, ptr %118, align 1, !tbaa !11
  br label %972

972:                                              ; preds = %987, %971
  %973 = load i8, ptr %118, align 1, !tbaa !11, !range !13, !noundef !14
  %974 = trunc i8 %973 to i1
  br i1 %974, label %976, label %975

975:                                              ; preds = %972
  store i32 171, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #9
  br label %988

976:                                              ; preds = %972
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #9
  %977 = load ptr, ptr %16, align 8, !tbaa !5
  %978 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %977)
  store ptr %978, ptr %119, align 8, !tbaa !5
  br label %979

979:                                              ; preds = %985, %976
  %980 = load ptr, ptr %119, align 8, !tbaa !5
  %981 = load i8, ptr %118, align 1, !tbaa !11, !range !13, !noundef !14
  %982 = trunc i8 %981 to i1
  br i1 %982, label %984, label %983

983:                                              ; preds = %979
  store i32 174, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #9
  br label %986

984:                                              ; preds = %979
  br label %985

985:                                              ; preds = %984
  store i8 0, ptr %118, align 1, !tbaa !11
  br label %979, !llvm.loop !93

986:                                              ; preds = %983
  br label %987

987:                                              ; preds = %986
  store i8 0, ptr %118, align 1, !tbaa !11
  br label %972, !llvm.loop !94

988:                                              ; preds = %975
  br label %1007

989:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 1, ptr %120) #9
  store i8 1, ptr %120, align 1, !tbaa !11
  br label %990

990:                                              ; preds = %1005, %989
  %991 = load i8, ptr %120, align 1, !tbaa !11, !range !13, !noundef !14
  %992 = trunc i8 %991 to i1
  br i1 %992, label %994, label %993

993:                                              ; preds = %990
  store i32 177, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %120) #9
  br label %1006

994:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 8, ptr %121) #9
  %995 = load ptr, ptr %16, align 8, !tbaa !5
  %996 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %995)
  store ptr %996, ptr %121, align 8, !tbaa !5
  br label %997

997:                                              ; preds = %1003, %994
  %998 = load ptr, ptr %121, align 8, !tbaa !5
  %999 = load i8, ptr %120, align 1, !tbaa !11, !range !13, !noundef !14
  %1000 = trunc i8 %999 to i1
  br i1 %1000, label %1002, label %1001

1001:                                             ; preds = %997
  store i32 180, ptr %13, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %121) #9
  br label %1004

1002:                                             ; preds = %997
  br label %1003

1003:                                             ; preds = %1002
  store i8 0, ptr %120, align 1, !tbaa !11
  br label %997, !llvm.loop !95

1004:                                             ; preds = %1001
  br label %1005

1005:                                             ; preds = %1004
  store i8 0, ptr %120, align 1, !tbaa !11
  br label %990, !llvm.loop !96

1006:                                             ; preds = %993
  br label %1007

1007:                                             ; preds = %1006, %988, %970, %923, %753, %728, %703, %664, %639, %607, %589, %541, %523, %255, %237, %219, %175
  br label %1008

1008:                                             ; preds = %1007
  store i8 0, ptr %15, align 1, !tbaa !11
  br label %171, !llvm.loop !97

1009:                                             ; preds = %521, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  %1010 = load i32, ptr %13, align 4
  switch i32 %1010, label %1014 [
    i32 9, label %1012
  ]

1011:                                             ; preds = %911, %510, %211
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  br label %1017

1012:                                             ; preds = %1009
  br label %1013

1013:                                             ; preds = %1012
  store i8 0, ptr %15, align 1, !tbaa !11
  br label %164, !llvm.loop !98

1014:                                             ; preds = %1009, %167
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #9
  %1015 = load i32, ptr %13, align 4
  switch i32 %1015, label %1022 [
    i32 6, label %1016
    i32 1, label %1016
  ]

1016:                                             ; preds = %1014, %1014, %161
  ret void

1017:                                             ; preds = %1011
  %1018 = load ptr, ptr %21, align 8
  %1019 = load i32, ptr %22, align 4
  %1020 = insertvalue { ptr, i32 } poison, ptr %1018, 0
  %1021 = insertvalue { ptr, i32 } %1020, i32 %1019, 1
  resume { ptr, i32 } %1021

1022:                                             ; preds = %1014, %161
  unreachable
}

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

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

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

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

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

declare void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24)) #1

declare noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16)) #1

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DC2ERKS_S4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(280), ptr noundef) unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H26expand_associated_types_tpES2_RKS_RNS3_9TraitPathES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(144), ptr, ptr) #4 align 2

declare void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = !{!12, !12, i64 0}
!12 = !{!"bool", !7, i64 0}
!13 = !{i8 0, i8 2}
!14 = !{}
!15 = !{!16, !6, i64 224}
!16 = !{!"_ZTS15TraitResolution", !17, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !35, i64 256}
!17 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !18, i64 24, !27, i64 72, !33, i64 104, !33, i64 112, !33, i64 120, !33, i64 128, !33, i64 136, !33, i64 144, !33, i64 152, !33, i64 160, !33, i64 168, !33, i64 176, !33, i64 184, !33, i64 192, !33, i64 200, !33, i64 208}
!18 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !19, i64 0}
!19 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !20, i64 0}
!20 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !21, i64 0, !23, i64 8}
!21 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !22, i64 0}
!22 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!23 = !{!"_ZTSSt15_Rb_tree_header", !24, i64 0, !26, i64 32}
!24 = !{!"_ZTSSt18_Rb_tree_node_base", !25, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!25 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!26 = !{!"long", !7, i64 0}
!27 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !28, i64 0, !32, i64 24}
!28 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !29, i64 0}
!29 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!32 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!33 = !{!"_ZTSN3HIR10SimplePathE", !34, i64 0}
!34 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!35 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{i64 0, i64 8, !5, i64 8, i64 8, !5}
!40 = distinct !{!40, !41}
!41 = !{!"llvm.loop.mustprogress"}
!42 = distinct !{!42, !41}
!43 = distinct !{!43, !41}
!44 = distinct !{!44, !41}
!45 = distinct !{!45, !41}
!46 = distinct !{!46, !41}
!47 = !{!17, !6, i64 0}
!48 = !{!16, !6, i64 232}
!49 = !{!17, !6, i64 8}
!50 = !{!17, !6, i64 16}
!51 = distinct !{!51, !41}
!52 = distinct !{!52, !41}
!53 = distinct !{!53, !41}
!54 = distinct !{!54, !41}
!55 = distinct !{!55, !41}
!56 = distinct !{!56, !41}
!57 = distinct !{!57, !41}
!58 = distinct !{!58, !41}
!59 = distinct !{!59, !41}
!60 = distinct !{!60, !41}
!61 = distinct !{!61, !41}
!62 = distinct !{!62, !41}
!63 = distinct !{!63, !41}
!64 = distinct !{!64, !41}
!65 = distinct !{!65, !41}
!66 = distinct !{!66, !41}
!67 = distinct !{!67, !41}
!68 = distinct !{!68, !41}
!69 = distinct !{!69, !41}
!70 = distinct !{!70, !41}
!71 = distinct !{!71, !41}
!72 = distinct !{!72, !41}
!73 = distinct !{!73, !41}
!74 = distinct !{!74, !41}
!75 = distinct !{!75, !41}
!76 = distinct !{!76, !41}
!77 = distinct !{!77, !41}
!78 = distinct !{!78, !41}
!79 = distinct !{!79, !41}
!80 = distinct !{!80, !41}
!81 = distinct !{!81, !41}
!82 = distinct !{!82, !41}
!83 = distinct !{!83, !41}
!84 = distinct !{!84, !41}
!85 = distinct !{!85, !41}
!86 = distinct !{!86, !41}
!87 = distinct !{!87, !41}
!88 = distinct !{!88, !41}
!89 = distinct !{!89, !41}
!90 = distinct !{!90, !41}
!91 = distinct !{!91, !41}
!92 = distinct !{!92, !41}
!93 = distinct !{!93, !41}
!94 = distinct !{!94, !41}
!95 = distinct !{!95, !41}
!96 = distinct !{!96, !41}
!97 = distinct !{!97, !41}
!98 = distinct !{!98, !41}


; Optimized IR (opt -passes='default<O3>'):
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

%"class.HIR::TypeRef" = type { ptr }
%struct.LList = type { ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%struct.Span = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.512 = type { ptr, ptr }
%struct.D = type { ptr }
%class.anon.513 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.162" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.164" = type { ptr }
%class.anon.515 = type { i8 }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [32 x i8], align 1
@.str.91 = external hidden unnamed_addr constant [39 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E = external hidden unnamed_addr constant [123 x i8], align 1
@.str.92 = external hidden unnamed_addr constant [30 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(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(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(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(160) ptr @_ZN3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184)) local_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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress uwtable
define dso_local void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr %3, ptr %4) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca %struct.LList, align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %9 = alloca %"class.HIR::TypeRef", align 8
  %10 = alloca ptr, align 8
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.512, align 8
  %14 = alloca %struct.D, align 8
  %15 = alloca %"class.HIR::TypeRef", align 8
  %16 = alloca %struct.LList, align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.513, align 1
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.162", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.162", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.515, align 1
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.164", align 8
  store ptr %3, ptr %6, align 8
  %29 = getelementptr inbounds i8, ptr %6, i64 8
  store ptr %4, ptr %29, align 8
  %30 = getelementptr inbounds i8, ptr %0, i64 256
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %31 = tail call ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  store ptr %31, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %32 = tail call ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  store ptr %32, ptr %8, align 8
  %33 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br i1 %33, label %.lr.ph, label %.lr.ph945

.lr.ph:                                           ; preds = %5, %.critedge
  %34 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  %35 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  %36 = call noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %35)
  br i1 %36, label %37, label %.critedge

37:                                               ; preds = %.lr.ph
  %38 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %38, label %39, label %.thread

39:                                               ; preds = %37
  %40 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !5
  %41 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %40, ptr noundef nonnull @__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E)
  %42 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull @.str.91)
  %43 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPKv(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull %2)
  %44 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %45 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %.thread

.critedge:                                        ; preds = %.lr.ph
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  %47 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESG_(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br i1 %47, label %.lr.ph, label %.lr.ph945

.thread:                                          ; preds = %37, %39
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  br label %.thread335

.lr.ph945:                                        ; preds = %.critedge, %5
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  %48 = getelementptr inbounds i8, ptr %0, i64 232
  %.sroa.2125.0..sroa_idx = getelementptr inbounds i8, ptr %16, i64 8
  %49 = getelementptr inbounds i8, ptr %0, i64 8
  %50 = getelementptr inbounds i8, ptr %0, i64 16
  %51 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZN3HIR7TypeRef8data_mutEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %52 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  switch i32 %52, label %.thread335 [
    i32 0, label %88
    i32 1, label %.preheader375
    i32 2, label %.preheader376
    i32 3, label %.preheader378
    i32 4, label %.lr.ph815
    i32 5, label %.preheader382
    i32 6, label %.preheader384
    i32 7, label %.preheader386
    i32 8, label %.preheader388
    i32 9, label %.preheader390
    i32 10, label %.preheader392
    i32 11, label %.preheader394
    i32 12, label %.preheader396
    i32 13, label %.lr.ph507
    i32 14, label %.preheader400
    i32 15, label %.preheader402
    i32 16, label %.preheader404
  ]

.preheader404:                                    ; preds = %.lr.ph945
  %53 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader402:                                    ; preds = %.lr.ph945
  %54 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader400:                                    ; preds = %.lr.ph945
  %55 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZN3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %56 = getelementptr inbounds i8, ptr %55, i64 120
  %57 = getelementptr inbounds i8, ptr %55, i64 112
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %58 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #8
  store ptr %58, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %59 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %56) #8
  store ptr %59, ptr %28, align 8
  %60 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br i1 %60, label %.lr.ph436, label %..loopexit372_crit_edge

.preheader396:                                    ; preds = %.lr.ph945
  %61 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %62 = getelementptr inbounds i8, ptr %61, i64 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr %3, ptr %4)
  br label %.thread335

.preheader394:                                    ; preds = %.lr.ph945
  %63 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZN3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %64 = getelementptr inbounds i8, ptr %63, i64 8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %64, ptr %3, ptr %4)
  br label %.thread335

.preheader392:                                    ; preds = %.lr.ph945
  %65 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %66 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #8
  store ptr %66, ptr %22, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  %67 = call ptr @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #8
  store ptr %67, ptr %23, align 8
  %68 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %68, label %.lr.ph567, label %..loopexit368_crit_edge

.preheader390:                                    ; preds = %.lr.ph945
  %69 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr %3, ptr %4)
  br label %.thread335

.preheader388:                                    ; preds = %.lr.ph945
  %70 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %71 = getelementptr inbounds i8, ptr %70, i64 8
  %72 = load ptr, ptr %0, align 8, !tbaa !9
  %73 = load ptr, ptr %48, align 8, !tbaa !29
  call void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(944) %72, ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(32) %71)
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %70, ptr %3, ptr %4)
  br label %.thread335

.preheader386:                                    ; preds = %.lr.ph945
  %74 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZN3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader384:                                    ; preds = %.lr.ph945
  %75 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZN3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %76 = getelementptr inbounds i8, ptr %75, i64 144
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H26expand_associated_types_tpES2_RKS_RNS3_9TraitPathES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(144) %75, ptr %3, ptr %4)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  %77 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  store ptr %77, ptr %20, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %78 = call ptr @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %76) #8
  store ptr %78, ptr %21, align 8
  %79 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %79, label %.lr.ph706, label %..loopexit364_crit_edge

.preheader382:                                    ; preds = %.lr.ph945
  %80 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZN3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader378:                                    ; preds = %.lr.ph945
  %81 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader376:                                    ; preds = %.lr.ph945
  %82 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZN3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br label %.thread335

.preheader375:                                    ; preds = %.lr.ph945
  %83 = getelementptr inbounds i8, ptr %0, i64 224
  %84 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZN3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %85 = load ptr, ptr %83, align 8, !tbaa !35
  %86 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %85, ptr noundef nonnull align 8 dereferenceable(8) %2)
  %87 = call noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %2)
  br i1 %87, label %89, label %.thread335

88:                                               ; preds = %.lr.ph945
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 2160, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #9
  unreachable

89:                                               ; preds = %.preheader375
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  call void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %9, ptr noundef nonnull align 8 dereferenceable(8) %86)
  %90 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %9)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr %3, ptr %4)
  br label %.thread335

.lr.ph815:                                        ; preds = %.lr.ph945
  %91 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %92 = getelementptr inbounds i8, ptr %91, i64 88
  %93 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %91)
  switch i32 %93, label %.thread335 [
    i32 0, label %101
    i32 1, label %.preheader
    i32 2, label %102
    i32 3, label %.lr.ph789
    i32 4, label %141
  ]

.preheader:                                       ; preds = %.lr.ph815
  %94 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %91)
  %95 = getelementptr inbounds i8, ptr %94, i64 8
  %96 = load ptr, ptr %0, align 8, !tbaa !9
  %97 = load ptr, ptr %48, align 8, !tbaa !29
  %98 = load ptr, ptr %49, align 8, !tbaa !36
  %99 = load ptr, ptr %50, align 8, !tbaa !37
  %100 = call noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16) %92)
  call void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(944) %96, ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef %98, ptr noundef %99, ptr noundef nonnull align 8 dereferenceable(96) %100, ptr noundef nonnull align 8 dereferenceable(24) %95)
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %95, ptr %3, ptr %4)
  br label %.thread335

101:                                              ; preds = %.lr.ph815
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 2173, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #9
  unreachable

102:                                              ; preds = %.lr.ph815
  %103 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %91)
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %103, ptr %3, ptr %4)
  %104 = getelementptr inbounds i8, ptr %103, i64 16
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %104, ptr %3, ptr %4)
  %105 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  %106 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %105)
  br i1 %106, label %107, label %112

107:                                              ; preds = %102
  %108 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %103)
  %109 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %108)
  %110 = getelementptr inbounds i8, ptr %109, i64 88
  %111 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %110)
  br i1 %111, label %.thread335, label %112

112:                                              ; preds = %102, %107
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr @__FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E, ptr %10, align 8, !tbaa !38
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %13) #8
  store ptr %10, ptr %13, align 8, !tbaa !38
  %113 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %91, ptr %113, align 8, !tbaa !38
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(16) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %114 unwind label %117

114:                                              ; preds = %112
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  %115 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %115, ptr noundef nonnull @.str.70)
          to label %116 unwind label %119

116:                                              ; preds = %114
  call void @__cxa_throw(ptr nonnull %115, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

117:                                              ; preds = %112
  %118 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %121

119:                                              ; preds = %114
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %115) #8
  br label %121

121:                                              ; preds = %119, %117
  %.pn317 = phi { ptr, i32 } [ %120, %119 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %179

.lr.ph789:                                        ; preds = %.lr.ph815
  %122 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %91)
  %123 = getelementptr inbounds i8, ptr %122, i64 48
  %124 = getelementptr inbounds i8, ptr %122, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  call void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %15, ptr noundef nonnull align 8 dereferenceable(8) %2)
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DC2ERKS_S4_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull %15)
          to label %125 unwind label %128

125:                                              ; preds = %.lr.ph789
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  %126 = call noundef i64 @_ZNKSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %.not = icmp eq i64 %126, 0
  br i1 %.not, label %127, label %130

127:                                              ; preds = %125
  call void @__assert_fail(ptr noundef nonnull @.str.92, ptr noundef nonnull @.str.7, i32 noundef 2202, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #9
  unreachable

128:                                              ; preds = %.lr.ph789
  %129 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %140

130:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %16) #8
  %131 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE4backEv(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  %132 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS1_EE3getEv(ptr noundef nonnull align 8 dereferenceable(8) %131) #8
  call void @_ZN5LListIPKN3HIR7TypeRefEEC2EPKS4_S3_(ptr noundef nonnull align 8 dereferenceable(16) %16, ptr noundef nonnull %6, ptr noundef %132)
  %.sroa.0124.0.copyload = load ptr, ptr %16, align 8, !tbaa !38
  %.sroa.2125.0.copyload = load ptr, ptr %.sroa.2125.0..sroa_idx, align 8, !tbaa !38
  invoke void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %122, ptr %.sroa.0124.0.copyload, ptr %.sroa.2125.0.copyload)
          to label %133 unwind label %138

133:                                              ; preds = %130
  %.sroa.0122.0.copyload = load ptr, ptr %16, align 8, !tbaa !38
  %.sroa.2123.0.copyload = load ptr, ptr %.sroa.2125.0..sroa_idx, align 8, !tbaa !38
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %123, ptr %.sroa.0122.0.copyload, ptr %.sroa.2123.0.copyload)
          to label %134 unwind label %138

134:                                              ; preds = %133
  %.sroa.0120.0.copyload = load ptr, ptr %16, align 8, !tbaa !38
  %.sroa.2121.0.copyload = load ptr, ptr %.sroa.2125.0..sroa_idx, align 8, !tbaa !38
  invoke void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %124, ptr %.sroa.0120.0.copyload, ptr %.sroa.2121.0.copyload)
          to label %135 unwind label %138

135:                                              ; preds = %134
  %136 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %92)
  br i1 %136, label %137, label %..loopexit338_crit_edge

137:                                              ; preds = %135
  %.sroa.0118.0.copyload = load ptr, ptr %16, align 8, !tbaa !38
  %.sroa.2119.0.copyload = load ptr, ptr %.sroa.2125.0..sroa_idx, align 8, !tbaa !38
  invoke void @_ZNK15TraitResolution42expand_associated_types_inplace__UfcsKnownERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr %.sroa.0118.0.copyload, ptr %.sroa.2119.0.copyload)
          to label %..loopexit338_crit_edge unwind label %138

138:                                              ; preds = %137, %134, %133, %130
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %140

..loopexit338_crit_edge:                          ; preds = %137, %135
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %16) #8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.thread335

140:                                              ; preds = %138, %128
  %.pn315 = phi { ptr, i32 } [ %139, %138 ], [ %129, %128 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %179

141:                                              ; preds = %.lr.ph815
  %142 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %91)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 1 dereferenceable(1) %19) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %143 unwind label %146

143:                                              ; preds = %141
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  %144 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %144, ptr noundef nonnull @.str.8)
          to label %145 unwind label %148

145:                                              ; preds = %143
  call void @__cxa_throw(ptr nonnull %144, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

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

148:                                              ; preds = %143
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %144) #8
  br label %179

..loopexit364_crit_edge:                          ; preds = %.lr.ph706, %.preheader384
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %.thread335

.lr.ph706:                                        ; preds = %.preheader384, %.lr.ph706
  %150 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %151 = getelementptr inbounds i8, ptr %150, i64 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %151, ptr %3, ptr %4)
  %152 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  %153 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br i1 %153, label %.lr.ph706, label %..loopexit364_crit_edge

..loopexit368_crit_edge:                          ; preds = %.lr.ph567, %.preheader392
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  br label %.thread335

.lr.ph567:                                        ; preds = %.preheader392, %.lr.ph567
  %154 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %154, ptr %3, ptr %4)
  %155 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  %156 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br i1 %156, label %.lr.ph567, label %..loopexit368_crit_edge

.lr.ph507:                                        ; preds = %.lr.ph945
  %157 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZN3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  %158 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  switch i32 %158, label %.thread335 [
    i32 0, label %166
    i32 1, label %.preheader345
    i32 2, label %.preheader347
    i32 3, label %.preheader349
    i32 4, label %167
  ]

.preheader349:                                    ; preds = %.lr.ph507
  %159 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZN3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  %160 = getelementptr inbounds i8, ptr %159, i64 48
  %161 = getelementptr inbounds i8, ptr %159, i64 16
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %159, ptr %3, ptr %4)
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %160, ptr %3, ptr %4)
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %161, ptr %3, ptr %4)
  br label %.thread335

.preheader347:                                    ; preds = %.lr.ph507
  %162 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZN3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %162, ptr %3, ptr %4)
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %163, ptr %3, ptr %4)
  br label %.thread335

.preheader345:                                    ; preds = %.lr.ph507
  %164 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  %165 = getelementptr inbounds i8, ptr %164, i64 8
  call void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H30expand_associated_types_paramsES2_RKS_RNS3_10PathParamsES9_(ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(24) %165, ptr %3, ptr %4)
  br label %.thread335

166:                                              ; preds = %.lr.ph507
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 2250, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E) #9
  unreachable

167:                                              ; preds = %.lr.ph507
  %168 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZN3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %157)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %26) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS9_EE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 1 dereferenceable(1) %26) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull %25)
          to label %169 unwind label %172

169:                                              ; preds = %167
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  %170 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %170, ptr noundef nonnull @.str.8)
          to label %171 unwind label %174

171:                                              ; preds = %169
  call void @__cxa_throw(ptr nonnull %170, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
  unreachable

172:                                              ; preds = %167
  %173 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %179

174:                                              ; preds = %169
  %175 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %170) #8
  br label %179

..loopexit372_crit_edge:                          ; preds = %.lr.ph436, %.preheader400
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %57, ptr %3, ptr %4)
  br label %.thread335

.lr.ph436:                                        ; preds = %.preheader400, %.lr.ph436
  %176 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @_ZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_E(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %176, ptr %3, ptr %4)
  %177 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  %178 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESC_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br i1 %178, label %.lr.ph436, label %..loopexit372_crit_edge

179:                                              ; preds = %172, %174, %121, %140, %148, %146
  %.pn.pn = phi { ptr, i32 } [ %.pn315, %140 ], [ %.pn317, %121 ], [ %149, %148 ], [ %147, %146 ], [ %175, %174 ], [ %173, %172 ]
  resume { ptr, i32 } %.pn.pn

.thread335:                                       ; preds = %.preheader349, %.preheader347, %.preheader345, %.lr.ph507, %..loopexit338_crit_edge, %.preheader, %.lr.ph815, %.preheader375, %89, %..loopexit372_crit_edge, %.preheader396, %.preheader394, %..loopexit368_crit_edge, %.preheader390, %.preheader388, %..loopexit364_crit_edge, %.lr.ph945, %.preheader376, %.preheader378, %.preheader382, %.preheader386, %.preheader402, %.preheader404, %107, %.thread
  ret void
}

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

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

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

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

declare void @_Z40ConvertHIR_ConstantEvaluate_MethodParamsRK4SpanRKN3HIR5CrateERKNS2_10SimplePathEPKNS2_13GenericParamsESB_RSA_RNS2_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #1

declare noundef ptr @_ZNK3HIR15TypePathBinding12get_genericsEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #1

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1DC2ERKS_S4_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(280), ptr noundef) unnamed_addr #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZNK15TraitResolution31expand_associated_types_inplaceERK4SpanRN3HIR7TypeRefE5LListIPKS4_EEN1H26expand_associated_types_tpES2_RKS_RNS3_9TraitPathES9_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(144), ptr, ptr) local_unnamed_addr #4 align 2

declare void @_Z37ConvertHIR_ConstantEvaluate_ArraySizeRK4SpanRKN3HIR5CrateERKNS2_10SimplePathERNS2_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"int", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !11, i64 0}
!10 = !{!"_ZTS18TraitResolveCommon", !11, i64 0, !11, i64 8, !11, i64 16, !12, i64 24, !21, i64 72, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208}
!11 = !{!"any pointer", !7, i64 0}
!12 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !11, i64 8, !11, i64 16, !11, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !22, i64 0, !26, i64 24}
!22 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!26 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!27 = !{!"_ZTSN3HIR10SimplePathE", !28, i64 0}
!28 = !{!"_ZTS10ThinVectorI8RcStringE", !11, i64 0}
!29 = !{!30, !11, i64 232}
!30 = !{!"_ZTS15TraitResolution", !10, i64 0, !11, i64 216, !11, i64 224, !11, i64 232, !11, i64 240, !11, i64 248, !31, i64 256}
!31 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !11, i64 0, !11, i64 8, !11, i64 16}
!35 = !{!30, !11, i64 224}
!36 = !{!10, !11, i64 8}
!37 = !{!10, !11, i64 16}
!38 = !{!11, !11, i64 0}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GVNPass,GlobalOptPass,IPSCCPPass,IndVarSimplifyPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LCSSAPass,LICMPass,LoopInstSimplifyPass,LoopRotatePass,LoopSimplifyCFGPass,LoopSimplifyPass,LoopUnrollPass,SCCPPass,SROAPass,SimplifyCFGPass,TailCallElimPass