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

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

%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = 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.615 = type { i8 }
%struct.Span = type { ptr }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%class.anon.617 = type { i8 }
%class.anon.619 = type { ptr }
%class.anon.620 = type { ptr }
%class.anon.621 = type { ptr }
%class.anon.622 = type { ptr }
%class.anon.623 = type { ptr }
%class.anon.624 = type { ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.23", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"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.29", [8 x i8] }>
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%class.RcString = type { ptr }
%class.StaticTraitResolve = type { ptr, %struct.TraitResolveCommon, i32, %"class.std::map.34", %"class.std::map.34", %"class.std::map.34", %"class.std::map.39" }
%"class.std::map.34" = type { %"class.std::_Rb_tree.35" }
%"class.std::_Rb_tree.35" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, bool>, std::_Select1st<std::pair<const HIR::TypeRef, bool>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.39" = type { %"class.std::_Rb_tree.40" }
%"class.std::_Rb_tree.40" = type { %"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<std::__cxx11::basic_string<char>, std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>, std::_Select1st<std::pair<const std::__cxx11::basic_string<char>, HIR::TypeRef>>, std::less<std::__cxx11::basic_string<char>>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeParamDef" = type <{ %class.RcString, %"class.HIR::TypeRef", i8, [7 x i8] }>
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.57", %"class.std::vector.62", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.62" = type { %"struct.std::_Vector_base.63" }
%"struct.std::_Vector_base.63" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeData_ErasedType_Inner" = type { i32, %"union.HIR::TypeData_ErasedType_Inner::DataUnion" }
%"union.HIR::TypeData_ErasedType_Inner::DataUnion" = type { %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", [56 x i8] }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Alias" = type { %"struct.HIR::PathParams", %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.252" }
%"class.std::vector.252" = type { %"struct.std::_Vector_base.253" }
%"struct.std::_Vector_base.253" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.91" }
%"class.std::map.91" = type { %"class.std::_Rb_tree.92" }
%"class.std::_Rb_tree.92" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@_ZTIPKc = external constant ptr
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb = external hidden unnamed_addr constant [97 x i8], align 1
@.str.87 = external hidden unnamed_addr constant [4 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 i32 @__gxx_personality_v0(...)

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

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

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

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

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

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 #4

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 #4

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88)) #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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 noundef zeroext %3) #5 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i32, align 4
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca i8, align 1
  %10 = alloca i8, align 1
  %11 = alloca i32, align 4
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca %"struct.HIR::PathParams", align 8
  %16 = alloca i8, align 1
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.615, align 1
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca %struct.Span, align 8
  %22 = alloca %"class.std::function.0", align 8
  %23 = alloca %class.anon.617, align 1
  %24 = alloca i32, align 4
  %25 = alloca %struct.Span, align 8
  %26 = alloca %"class.std::function.0", align 8
  %27 = alloca %class.anon.619, align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca %"class.std::function.0", align 8
  %30 = alloca %class.anon.620, align 8
  %31 = alloca i32, align 4
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function.0", align 8
  %34 = alloca %class.anon.621, align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function.0", align 8
  %37 = alloca %class.anon.622, align 8
  %38 = alloca %struct.Span, align 8
  %39 = alloca %"class.std::function.0", align 8
  %40 = alloca %class.anon.623, align 8
  %41 = alloca i8, align 1
  %42 = alloca ptr, align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca i8, align 1
  %46 = alloca ptr, align 8
  %47 = alloca i8, align 1
  %48 = alloca ptr, align 8
  %49 = alloca i8, align 1
  %50 = alloca ptr, align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca i8, align 1
  %58 = alloca ptr, align 8
  %59 = alloca i8, align 1
  %60 = alloca ptr, align 8
  %61 = alloca %struct.Span, align 8
  %62 = alloca %"class.std::function.0", align 8
  %63 = alloca %class.anon.624, align 8
  %64 = alloca i8, align 1
  %65 = alloca ptr, align 8
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca i8, align 1
  %73 = alloca ptr, align 8
  store ptr %0, ptr %6, align 8, !tbaa !5
  store ptr %1, ptr %7, align 8, !tbaa !5
  store ptr %2, ptr %8, align 8, !tbaa !5
  %74 = zext i1 %3 to i8
  store i8 %74, ptr %9, align 1, !tbaa !9
  %75 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %10) #7
  store i8 1, ptr %10, align 1, !tbaa !9
  br label %76

76:                                               ; preds = %766, %4
  %77 = load i8, ptr %10, align 1, !tbaa !9, !range !11, !noundef !12
  %78 = trunc i8 %77 to i1
  br i1 %78, label %80, label %79

79:                                               ; preds = %76
  store i32 2, ptr %11, align 4
  br label %767

80:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %81 = load ptr, ptr %8, align 8, !tbaa !5
  %82 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %81)
  store ptr %82, ptr %12, align 8, !tbaa !5
  br label %83

83:                                               ; preds = %761, %80
  %84 = load i8, ptr %10, align 1, !tbaa !9, !range !11, !noundef !12
  %85 = trunc i8 %84 to i1
  br i1 %85, label %87, label %86

86:                                               ; preds = %83
  store i32 5, ptr %11, align 4
  br label %762

87:                                               ; preds = %83
  %88 = load ptr, ptr %12, align 8, !tbaa !5
  %89 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %88)
  switch i32 %89, label %91 [
    i32 0, label %90
    i32 5, label %92
    i32 7, label %386
    i32 4, label %414
    i32 1, label %609
    i32 2, label %645
    i32 3, label %667
    i32 9, label %694
    i32 6, label %716
    i32 10, label %738
  ]

90:                                               ; preds = %87
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2783, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb) #8
  unreachable

91:                                               ; preds = %87
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %762

92:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 1, ptr %13, align 1, !tbaa !9
  br label %93

93:                                               ; preds = %382, %92
  %94 = load i8, ptr %13, align 1, !tbaa !9, !range !11, !noundef !12
  %95 = trunc i8 %94 to i1
  br i1 %95, label %97, label %96

96:                                               ; preds = %93
  store i32 9, ptr %11, align 4
  br label %383

97:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %98 = load ptr, ptr %12, align 8, !tbaa !5
  %99 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %98)
  store ptr %99, ptr %14, align 8, !tbaa !5
  br label %100

100:                                              ; preds = %377, %97
  %101 = load ptr, ptr %14, align 8, !tbaa !5
  %102 = load i8, ptr %13, align 1, !tbaa !9, !range !11, !noundef !12
  %103 = trunc i8 %102 to i1
  br i1 %103, label %105, label %104

104:                                              ; preds = %100
  store i32 12, ptr %11, align 4
  br label %379

105:                                              ; preds = %100
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #7
  call void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
  call void @llvm.lifetime.start.p0(i64 1, ptr %16) #7
  %106 = load ptr, ptr %7, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %75, i64 8
  %108 = getelementptr inbounds %struct.TraitResolveCommon, ptr %107, i32 0, i32 8
  %109 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 1 dereferenceable(1) %18) #7
  %110 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %75, ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef %15, ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef %17)
          to label %111 unwind label %116

111:                                              ; preds = %105
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  %112 = zext i1 %110 to i8
  store i8 %112, ptr %16, align 1, !tbaa !9
  %113 = load i8, ptr %16, align 1, !tbaa !9, !range !11, !noundef !12
  %114 = trunc i8 %113 to i1
  br i1 %114, label %115, label %120

115:                                              ; preds = %111
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %374

116:                                              ; preds = %105
  %117 = landingpad { ptr, i32 }
          cleanup
  %118 = extractvalue { ptr, i32 } %117, 0
  store ptr %118, ptr %19, align 8
  %119 = extractvalue { ptr, i32 } %117, 1
  store i32 %119, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  br label %378

120:                                              ; preds = %111
  %121 = load ptr, ptr %14, align 8, !tbaa !5
  %122 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %121, i32 0, i32 1
  %123 = load i32, ptr %122, align 8, !tbaa !13
  %124 = icmp eq i32 %123, 65535
  br i1 %124, label %125, label %159

125:                                              ; preds = %120
  br label %126

126:                                              ; preds = %125
  %127 = getelementptr inbounds i8, ptr %75, i64 8
  %128 = getelementptr inbounds %struct.TraitResolveCommon, ptr %127, i32 0, i32 1
  %129 = load ptr, ptr %128, align 8, !tbaa !17
  %130 = icmp ne ptr %129, null
  br i1 %130, label %154, label %131

131:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #7
  %132 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %132)
          to label %133 unwind label %137

133:                                              ; preds = %131
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #7
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 1 dereferenceable(1) %23) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef %22)
          to label %134 unwind label %141

134:                                              ; preds = %133
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  %135 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %135, ptr noundef @.str)
          to label %136 unwind label %146

136:                                              ; preds = %134
  invoke void @__cxa_throw(ptr %135, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %150

137:                                              ; preds = %131
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %19, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %20, align 4
  br label %145

141:                                              ; preds = %133
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %19, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  br label %145

145:                                              ; preds = %141, %137
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #7
  br label %378

146:                                              ; preds = %134
  %147 = landingpad { ptr, i32 }
          cleanup
  %148 = extractvalue { ptr, i32 } %147, 0
  store ptr %148, ptr %19, align 8
  %149 = extractvalue { ptr, i32 } %147, 1
  store i32 %149, ptr %20, align 4
  call void @__cxa_free_exception(ptr %135) #7
  br label %378

150:                                              ; preds = %354, %341, %136
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %19, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %20, align 4
  br label %378

154:                                              ; preds = %126
  br label %155

155:                                              ; preds = %154
  br label %156

156:                                              ; preds = %155
  %157 = getelementptr inbounds %class.StaticTraitResolve, ptr %75, i32 0, i32 2
  %158 = load i32, ptr %157, align 8, !tbaa !36
  store i32 %158, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %374

159:                                              ; preds = %120
  %160 = load ptr, ptr %14, align 8, !tbaa !5
  %161 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %160, i32 0, i32 1
  %162 = load i32, ptr %161, align 8, !tbaa !13
  %163 = lshr i32 %162, 8
  %164 = icmp eq i32 %163, 0
  br i1 %164, label %165, label %250

165:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #7
  %166 = load ptr, ptr %14, align 8, !tbaa !5
  %167 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %166, i32 0, i32 1
  %168 = load i32, ptr %167, align 8, !tbaa !13
  %169 = and i32 %168, 255
  store i32 %169, ptr %24, align 4, !tbaa !47
  br label %170

170:                                              ; preds = %165
  %171 = getelementptr inbounds i8, ptr %75, i64 8
  %172 = getelementptr inbounds %struct.TraitResolveCommon, ptr %171, i32 0, i32 1
  %173 = load ptr, ptr %172, align 8, !tbaa !17
  %174 = icmp ne ptr %173, null
  br i1 %174, label %200, label %175

175:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %176 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef nonnull align 8 dereferenceable(8) %176)
          to label %177 unwind label %183

177:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %178 = getelementptr inbounds %class.anon.619, ptr %27, i32 0, i32 0
  %179 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %179, ptr %178, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %25, ptr noundef %26)
          to label %180 unwind label %187

180:                                              ; preds = %177
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  %181 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %181, ptr noundef @.str)
          to label %182 unwind label %192

182:                                              ; preds = %180
  invoke void @__cxa_throw(ptr %181, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %196

183:                                              ; preds = %175
  %184 = landingpad { ptr, i32 }
          cleanup
  %185 = extractvalue { ptr, i32 } %184, 0
  store ptr %185, ptr %19, align 8
  %186 = extractvalue { ptr, i32 } %184, 1
  store i32 %186, ptr %20, align 4
  br label %191

187:                                              ; preds = %177
  %188 = landingpad { ptr, i32 }
          cleanup
  %189 = extractvalue { ptr, i32 } %188, 0
  store ptr %189, ptr %19, align 8
  %190 = extractvalue { ptr, i32 } %188, 1
  store i32 %190, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %25) #7
  br label %191

191:                                              ; preds = %187, %183
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  br label %249

192:                                              ; preds = %180
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %19, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %20, align 4
  call void @__cxa_free_exception(ptr %181) #7
  br label %249

196:                                              ; preds = %219, %182
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %19, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %20, align 4
  br label %249

200:                                              ; preds = %170
  br label %201

201:                                              ; preds = %200
  br label %202

202:                                              ; preds = %201
  br label %203

203:                                              ; preds = %202
  %204 = load i32, ptr %24, align 4, !tbaa !47
  %205 = zext i32 %204 to i64
  %206 = getelementptr inbounds i8, ptr %75, i64 8
  %207 = getelementptr inbounds %struct.TraitResolveCommon, ptr %206, i32 0, i32 1
  %208 = load ptr, ptr %207, align 8, !tbaa !17
  %209 = getelementptr inbounds %"class.HIR::GenericParams", ptr %208, i32 0, i32 0
  %210 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %209) #7
  %211 = icmp ult i64 %205, %210
  br i1 %211, label %233, label %212

212:                                              ; preds = %203
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %213 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %214 unwind label %220

214:                                              ; preds = %212
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %215 = getelementptr inbounds %class.anon.620, ptr %30, i32 0, i32 0
  %216 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %216, ptr %215, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef %29)
          to label %217 unwind label %224

217:                                              ; preds = %214
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  %218 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %218, ptr noundef @.str)
          to label %219 unwind label %229

219:                                              ; preds = %217
  invoke void @__cxa_throw(ptr %218, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %196

220:                                              ; preds = %212
  %221 = landingpad { ptr, i32 }
          cleanup
  %222 = extractvalue { ptr, i32 } %221, 0
  store ptr %222, ptr %19, align 8
  %223 = extractvalue { ptr, i32 } %221, 1
  store i32 %223, ptr %20, align 4
  br label %228

224:                                              ; preds = %214
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %19, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br label %228

228:                                              ; preds = %224, %220
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  br label %249

229:                                              ; preds = %217
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %19, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %20, align 4
  call void @__cxa_free_exception(ptr %218) #7
  br label %249

233:                                              ; preds = %203
  br label %234

234:                                              ; preds = %233
  br label %235

235:                                              ; preds = %234
  %236 = getelementptr inbounds i8, ptr %75, i64 8
  %237 = getelementptr inbounds %struct.TraitResolveCommon, ptr %236, i32 0, i32 1
  %238 = load ptr, ptr %237, align 8, !tbaa !17
  %239 = getelementptr inbounds %"class.HIR::GenericParams", ptr %238, i32 0, i32 0
  %240 = load i32, ptr %24, align 4, !tbaa !47
  %241 = zext i32 %240 to i64
  %242 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %239, i64 noundef %241) #7
  %243 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %242, i32 0, i32 2
  %244 = load i8, ptr %243, align 8, !tbaa !48, !range !11, !noundef !12
  %245 = trunc i8 %244 to i1
  br i1 %245, label %246, label %247

246:                                              ; preds = %235
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %248

247:                                              ; preds = %235
  store i32 0, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %248

248:                                              ; preds = %247, %246
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %374

249:                                              ; preds = %229, %228, %196, %192, %191
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #7
  br label %378

250:                                              ; preds = %159
  %251 = load ptr, ptr %14, align 8, !tbaa !5
  %252 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %251, i32 0, i32 1
  %253 = load i32, ptr %252, align 8, !tbaa !13
  %254 = lshr i32 %253, 8
  %255 = icmp eq i32 %254, 1
  br i1 %255, label %256, label %341

256:                                              ; preds = %250
  call void @llvm.lifetime.start.p0(i64 4, ptr %31) #7
  %257 = load ptr, ptr %14, align 8, !tbaa !5
  %258 = getelementptr inbounds %"struct.HIR::GenericRef", ptr %257, i32 0, i32 1
  %259 = load i32, ptr %258, align 8, !tbaa !13
  %260 = and i32 %259, 255
  store i32 %260, ptr %31, align 4, !tbaa !47
  br label %261

261:                                              ; preds = %256
  %262 = getelementptr inbounds i8, ptr %75, i64 8
  %263 = getelementptr inbounds %struct.TraitResolveCommon, ptr %262, i32 0, i32 2
  %264 = load ptr, ptr %263, align 8, !tbaa !51
  %265 = icmp ne ptr %264, null
  br i1 %265, label %291, label %266

266:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #7
  %267 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %268 unwind label %274

268:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %269 = getelementptr inbounds %class.anon.621, ptr %34, i32 0, i32 0
  %270 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %270, ptr %269, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef %33)
          to label %271 unwind label %278

271:                                              ; preds = %268
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  %272 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %272, ptr noundef @.str)
          to label %273 unwind label %283

273:                                              ; preds = %271
  invoke void @__cxa_throw(ptr %272, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %287

274:                                              ; preds = %266
  %275 = landingpad { ptr, i32 }
          cleanup
  %276 = extractvalue { ptr, i32 } %275, 0
  store ptr %276, ptr %19, align 8
  %277 = extractvalue { ptr, i32 } %275, 1
  store i32 %277, ptr %20, align 4
  br label %282

278:                                              ; preds = %268
  %279 = landingpad { ptr, i32 }
          cleanup
  %280 = extractvalue { ptr, i32 } %279, 0
  store ptr %280, ptr %19, align 8
  %281 = extractvalue { ptr, i32 } %279, 1
  store i32 %281, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  br label %282

282:                                              ; preds = %278, %274
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #7
  br label %340

283:                                              ; preds = %271
  %284 = landingpad { ptr, i32 }
          cleanup
  %285 = extractvalue { ptr, i32 } %284, 0
  store ptr %285, ptr %19, align 8
  %286 = extractvalue { ptr, i32 } %284, 1
  store i32 %286, ptr %20, align 4
  call void @__cxa_free_exception(ptr %272) #7
  br label %340

287:                                              ; preds = %310, %273
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %19, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %20, align 4
  br label %340

291:                                              ; preds = %261
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  br label %294

294:                                              ; preds = %293
  %295 = load i32, ptr %31, align 4, !tbaa !47
  %296 = zext i32 %295 to i64
  %297 = getelementptr inbounds i8, ptr %75, i64 8
  %298 = getelementptr inbounds %struct.TraitResolveCommon, ptr %297, i32 0, i32 2
  %299 = load ptr, ptr %298, align 8, !tbaa !51
  %300 = getelementptr inbounds %"class.HIR::GenericParams", ptr %299, i32 0, i32 0
  %301 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %300) #7
  %302 = icmp ult i64 %296, %301
  br i1 %302, label %324, label %303

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

305:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %306 = getelementptr inbounds %class.anon.622, ptr %37, i32 0, i32 0
  %307 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %307, ptr %306, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef %36)
          to label %308 unwind label %315

308:                                              ; preds = %305
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  %309 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %309, ptr noundef @.str)
          to label %310 unwind label %320

310:                                              ; preds = %308
  invoke void @__cxa_throw(ptr %309, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %287

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

315:                                              ; preds = %305
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %19, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %319

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

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

324:                                              ; preds = %294
  br label %325

325:                                              ; preds = %324
  br label %326

326:                                              ; preds = %325
  %327 = getelementptr inbounds i8, ptr %75, i64 8
  %328 = getelementptr inbounds %struct.TraitResolveCommon, ptr %327, i32 0, i32 2
  %329 = load ptr, ptr %328, align 8, !tbaa !51
  %330 = getelementptr inbounds %"class.HIR::GenericParams", ptr %329, i32 0, i32 0
  %331 = load i32, ptr %31, align 4, !tbaa !47
  %332 = zext i32 %331 to i64
  %333 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %330, i64 noundef %332) #7
  %334 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %333, i32 0, i32 2
  %335 = load i8, ptr %334, align 8, !tbaa !48, !range !11, !noundef !12
  %336 = trunc i8 %335 to i1
  br i1 %336, label %337, label %338

337:                                              ; preds = %326
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %339

338:                                              ; preds = %326
  store i32 0, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %339

339:                                              ; preds = %338, %337
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %374

340:                                              ; preds = %320, %319, %287, %283, %282
  call void @llvm.lifetime.end.p0(i64 4, ptr %31) #7
  br label %378

341:                                              ; preds = %250
  %342 = load ptr, ptr %14, align 8, !tbaa !5
  %343 = invoke noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %342)
          to label %344 unwind label %150

344:                                              ; preds = %341
  br i1 %343, label %345, label %346

345:                                              ; preds = %344
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %374

346:                                              ; preds = %344
  br label %347

347:                                              ; preds = %346
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %348 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %349 unwind label %355

349:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %350 = getelementptr inbounds %class.anon.623, ptr %40, i32 0, i32 0
  %351 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %351, ptr %350, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %39)
          to label %352 unwind label %359

352:                                              ; preds = %349
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  %353 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %353, ptr noundef @.str)
          to label %354 unwind label %364

354:                                              ; preds = %352
  invoke void @__cxa_throw(ptr %353, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %778 unwind label %150

355:                                              ; preds = %347
  %356 = landingpad { ptr, i32 }
          cleanup
  %357 = extractvalue { ptr, i32 } %356, 0
  store ptr %357, ptr %19, align 8
  %358 = extractvalue { ptr, i32 } %356, 1
  store i32 %358, ptr %20, align 4
  br label %363

359:                                              ; preds = %349
  %360 = landingpad { ptr, i32 }
          cleanup
  %361 = extractvalue { ptr, i32 } %360, 0
  store ptr %361, ptr %19, align 8
  %362 = extractvalue { ptr, i32 } %360, 1
  store i32 %362, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  br label %363

363:                                              ; preds = %359, %355
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %378

364:                                              ; preds = %352
  %365 = landingpad { ptr, i32 }
          cleanup
  %366 = extractvalue { ptr, i32 } %365, 0
  store ptr %366, ptr %19, align 8
  %367 = extractvalue { ptr, i32 } %365, 1
  store i32 %367, ptr %20, align 4
  call void @__cxa_free_exception(ptr %353) #7
  br label %378

368:                                              ; No predecessors!
  br label %369

369:                                              ; preds = %368
  br label %370

370:                                              ; preds = %369
  br label %371

371:                                              ; preds = %370
  br label %372

372:                                              ; preds = %371
  br label %373

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

374:                                              ; preds = %373, %345, %339, %248, %156, %115
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #7
  %375 = load i32, ptr %11, align 4
  switch i32 %375, label %379 [
    i32 0, label %376
  ]

376:                                              ; preds = %374
  br label %377

377:                                              ; preds = %376
  store i8 0, ptr %13, align 1, !tbaa !9
  br label %100, !llvm.loop !52

378:                                              ; preds = %364, %363, %340, %249, %150, %146, %145, %116
  call void @llvm.lifetime.end.p0(i64 1, ptr %16) #7
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #7
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  br label %764

379:                                              ; preds = %374, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %380 = load i32, ptr %11, align 4
  switch i32 %380, label %383 [
    i32 12, label %381
  ]

381:                                              ; preds = %379
  br label %382

382:                                              ; preds = %381
  store i8 0, ptr %13, align 1, !tbaa !9
  br label %93, !llvm.loop !54

383:                                              ; preds = %379, %96
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  %384 = load i32, ptr %11, align 4
  switch i32 %384, label %762 [
    i32 9, label %385
  ]

385:                                              ; preds = %383
  br label %760

386:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #7
  store i8 1, ptr %41, align 1, !tbaa !9
  br label %387

387:                                              ; preds = %410, %386
  %388 = load i8, ptr %41, align 1, !tbaa !9, !range !11, !noundef !12
  %389 = trunc i8 %388 to i1
  br i1 %389, label %391, label %390

390:                                              ; preds = %387
  store i32 27, ptr %11, align 4
  br label %411

391:                                              ; preds = %387
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %392 = load ptr, ptr %12, align 8, !tbaa !5
  %393 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %392)
  store ptr %393, ptr %42, align 8, !tbaa !5
  br label %394

394:                                              ; preds = %406, %391
  %395 = load ptr, ptr %42, align 8, !tbaa !5
  %396 = load i8, ptr %41, align 1, !tbaa !9, !range !11, !noundef !12
  %397 = trunc i8 %396 to i1
  br i1 %397, label %399, label %398

398:                                              ; preds = %394
  store i32 30, ptr %11, align 4
  br label %407

399:                                              ; preds = %394
  %400 = load ptr, ptr %42, align 8, !tbaa !5
  %401 = getelementptr inbounds %"struct.HIR::TypeData_ErasedType", ptr %400, i32 0, i32 0
  %402 = load i8, ptr %401, align 8, !tbaa !55, !range !11, !noundef !12
  %403 = trunc i8 %402 to i1
  br i1 %403, label %404, label %405

404:                                              ; preds = %399
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %407

405:                                              ; preds = %399
  store i32 0, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %407

406:                                              ; No predecessors!
  store i8 0, ptr %41, align 1, !tbaa !9
  br label %394, !llvm.loop !67

407:                                              ; preds = %405, %404, %398
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  %408 = load i32, ptr %11, align 4
  switch i32 %408, label %411 [
    i32 30, label %409
  ]

409:                                              ; preds = %407
  br label %410

410:                                              ; preds = %409
  store i8 0, ptr %41, align 1, !tbaa !9
  br label %387, !llvm.loop !68

411:                                              ; preds = %407, %390
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #7
  %412 = load i32, ptr %11, align 4
  switch i32 %412, label %762 [
    i32 27, label %413
  ]

413:                                              ; preds = %411
  br label %760

414:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  store i8 1, ptr %43, align 1, !tbaa !9
  br label %415

415:                                              ; preds = %605, %414
  %416 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %417 = trunc i8 %416 to i1
  br i1 %417, label %419, label %418

418:                                              ; preds = %415
  store i32 33, ptr %11, align 4
  br label %606

419:                                              ; preds = %415
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %420 = load ptr, ptr %12, align 8, !tbaa !5
  %421 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %420)
  store ptr %421, ptr %44, align 8, !tbaa !5
  br label %422

422:                                              ; preds = %601, %419
  %423 = load ptr, ptr %44, align 8, !tbaa !5
  %424 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %425 = trunc i8 %424 to i1
  br i1 %425, label %427, label %426

426:                                              ; preds = %422
  store i32 36, ptr %11, align 4
  br label %602

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

428:                                              ; preds = %597, %427
  %429 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %430 = trunc i8 %429 to i1
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  store i32 39, ptr %11, align 4
  br label %598

432:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %433 = load ptr, ptr %44, align 8, !tbaa !5
  %434 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %433, i32 0, i32 1
  store ptr %434, ptr %46, align 8, !tbaa !5
  br label %435

435:                                              ; preds = %593, %432
  %436 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %437 = trunc i8 %436 to i1
  br i1 %437, label %439, label %438

438:                                              ; preds = %435
  store i32 42, ptr %11, align 4
  br label %594

439:                                              ; preds = %435
  %440 = load ptr, ptr %46, align 8, !tbaa !5
  %441 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %440)
  switch i32 %441, label %592 [
    i32 0, label %442
    i32 1, label %443
    i32 2, label %465
    i32 4, label %487
    i32 3, label %534
    i32 6, label %556
    i32 5, label %574
  ]

442:                                              ; preds = %439
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2833, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb) #8
  unreachable

443:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  store i8 1, ptr %47, align 1, !tbaa !9
  br label %444

444:                                              ; preds = %461, %443
  %445 = load i8, ptr %47, align 1, !tbaa !9, !range !11, !noundef !12
  %446 = trunc i8 %445 to i1
  br i1 %446, label %448, label %447

447:                                              ; preds = %444
  store i32 46, ptr %11, align 4
  br label %462

448:                                              ; preds = %444
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %449 = load ptr, ptr %46, align 8, !tbaa !5
  %450 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %449)
  store ptr %450, ptr %48, align 8, !tbaa !5
  br label %451

451:                                              ; preds = %457, %448
  %452 = load ptr, ptr %48, align 8, !tbaa !5
  %453 = load i8, ptr %47, align 1, !tbaa !9, !range !11, !noundef !12
  %454 = trunc i8 %453 to i1
  br i1 %454, label %456, label %455

455:                                              ; preds = %451
  store i32 49, ptr %11, align 4
  br label %458

456:                                              ; preds = %451
  store i32 0, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %458

457:                                              ; No predecessors!
  store i8 0, ptr %47, align 1, !tbaa !9
  br label %451, !llvm.loop !69

458:                                              ; preds = %456, %455
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  %459 = load i32, ptr %11, align 4
  switch i32 %459, label %462 [
    i32 49, label %460
  ]

460:                                              ; preds = %458
  br label %461

461:                                              ; preds = %460
  store i8 0, ptr %47, align 1, !tbaa !9
  br label %444, !llvm.loop !70

462:                                              ; preds = %458, %447
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  %463 = load i32, ptr %11, align 4
  switch i32 %463, label %594 [
    i32 46, label %464
  ]

464:                                              ; preds = %462
  br label %592

465:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %49) #7
  store i8 1, ptr %49, align 1, !tbaa !9
  br label %466

466:                                              ; preds = %483, %465
  %467 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %468 = trunc i8 %467 to i1
  br i1 %468, label %470, label %469

469:                                              ; preds = %466
  store i32 52, ptr %11, align 4
  br label %484

470:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %471 = load ptr, ptr %46, align 8, !tbaa !5
  %472 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %471)
  store ptr %472, ptr %50, align 8, !tbaa !5
  br label %473

473:                                              ; preds = %479, %470
  %474 = load ptr, ptr %50, align 8, !tbaa !5
  %475 = load i8, ptr %49, align 1, !tbaa !9, !range !11, !noundef !12
  %476 = trunc i8 %475 to i1
  br i1 %476, label %478, label %477

477:                                              ; preds = %473
  store i32 55, ptr %11, align 4
  br label %480

478:                                              ; preds = %473
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %480

479:                                              ; No predecessors!
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %473, !llvm.loop !71

480:                                              ; preds = %478, %477
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  %481 = load i32, ptr %11, align 4
  switch i32 %481, label %484 [
    i32 55, label %482
  ]

482:                                              ; preds = %480
  br label %483

483:                                              ; preds = %482
  store i8 0, ptr %49, align 1, !tbaa !9
  br label %466, !llvm.loop !72

484:                                              ; preds = %480, %469
  call void @llvm.lifetime.end.p0(i64 1, ptr %49) #7
  %485 = load i32, ptr %11, align 4
  switch i32 %485, label %594 [
    i32 52, label %486
  ]

486:                                              ; preds = %484
  br label %592

487:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  store i8 1, ptr %51, align 1, !tbaa !9
  br label %488

488:                                              ; preds = %530, %487
  %489 = load i8, ptr %51, align 1, !tbaa !9, !range !11, !noundef !12
  %490 = trunc i8 %489 to i1
  br i1 %490, label %492, label %491

491:                                              ; preds = %488
  store i32 58, ptr %11, align 4
  br label %531

492:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %493 = load ptr, ptr %46, align 8, !tbaa !5
  %494 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %493)
  store ptr %494, ptr %52, align 8, !tbaa !5
  br label %495

495:                                              ; preds = %526, %492
  %496 = load ptr, ptr %52, align 8, !tbaa !5
  %497 = load i8, ptr %51, align 1, !tbaa !9, !range !11, !noundef !12
  %498 = trunc i8 %497 to i1
  br i1 %498, label %500, label %499

499:                                              ; preds = %495
  store i32 61, ptr %11, align 4
  br label %527

500:                                              ; preds = %495
  %501 = load ptr, ptr %52, align 8, !tbaa !5
  %502 = load ptr, ptr %501, align 8, !tbaa !5
  %503 = getelementptr inbounds %"class.HIR::Struct", ptr %502, i32 0, i32 7
  %504 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %503, i32 0, i32 2
  %505 = load i32, ptr %504, align 8, !tbaa !73
  switch i32 %505, label %525 [
    i32 0, label %506
    i32 1, label %507
    i32 2, label %523
    i32 3, label %524
  ]

506:                                              ; preds = %500
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %527

507:                                              ; preds = %500
  %508 = load ptr, ptr %7, align 8, !tbaa !5
  %509 = load ptr, ptr %44, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %509, i32 0, i32 0
  %511 = getelementptr inbounds %"class.HIR::Path", ptr %510, i32 0, i32 0
  %512 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %511)
  %513 = getelementptr inbounds %"class.HIR::GenericPath", ptr %512, i32 0, i32 1
  %514 = getelementptr inbounds %"struct.HIR::PathParams", ptr %513, i32 0, i32 1
  %515 = load ptr, ptr %52, align 8, !tbaa !5
  %516 = load ptr, ptr %515, align 8, !tbaa !5
  %517 = getelementptr inbounds %"class.HIR::Struct", ptr %516, i32 0, i32 7
  %518 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %517, i32 0, i32 1
  %519 = load i32, ptr %518, align 4, !tbaa !106
  %520 = zext i32 %519 to i64
  %521 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %514, i64 noundef %520)
  %522 = call noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %75, ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef nonnull align 8 dereferenceable(8) %521, i1 noundef zeroext false)
  store i32 %522, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %527

523:                                              ; preds = %500
  store i32 3, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %527

524:                                              ; preds = %500
  store i32 4, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %527

525:                                              ; preds = %500
  br label %526

526:                                              ; preds = %525
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %495, !llvm.loop !107

527:                                              ; preds = %524, %523, %507, %506, %499
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  %528 = load i32, ptr %11, align 4
  switch i32 %528, label %531 [
    i32 61, label %529
  ]

529:                                              ; preds = %527
  br label %530

530:                                              ; preds = %529
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %488, !llvm.loop !108

531:                                              ; preds = %527, %491
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  %532 = load i32, ptr %11, align 4
  switch i32 %532, label %594 [
    i32 58, label %533
  ]

533:                                              ; preds = %531
  br label %592

534:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %535

535:                                              ; preds = %552, %534
  %536 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %537 = trunc i8 %536 to i1
  br i1 %537, label %539, label %538

538:                                              ; preds = %535
  store i32 65, ptr %11, align 4
  br label %553

539:                                              ; preds = %535
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %540 = load ptr, ptr %46, align 8, !tbaa !5
  %541 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %540)
  store ptr %541, ptr %54, align 8, !tbaa !5
  br label %542

542:                                              ; preds = %548, %539
  %543 = load ptr, ptr %54, align 8, !tbaa !5
  %544 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %545 = trunc i8 %544 to i1
  br i1 %545, label %547, label %546

546:                                              ; preds = %542
  store i32 68, ptr %11, align 4
  br label %549

547:                                              ; preds = %542
  store i32 2, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %549

548:                                              ; No predecessors!
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %542, !llvm.loop !109

549:                                              ; preds = %547, %546
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  %550 = load i32, ptr %11, align 4
  switch i32 %550, label %553 [
    i32 68, label %551
  ]

551:                                              ; preds = %549
  br label %552

552:                                              ; preds = %551
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %535, !llvm.loop !110

553:                                              ; preds = %549, %538
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  %554 = load i32, ptr %11, align 4
  switch i32 %554, label %594 [
    i32 65, label %555
  ]

555:                                              ; preds = %553
  br label %592

556:                                              ; preds = %439
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  store i8 1, ptr %55, align 1, !tbaa !9
  br label %557

557:                                              ; preds = %572, %556
  %558 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %559 = trunc i8 %558 to i1
  br i1 %559, label %561, label %560

560:                                              ; preds = %557
  store i32 71, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %573

561:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %562 = load ptr, ptr %46, align 8, !tbaa !5
  %563 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %562)
  store ptr %563, ptr %56, align 8, !tbaa !5
  br label %564

564:                                              ; preds = %570, %561
  %565 = load ptr, ptr %56, align 8, !tbaa !5
  %566 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %567 = trunc i8 %566 to i1
  br i1 %567, label %569, label %568

568:                                              ; preds = %564
  store i32 74, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  br label %571

569:                                              ; preds = %564
  br label %570

570:                                              ; preds = %569
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %564, !llvm.loop !111

571:                                              ; preds = %568
  br label %572

572:                                              ; preds = %571
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %557, !llvm.loop !112

573:                                              ; preds = %560
  br label %592

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

575:                                              ; preds = %590, %574
  %576 = load i8, ptr %57, align 1, !tbaa !9, !range !11, !noundef !12
  %577 = trunc i8 %576 to i1
  br i1 %577, label %579, label %578

578:                                              ; preds = %575
  store i32 77, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  br label %591

579:                                              ; preds = %575
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %580 = load ptr, ptr %46, align 8, !tbaa !5
  %581 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %580)
  store ptr %581, ptr %58, align 8, !tbaa !5
  br label %582

582:                                              ; preds = %588, %579
  %583 = load ptr, ptr %58, align 8, !tbaa !5
  %584 = load i8, ptr %57, align 1, !tbaa !9, !range !11, !noundef !12
  %585 = trunc i8 %584 to i1
  br i1 %585, label %587, label %586

586:                                              ; preds = %582
  store i32 80, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %589

587:                                              ; preds = %582
  br label %588

588:                                              ; preds = %587
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %582, !llvm.loop !113

589:                                              ; preds = %586
  br label %590

590:                                              ; preds = %589
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %575, !llvm.loop !114

591:                                              ; preds = %578
  br label %592

592:                                              ; preds = %591, %573, %555, %533, %486, %464, %439
  br label %593

593:                                              ; preds = %592
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %435, !llvm.loop !115

594:                                              ; preds = %553, %531, %484, %462, %438
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %595 = load i32, ptr %11, align 4
  switch i32 %595, label %598 [
    i32 42, label %596
  ]

596:                                              ; preds = %594
  br label %597

597:                                              ; preds = %596
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %428, !llvm.loop !116

598:                                              ; preds = %594, %431
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  %599 = load i32, ptr %11, align 4
  switch i32 %599, label %602 [
    i32 39, label %600
  ]

600:                                              ; preds = %598
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %602

601:                                              ; No predecessors!
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %422, !llvm.loop !117

602:                                              ; preds = %600, %598, %426
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  %603 = load i32, ptr %11, align 4
  switch i32 %603, label %606 [
    i32 36, label %604
  ]

604:                                              ; preds = %602
  br label %605

605:                                              ; preds = %604
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %415, !llvm.loop !118

606:                                              ; preds = %602, %418
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  %607 = load i32, ptr %11, align 4
  switch i32 %607, label %762 [
    i32 33, label %608
  ]

608:                                              ; preds = %606
  br label %760

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

610:                                              ; preds = %643, %609
  %611 = load i8, ptr %59, align 1, !tbaa !9, !range !11, !noundef !12
  %612 = trunc i8 %611 to i1
  br i1 %612, label %614, label %613

613:                                              ; preds = %610
  store i32 83, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  br label %644

614:                                              ; preds = %610
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %615 = load ptr, ptr %12, align 8, !tbaa !5
  %616 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %615)
  store ptr %616, ptr %60, align 8, !tbaa !5
  br label %617

617:                                              ; preds = %640, %614
  %618 = load ptr, ptr %60, align 8, !tbaa !5
  %619 = load i8, ptr %59, align 1, !tbaa !9, !range !11, !noundef !12
  %620 = trunc i8 %619 to i1
  br i1 %620, label %622, label %621

621:                                              ; preds = %617
  store i32 86, ptr %11, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  br label %642

622:                                              ; preds = %617
  br label %623

623:                                              ; preds = %622
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %624 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %624)
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  %625 = getelementptr inbounds %class.anon.624, ptr %63, i32 0, i32 0
  %626 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %626, ptr %625, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef %62)
          to label %627 unwind label %630

627:                                              ; preds = %623
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  %628 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %628, ptr noundef @.str)
          to label %629 unwind label %634

629:                                              ; preds = %627
  call void @__cxa_throw(ptr %628, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
  unreachable

630:                                              ; preds = %623
  %631 = landingpad { ptr, i32 }
          cleanup
  %632 = extractvalue { ptr, i32 } %631, 0
  store ptr %632, ptr %19, align 8
  %633 = extractvalue { ptr, i32 } %631, 1
  store i32 %633, ptr %20, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  br label %641

634:                                              ; preds = %627
  %635 = landingpad { ptr, i32 }
          cleanup
  %636 = extractvalue { ptr, i32 } %635, 0
  store ptr %636, ptr %19, align 8
  %637 = extractvalue { ptr, i32 } %635, 1
  store i32 %637, ptr %20, align 4
  call void @__cxa_free_exception(ptr %628) #7
  br label %641

638:                                              ; No predecessors!
  br label %639

639:                                              ; preds = %638
  br label %640

640:                                              ; preds = %639
  store i8 0, ptr %59, align 1, !tbaa !9
  br label %617, !llvm.loop !119

641:                                              ; preds = %634, %630
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #7
  br label %764

642:                                              ; preds = %621
  br label %643

643:                                              ; preds = %642
  store i8 0, ptr %59, align 1, !tbaa !9
  br label %610, !llvm.loop !120

644:                                              ; preds = %613
  br label %760

645:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %64) #7
  store i8 1, ptr %64, align 1, !tbaa !9
  br label %646

646:                                              ; preds = %663, %645
  %647 = load i8, ptr %64, align 1, !tbaa !9, !range !11, !noundef !12
  %648 = trunc i8 %647 to i1
  br i1 %648, label %650, label %649

649:                                              ; preds = %646
  store i32 91, ptr %11, align 4
  br label %664

650:                                              ; preds = %646
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %651 = load ptr, ptr %12, align 8, !tbaa !5
  %652 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %651)
  store ptr %652, ptr %65, align 8, !tbaa !5
  br label %653

653:                                              ; preds = %659, %650
  %654 = load ptr, ptr %65, align 8, !tbaa !5
  %655 = load i8, ptr %64, align 1, !tbaa !9, !range !11, !noundef !12
  %656 = trunc i8 %655 to i1
  br i1 %656, label %658, label %657

657:                                              ; preds = %653
  store i32 94, ptr %11, align 4
  br label %660

658:                                              ; preds = %653
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %660

659:                                              ; No predecessors!
  store i8 0, ptr %64, align 1, !tbaa !9
  br label %653, !llvm.loop !121

660:                                              ; preds = %658, %657
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  %661 = load i32, ptr %11, align 4
  switch i32 %661, label %664 [
    i32 94, label %662
  ]

662:                                              ; preds = %660
  br label %663

663:                                              ; preds = %662
  store i8 0, ptr %64, align 1, !tbaa !9
  br label %646, !llvm.loop !122

664:                                              ; preds = %660, %649
  call void @llvm.lifetime.end.p0(i64 1, ptr %64) #7
  %665 = load i32, ptr %11, align 4
  switch i32 %665, label %762 [
    i32 91, label %666
  ]

666:                                              ; preds = %664
  br label %760

667:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #7
  store i8 1, ptr %66, align 1, !tbaa !9
  br label %668

668:                                              ; preds = %690, %667
  %669 = load i8, ptr %66, align 1, !tbaa !9, !range !11, !noundef !12
  %670 = trunc i8 %669 to i1
  br i1 %670, label %672, label %671

671:                                              ; preds = %668
  store i32 97, ptr %11, align 4
  br label %691

672:                                              ; preds = %668
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %673 = load ptr, ptr %12, align 8, !tbaa !5
  %674 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %673)
  store ptr %674, ptr %67, align 8, !tbaa !5
  br label %675

675:                                              ; preds = %686, %672
  %676 = load ptr, ptr %67, align 8, !tbaa !5
  %677 = load i8, ptr %66, align 1, !tbaa !9, !range !11, !noundef !12
  %678 = trunc i8 %677 to i1
  br i1 %678, label %680, label %679

679:                                              ; preds = %675
  store i32 100, ptr %11, align 4
  br label %687

680:                                              ; preds = %675
  %681 = load ptr, ptr %67, align 8, !tbaa !5
  %682 = load i32, ptr %681, align 4, !tbaa !123
  %683 = icmp eq i32 %682, 16
  br i1 %683, label %684, label %685

684:                                              ; preds = %680
  store i32 3, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %687

685:                                              ; preds = %680
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %687

686:                                              ; No predecessors!
  store i8 0, ptr %66, align 1, !tbaa !9
  br label %675, !llvm.loop !125

687:                                              ; preds = %685, %684, %679
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  %688 = load i32, ptr %11, align 4
  switch i32 %688, label %691 [
    i32 100, label %689
  ]

689:                                              ; preds = %687
  br label %690

690:                                              ; preds = %689
  store i8 0, ptr %66, align 1, !tbaa !9
  br label %668, !llvm.loop !126

691:                                              ; preds = %687, %671
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #7
  %692 = load i32, ptr %11, align 4
  switch i32 %692, label %762 [
    i32 97, label %693
  ]

693:                                              ; preds = %691
  br label %760

694:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #7
  store i8 1, ptr %68, align 1, !tbaa !9
  br label %695

695:                                              ; preds = %712, %694
  %696 = load i8, ptr %68, align 1, !tbaa !9, !range !11, !noundef !12
  %697 = trunc i8 %696 to i1
  br i1 %697, label %699, label %698

698:                                              ; preds = %695
  store i32 103, ptr %11, align 4
  br label %713

699:                                              ; preds = %695
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #7
  %700 = load ptr, ptr %12, align 8, !tbaa !5
  %701 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %700)
  store ptr %701, ptr %69, align 8, !tbaa !5
  br label %702

702:                                              ; preds = %708, %699
  %703 = load ptr, ptr %69, align 8, !tbaa !5
  %704 = load i8, ptr %68, align 1, !tbaa !9, !range !11, !noundef !12
  %705 = trunc i8 %704 to i1
  br i1 %705, label %707, label %706

706:                                              ; preds = %702
  store i32 106, ptr %11, align 4
  br label %709

707:                                              ; preds = %702
  store i32 3, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %709

708:                                              ; No predecessors!
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %702, !llvm.loop !127

709:                                              ; preds = %707, %706
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #7
  %710 = load i32, ptr %11, align 4
  switch i32 %710, label %713 [
    i32 106, label %711
  ]

711:                                              ; preds = %709
  br label %712

712:                                              ; preds = %711
  store i8 0, ptr %68, align 1, !tbaa !9
  br label %695, !llvm.loop !128

713:                                              ; preds = %709, %698
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #7
  %714 = load i32, ptr %11, align 4
  switch i32 %714, label %762 [
    i32 103, label %715
  ]

715:                                              ; preds = %713
  br label %760

716:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #7
  store i8 1, ptr %70, align 1, !tbaa !9
  br label %717

717:                                              ; preds = %734, %716
  %718 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %719 = trunc i8 %718 to i1
  br i1 %719, label %721, label %720

720:                                              ; preds = %717
  store i32 109, ptr %11, align 4
  br label %735

721:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %722 = load ptr, ptr %12, align 8, !tbaa !5
  %723 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %722)
  store ptr %723, ptr %71, align 8, !tbaa !5
  br label %724

724:                                              ; preds = %730, %721
  %725 = load ptr, ptr %71, align 8, !tbaa !5
  %726 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %727 = trunc i8 %726 to i1
  br i1 %727, label %729, label %728

728:                                              ; preds = %724
  store i32 112, ptr %11, align 4
  br label %731

729:                                              ; preds = %724
  store i32 4, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %731

730:                                              ; No predecessors!
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %724, !llvm.loop !129

731:                                              ; preds = %729, %728
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  %732 = load i32, ptr %11, align 4
  switch i32 %732, label %735 [
    i32 112, label %733
  ]

733:                                              ; preds = %731
  br label %734

734:                                              ; preds = %733
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %717, !llvm.loop !130

735:                                              ; preds = %731, %720
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  %736 = load i32, ptr %11, align 4
  switch i32 %736, label %762 [
    i32 109, label %737
  ]

737:                                              ; preds = %735
  br label %760

738:                                              ; preds = %87
  call void @llvm.lifetime.start.p0(i64 1, ptr %72) #7
  store i8 1, ptr %72, align 1, !tbaa !9
  br label %739

739:                                              ; preds = %756, %738
  %740 = load i8, ptr %72, align 1, !tbaa !9, !range !11, !noundef !12
  %741 = trunc i8 %740 to i1
  br i1 %741, label %743, label %742

742:                                              ; preds = %739
  store i32 115, ptr %11, align 4
  br label %757

743:                                              ; preds = %739
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #7
  %744 = load ptr, ptr %12, align 8, !tbaa !5
  %745 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %744)
  store ptr %745, ptr %73, align 8, !tbaa !5
  br label %746

746:                                              ; preds = %752, %743
  %747 = load ptr, ptr %73, align 8, !tbaa !5
  %748 = load i8, ptr %72, align 1, !tbaa !9, !range !11, !noundef !12
  %749 = trunc i8 %748 to i1
  br i1 %749, label %751, label %750

750:                                              ; preds = %746
  store i32 118, ptr %11, align 4
  br label %753

751:                                              ; preds = %746
  store i32 1, ptr %5, align 4
  store i32 1, ptr %11, align 4
  br label %753

752:                                              ; No predecessors!
  store i8 0, ptr %72, align 1, !tbaa !9
  br label %746, !llvm.loop !131

753:                                              ; preds = %751, %750
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #7
  %754 = load i32, ptr %11, align 4
  switch i32 %754, label %757 [
    i32 118, label %755
  ]

755:                                              ; preds = %753
  br label %756

756:                                              ; preds = %755
  store i8 0, ptr %72, align 1, !tbaa !9
  br label %739, !llvm.loop !132

757:                                              ; preds = %753, %742
  call void @llvm.lifetime.end.p0(i64 1, ptr %72) #7
  %758 = load i32, ptr %11, align 4
  switch i32 %758, label %762 [
    i32 115, label %759
  ]

759:                                              ; preds = %757
  br label %760

760:                                              ; preds = %759, %737, %715, %693, %666, %644, %608, %413, %385
  br label %761

761:                                              ; preds = %760
  store i8 0, ptr %10, align 1, !tbaa !9
  br label %83, !llvm.loop !133

762:                                              ; preds = %757, %735, %713, %691, %664, %606, %411, %383, %91, %86
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  %763 = load i32, ptr %11, align 4
  switch i32 %763, label %767 [
    i32 5, label %765
  ]

764:                                              ; preds = %641, %378
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  br label %773

765:                                              ; preds = %762
  br label %766

766:                                              ; preds = %765
  store i8 0, ptr %10, align 1, !tbaa !9
  br label %76, !llvm.loop !134

767:                                              ; preds = %762, %79
  call void @llvm.lifetime.end.p0(i64 1, ptr %10) #7
  %768 = load i32, ptr %11, align 4
  switch i32 %768, label %778 [
    i32 2, label %769
    i32 1, label %771
  ]

769:                                              ; preds = %767
  %770 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str.87, ptr %770, align 16, !tbaa !5
  call void @__cxa_throw(ptr %770, ptr @_ZTIPKc, ptr null) #9
  unreachable

771:                                              ; preds = %767
  %772 = load i32, ptr %5, align 4
  ret i32 %772

773:                                              ; preds = %764
  %774 = load ptr, ptr %19, align 8
  %775 = load i32, ptr %20, align 4
  %776 = insertvalue { ptr, i32 } poison, ptr %774, 0
  %777 = insertvalue { ptr, i32 } %776, i32 %775, 1
  resume { ptr, i32 } %777

778:                                              ; preds = %767, %354, %310, %273, %219, %182, %136
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_0vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_1vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) 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 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 #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 = { 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 #5 = { 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 #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 }
attributes #8 = { noreturn nounwind }
attributes #9 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = !{!14, !16, i64 8}
!14 = !{!"_ZTSN3HIR10GenericRefE", !15, i64 0, !16, i64 8}
!15 = !{!"_ZTS8RcString", !6, i64 0}
!16 = !{!"int", !7, i64 0}
!17 = !{!18, !6, i64 8}
!18 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !19, i64 24, !28, i64 72, !34, i64 104, !34, i64 112, !34, i64 120, !34, i64 128, !34, i64 136, !34, i64 144, !34, i64 152, !34, i64 160, !34, i64 168, !34, i64 176, !34, i64 184, !34, i64 192, !34, i64 200, !34, i64 208}
!19 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !20, i64 0}
!20 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !21, i64 0}
!21 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !22, i64 0, !24, i64 8}
!22 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !23, i64 0}
!23 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!24 = !{!"_ZTSSt15_Rb_tree_header", !25, i64 0, !27, i64 32}
!25 = !{!"_ZTSSt18_Rb_tree_node_base", !26, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!26 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!27 = !{!"long", !7, i64 0}
!28 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !29, i64 0, !33, i64 24}
!29 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!34 = !{!"_ZTSN3HIR10SimplePathE", !35, i64 0}
!35 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!36 = !{!37, !38, i64 224}
!37 = !{!"_ZTS18StaticTraitResolve", !18, i64 8, !38, i64 224, !39, i64 232, !39, i64 280, !39, i64 328, !42, i64 376}
!38 = !{!"_ZTS12MetadataType", !7, i64 0}
!39 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !22, i64 0, !24, i64 8}
!42 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !43, i64 0}
!43 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !44, i64 0}
!44 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !45, i64 0, !24, i64 8}
!45 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !46, i64 0}
!46 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!47 = !{!16, !16, i64 0}
!48 = !{!49, !10, i64 16}
!49 = !{!"_ZTSN3HIR12TypeParamDefE", !15, i64 0, !50, i64 8, !10, i64 16}
!50 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!51 = !{!18, !6, i64 16}
!52 = distinct !{!52, !53}
!53 = !{!"llvm.loop.mustprogress"}
!54 = distinct !{!54, !53}
!55 = !{!56, !10, i64 0}
!56 = !{!"_ZTSN3HIR19TypeData_ErasedTypeE", !10, i64 0, !57, i64 8, !61, i64 32, !65, i64 56}
!57 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!61 = !{!"_ZTSSt6vectorIN3HIR11LifetimeRefESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSN3HIR25TypeData_ErasedType_InnerE", !66, i64 0, !7, i64 8}
!66 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner3TagE", !7, i64 0}
!67 = distinct !{!67, !53}
!68 = distinct !{!68, !53}
!69 = distinct !{!69, !53}
!70 = distinct !{!70, !53}
!71 = distinct !{!71, !53}
!72 = distinct !{!72, !53}
!73 = !{!74, !102, i64 208}
!74 = !{!"_ZTSN3HIR6StructE", !75, i64 0, !92, i64 96, !93, i64 104, !16, i64 136, !16, i64 140, !95, i64 144, !101, i64 200, !105, i64 248}
!75 = !{!"_ZTSN3HIR13GenericParamsE", !76, i64 0, !80, i64 24, !84, i64 48, !88, i64 72}
!76 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !77, i64 0}
!77 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !78, i64 0}
!78 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!80 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!88 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !89, i64 0}
!89 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !90, i64 0}
!90 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !91, i64 0}
!91 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!92 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!93 = !{!"_ZTSN3HIR6Struct4DataE", !94, i64 0, !7, i64 8}
!94 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!95 = !{!"_ZTSN3HIR13TraitMarkingsE", !10, i64 0, !10, i64 1, !10, i64 2, !96, i64 8}
!96 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !97, i64 0}
!97 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !98, i64 0}
!98 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !99, i64 0, !24, i64 8}
!99 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !100, i64 0}
!100 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!101 = !{!"_ZTSN3HIR14StructMarkingsE", !10, i64 0, !16, i64 4, !102, i64 8, !16, i64 12, !103, i64 16, !16, i64 20, !16, i64 24, !10, i64 28, !10, i64 29, !104, i64 32}
!102 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!103 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!104 = !{!"_ZTS4U128", !27, i64 0, !27, i64 8}
!105 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!106 = !{!74, !16, i64 204}
!107 = distinct !{!107, !53}
!108 = distinct !{!108, !53}
!109 = distinct !{!109, !53}
!110 = distinct !{!110, !53}
!111 = distinct !{!111, !53}
!112 = distinct !{!112, !53}
!113 = distinct !{!113, !53}
!114 = distinct !{!114, !53}
!115 = distinct !{!115, !53}
!116 = distinct !{!116, !53}
!117 = distinct !{!117, !53}
!118 = distinct !{!118, !53}
!119 = distinct !{!119, !53}
!120 = distinct !{!120, !53}
!121 = distinct !{!121, !53}
!122 = distinct !{!122, !53}
!123 = !{!124, !124, i64 0}
!124 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!125 = distinct !{!125, !53}
!126 = distinct !{!126, !53}
!127 = distinct !{!127, !53}
!128 = distinct !{!128, !53}
!129 = distinct !{!129, !53}
!130 = distinct !{!130, !53}
!131 = distinct !{!131, !53}
!132 = distinct !{!132, !53}
!133 = distinct !{!133, !53}
!134 = distinct !{!134, !53}


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

%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = 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.615 = type { i8 }
%struct.Span = type { ptr }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%class.anon.617 = type { i8 }
%class.anon.619 = type { ptr }
%class.anon.620 = type { ptr }
%class.anon.621 = type { ptr }
%class.anon.622 = type { ptr }
%class.anon.623 = type { ptr }
%class.anon.624 = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb = external hidden unnamed_addr constant [97 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 i32 @__gxx_personality_v0(...)

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

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

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

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

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

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 #4

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 #4

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #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: noreturn nounwind
declare void @__assert_fail(ptr noundef, ptr noundef, i32 noundef, ptr noundef) local_unnamed_addr #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, i1 zeroext %3) local_unnamed_addr #5 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %"struct.HIR::PathParams", align 8
  %6 = alloca %"class.std::function", align 8
  %7 = alloca %class.anon.615, align 1
  %8 = alloca %struct.Span, align 8
  %9 = alloca %"class.std::function.0", align 8
  %10 = alloca %class.anon.617, align 1
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function.0", align 8
  %13 = alloca %class.anon.619, align 8
  %14 = alloca %struct.Span, align 8
  %15 = alloca %"class.std::function.0", align 8
  %16 = alloca %class.anon.620, align 8
  %17 = alloca %struct.Span, align 8
  %18 = alloca %"class.std::function.0", align 8
  %19 = alloca %class.anon.621, align 8
  %20 = alloca %struct.Span, align 8
  %21 = alloca %"class.std::function.0", align 8
  %22 = alloca %class.anon.622, align 8
  %23 = alloca %struct.Span, align 8
  %24 = alloca %"class.std::function.0", align 8
  %25 = alloca %class.anon.623, align 8
  %26 = alloca %struct.Span, align 8
  %27 = alloca %"class.std::function.0", align 8
  %28 = alloca %class.anon.624, align 8
  br label %tailrecurse

tailrecurse:                                      ; preds = %.split, %4
  %.tr434 = phi ptr [ %2, %4 ], [ %177, %.split ]
  %29 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.tr434)
  %30 = tail call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  switch i32 %30, label %.thread284 [
    i32 0, label %31
    i32 5, label %32
    i32 7, label %157
    i32 4, label %.lr.ph.split
    i32 1, label %179
    i32 2, label %188
    i32 3, label %190
    i32 9, label %194
    i32 6, label %196
    i32 10, label %198
  ]

31:                                               ; preds = %tailrecurse
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2783, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb) #7
  unreachable

32:                                               ; preds = %tailrecurse
  %33 = tail call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %5) #8
  call void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %5)
  %34 = getelementptr inbounds i8, ptr %0, i64 136
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %7) #8
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #8
  %35 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve17find_impl__boundsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull %5, ptr noundef nonnull align 8 dereferenceable(8) %.tr434, ptr noundef nonnull %6)
          to label %36 unwind label %37

36:                                               ; preds = %32
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br i1 %35, label %155, label %39

37:                                               ; preds = %32
  %38 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %7) #8
  br label %156

39:                                               ; preds = %36
  %40 = getelementptr inbounds i8, ptr %33, i64 8
  %41 = load i32, ptr %40, align 8, !tbaa !5
  %42 = icmp eq i32 %41, 65535
  br i1 %42, label %43, label %62

43:                                               ; preds = %39
  %44 = getelementptr inbounds i8, ptr %0, i64 16
  %45 = load ptr, ptr %44, align 8, !tbaa !12
  %.not257 = icmp eq ptr %45, null
  br i1 %.not257, label %46, label %59

46:                                               ; preds = %43
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %47 unwind label %50

47:                                               ; preds = %46
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %10) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 1 dereferenceable(1) %10) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %9)
          to label %48 unwind label %52

48:                                               ; preds = %47
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  %49 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %49, ptr noundef nonnull @.str)
          to label %.invoke unwind label %55

50:                                               ; preds = %46
  %51 = landingpad { ptr, i32 }
          cleanup
  br label %54

52:                                               ; preds = %47
  %53 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %10) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  br label %54

54:                                               ; preds = %52, %50
  %.pn258 = phi { ptr, i32 } [ %53, %52 ], [ %51, %50 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %156

55:                                               ; preds = %48
  %56 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %49) #8
  br label %156

57:                                               ; preds = %.invoke
  %58 = landingpad { ptr, i32 }
          cleanup
  br label %156

59:                                               ; preds = %43
  %60 = getelementptr inbounds i8, ptr %0, i64 224
  %61 = load i32, ptr %60, align 8, !tbaa !31
  br label %155

62:                                               ; preds = %39
  %63 = icmp ult i32 %41, 256
  br i1 %63, label %64, label %101

64:                                               ; preds = %62
  %65 = getelementptr inbounds i8, ptr %0, i64 16
  %66 = load ptr, ptr %65, align 8, !tbaa !12
  %.not250 = icmp eq ptr %66, null
  br i1 %.not250, label %67, label %80

67:                                               ; preds = %64
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %68 unwind label %71

68:                                               ; preds = %67
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  store ptr %.tr434, ptr %13, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %69 unwind label %73

69:                                               ; preds = %68
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, 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
  %70 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %70, ptr noundef nonnull @.str)
          to label %.invoke429 unwind label %76

71:                                               ; preds = %67
  %72 = landingpad { ptr, i32 }
          cleanup
  br label %75

73:                                               ; preds = %68
  %74 = 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 8, ptr nonnull %13) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br label %75

75:                                               ; preds = %73, %71
  %.pn251 = phi { ptr, i32 } [ %74, %73 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  br label %156

76:                                               ; preds = %69
  %77 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %70) #8
  br label %156

78:                                               ; preds = %.invoke429
  %79 = landingpad { ptr, i32 }
          cleanup
  br label %156

80:                                               ; preds = %64
  %81 = zext nneg i32 %41 to i64
  %82 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %66) #8
  %83 = icmp ugt i64 %82, %81
  br i1 %83, label %96, label %84

84:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %85 unwind label %89

85:                                               ; preds = %84
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store ptr %.tr434, ptr %16, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull %15)
          to label %86 unwind label %91

86:                                               ; preds = %85
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  %87 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %87, ptr noundef nonnull @.str)
          to label %.invoke429 unwind label %94

.invoke429:                                       ; preds = %69, %86
  %88 = phi ptr [ %87, %86 ], [ %70, %69 ]
  invoke void @__cxa_throw(ptr nonnull %88, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont430 unwind label %78

.cont430:                                         ; preds = %.invoke429
  unreachable

89:                                               ; preds = %84
  %90 = landingpad { ptr, i32 }
          cleanup
  br label %93

91:                                               ; preds = %85
  %92 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  br label %93

93:                                               ; preds = %91, %89
  %.pn253 = phi { ptr, i32 } [ %92, %91 ], [ %90, %89 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %156

94:                                               ; preds = %86
  %95 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %87) #8
  br label %156

96:                                               ; preds = %80
  %97 = load ptr, ptr %65, align 8, !tbaa !12
  %98 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %97, i64 noundef %81) #8
  %99 = getelementptr inbounds i8, ptr %98, i64 16
  %100 = load i8, ptr %99, align 8, !tbaa !43, !range !47, !noundef !48
  %. = zext nneg i8 %100 to i32
  br label %155

101:                                              ; preds = %62
  %.mask = and i32 %41, -256
  %102 = icmp eq i32 %.mask, 256
  br i1 %102, label %103, label %141

103:                                              ; preds = %101
  %104 = getelementptr inbounds i8, ptr %0, i64 24
  %105 = load ptr, ptr %104, align 8, !tbaa !49
  %.not = icmp eq ptr %105, null
  br i1 %.not, label %106, label %119

106:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %107 unwind label %110

107:                                              ; preds = %106
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  store ptr %.tr434, ptr %19, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull %18)
          to label %108 unwind label %112

108:                                              ; preds = %107
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, 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
  %109 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %109, ptr noundef nonnull @.str)
          to label %.invoke431 unwind label %115

110:                                              ; preds = %106
  %111 = landingpad { ptr, i32 }
          cleanup
  br label %114

112:                                              ; preds = %107
  %113 = 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 8, ptr nonnull %19) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %114

114:                                              ; preds = %112, %110
  %.pn244 = phi { ptr, i32 } [ %113, %112 ], [ %111, %110 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  br label %156

115:                                              ; preds = %108
  %116 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %109) #8
  br label %156

117:                                              ; preds = %.invoke431
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %156

119:                                              ; preds = %103
  %120 = and i32 %41, 255
  %121 = zext nneg i32 %120 to i64
  %122 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %105) #8
  %123 = icmp ugt i64 %122, %121
  br i1 %123, label %136, label %124

124:                                              ; preds = %119
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %125 unwind label %129

125:                                              ; preds = %124
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  store ptr %.tr434, ptr %22, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull %21)
          to label %126 unwind label %131

126:                                              ; preds = %125
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  %127 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %127, ptr noundef nonnull @.str)
          to label %.invoke431 unwind label %134

.invoke431:                                       ; preds = %108, %126
  %128 = phi ptr [ %127, %126 ], [ %109, %108 ]
  invoke void @__cxa_throw(ptr nonnull %128, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont432 unwind label %117

.cont432:                                         ; preds = %.invoke431
  unreachable

129:                                              ; preds = %124
  %130 = landingpad { ptr, i32 }
          cleanup
  br label %133

131:                                              ; preds = %125
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br label %133

133:                                              ; preds = %131, %129
  %.pn246 = phi { ptr, i32 } [ %132, %131 ], [ %130, %129 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %156

134:                                              ; preds = %126
  %135 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %127) #8
  br label %156

136:                                              ; preds = %119
  %137 = load ptr, ptr %104, align 8, !tbaa !49
  %138 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %137, i64 noundef %121) #8
  %139 = getelementptr inbounds i8, ptr %138, i64 16
  %140 = load i8, ptr %139, align 8, !tbaa !43, !range !47, !noundef !48
  %.263 = zext nneg i8 %140 to i32
  br label %155

141:                                              ; preds = %101
  %142 = call noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %33)
  br i1 %142, label %155, label %143

143:                                              ; preds = %141
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %144 unwind label %148

144:                                              ; preds = %143
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  store ptr %.tr434, ptr %25, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull %24)
          to label %145 unwind label %150

145:                                              ; preds = %144
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  %146 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %146, ptr noundef nonnull @.str)
          to label %.invoke unwind label %153

.invoke:                                          ; preds = %48, %145
  %147 = phi ptr [ %146, %145 ], [ %49, %48 ]
  invoke void @__cxa_throw(ptr nonnull %147, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont unwind label %57

.cont:                                            ; preds = %.invoke
  unreachable

148:                                              ; preds = %143
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %152

150:                                              ; preds = %144
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %152

152:                                              ; preds = %150, %148
  %.pn242 = phi { ptr, i32 } [ %151, %150 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %156

153:                                              ; preds = %145
  %154 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %146) #8
  br label %156

155:                                              ; preds = %141, %36, %136, %96, %59
  %.6 = phi i32 [ %61, %59 ], [ %., %96 ], [ %.263, %136 ], [ 1, %36 ], [ 1, %141 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  br label %.thread284

156:                                              ; preds = %114, %115, %117, %133, %134, %75, %76, %78, %93, %94, %153, %152, %57, %55, %54, %37
  %.pn260 = phi { ptr, i32 } [ %58, %57 ], [ %56, %55 ], [ %.pn258, %54 ], [ %154, %153 ], [ %.pn242, %152 ], [ %38, %37 ], [ %79, %78 ], [ %95, %94 ], [ %.pn253, %93 ], [ %77, %76 ], [ %.pn251, %75 ], [ %118, %117 ], [ %135, %134 ], [ %.pn246, %133 ], [ %116, %115 ], [ %.pn244, %114 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %5) #8
  br label %200

157:                                              ; preds = %tailrecurse
  %158 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  %159 = load i8, ptr %158, align 8, !tbaa !50, !range !47, !noundef !48
  %.10 = zext nneg i8 %159 to i32
  br label %.thread284

.lr.ph.split:                                     ; preds = %tailrecurse
  %160 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  %161 = getelementptr inbounds i8, ptr %160, i64 88
  %162 = tail call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  switch i32 %162, label %.thread284 [
    i32 0, label %.split362
    i32 1, label %.split364
    i32 2, label %.split367
    i32 4, label %.preheader.split
    i32 3, label %.split370
    i32 6, label %.preheader300.split
    i32 5, label %.preheader302.split
  ]

.preheader302.split:                              ; preds = %.lr.ph.split
  %163 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br label %.thread284

.preheader300.split:                              ; preds = %.lr.ph.split
  %164 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br label %.thread284

.preheader.split:                                 ; preds = %.lr.ph.split
  %165 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  %166 = load ptr, ptr %165, align 8
  %167 = getelementptr inbounds i8, ptr %166, i64 208
  %168 = load i32, ptr %167, align 8, !tbaa !62
  switch i32 %168, label %.thread284 [
    i32 3, label %.thread284.loopexit428
    i32 1, label %.split
    i32 2, label %.thread284.loopexit422
  ], !llvm.loop !95

.split362:                                        ; preds = %.lr.ph.split
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2833, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEb) #7
  unreachable

.split364:                                        ; preds = %.lr.ph.split
  %169 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br label %.thread284

.split367:                                        ; preds = %.lr.ph.split
  %170 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br label %.thread284

.split:                                           ; preds = %.preheader.split
  %171 = tail call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %160)
  %172 = getelementptr inbounds i8, ptr %171, i64 16
  %173 = load ptr, ptr %165, align 8, !tbaa !42
  %174 = getelementptr inbounds i8, ptr %173, i64 204
  %175 = load i32, ptr %174, align 4, !tbaa !97
  %176 = zext i32 %175 to i64
  %177 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %172, i64 noundef %176)
  br label %tailrecurse

.split370:                                        ; preds = %.lr.ph.split
  %178 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %161)
  br label %.thread284

179:                                              ; preds = %tailrecurse
  %180 = tail call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  call void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %1)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  store ptr %.tr434, ptr %28, align 8, !tbaa !42
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull %27)
          to label %181 unwind label %184

181:                                              ; preds = %179
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  %182 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %182, ptr noundef nonnull @.str)
          to label %183 unwind label %186

183:                                              ; preds = %181
  call void @__cxa_throw(ptr nonnull %182, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
  unreachable

184:                                              ; preds = %179
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %200

186:                                              ; preds = %181
  %187 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %182) #8
  br label %200

188:                                              ; preds = %tailrecurse
  %189 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  br label %.thread284

190:                                              ; preds = %tailrecurse
  %191 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  %192 = load i32, ptr %191, align 4, !tbaa !98
  %193 = icmp eq i32 %192, 16
  %.36 = select i1 %193, i32 3, i32 1
  br label %.thread284

194:                                              ; preds = %tailrecurse
  %195 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  br label %.thread284

196:                                              ; preds = %tailrecurse
  %197 = tail call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  br label %.thread284

198:                                              ; preds = %tailrecurse
  %199 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %29)
  br label %.thread284

200:                                              ; preds = %184, %186, %156
  %.pn.pn = phi { ptr, i32 } [ %.pn260, %156 ], [ %187, %186 ], [ %185, %184 ]
  resume { ptr, i32 } %.pn.pn

.thread284.loopexit422:                           ; preds = %.preheader.split
  br label %.thread284

.thread284.loopexit428:                           ; preds = %.preheader.split
  br label %.thread284

.thread284:                                       ; preds = %.preheader.split, %.thread284.loopexit428, %.preheader302.split, %.preheader300.split, %.thread284.loopexit422, %.lr.ph.split, %.split364, %.split367, %.split370, %tailrecurse, %155, %157, %188, %190, %194, %196, %198
  %.48.ph = phi i32 [ 1, %tailrecurse ], [ %.6, %155 ], [ %.10, %157 ], [ 1, %188 ], [ %.36, %190 ], [ 3, %194 ], [ 4, %196 ], [ 1, %198 ], [ 0, %.split364 ], [ 1, %.split367 ], [ 2, %.split370 ], [ 1, %.lr.ph.split ], [ 1, %.preheader300.split ], [ 1, %.preheader302.split ], [ 3, %.thread284.loopexit422 ], [ 4, %.thread284.loopexit428 ], [ 1, %.preheader.split ]
  ret i32 %.48.ph
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_0vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_1vEEOT_"(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 hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #3 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve13metadata_typeERK4SpanRKN3HIR7TypeRefEbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) 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 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 #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 = { 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 #5 = { 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 #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 = { noreturn nounwind }
attributes #8 = { nounwind }
attributes #9 = { 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, !11, i64 8}
!6 = !{!"_ZTSN3HIR10GenericRefE", !7, i64 0, !11, i64 8}
!7 = !{!"_ZTS8RcString", !8, i64 0}
!8 = !{!"any pointer", !9, i64 0}
!9 = !{!"omnipotent char", !10, i64 0}
!10 = !{!"Simple C++ TBAA"}
!11 = !{!"int", !9, i64 0}
!12 = !{!13, !8, i64 8}
!13 = !{!"_ZTS18TraitResolveCommon", !8, i64 0, !8, i64 8, !8, i64 16, !14, i64 24, !23, i64 72, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208}
!14 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !8, i64 8, !8, i64 16, !8, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !9, i64 0}
!22 = !{!"long", !9, i64 0}
!23 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!28 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!29 = !{!"_ZTSN3HIR10SimplePathE", !30, i64 0}
!30 = !{!"_ZTS10ThinVectorI8RcStringE", !8, i64 0}
!31 = !{!32, !33, i64 224}
!32 = !{!"_ZTS18StaticTraitResolve", !13, i64 8, !33, i64 224, !34, i64 232, !34, i64 280, !34, i64 328, !37, i64 376}
!33 = !{!"_ZTS12MetadataType", !9, i64 0}
!34 = !{!"_ZTSSt3mapIN3HIR7TypeRefEbSt4lessIS1_ESaISt4pairIKS1_bEEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_bESt10_Select1stIS4_ESt4lessIS1_ESaIS4_EE13_Rb_tree_implIS8_Lb1EEE", !17, i64 0, !19, i64 8}
!37 = !{!"_ZTSSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEN3HIR7TypeRefESt4lessIS5_ESaISt4pairIKS5_S7_EEE", !38, i64 0}
!38 = !{!"_ZTSSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE", !39, i64 0}
!39 = !{!"_ZTSNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_N3HIR7TypeRefEESt10_Select1stISA_ESt4lessIS5_ESaISA_EE13_Rb_tree_implISE_Lb1EEE", !40, i64 0, !19, i64 8}
!40 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEE", !41, i64 0}
!41 = !{!"_ZTSSt4lessINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEE"}
!42 = !{!8, !8, i64 0}
!43 = !{!44, !46, i64 16}
!44 = !{!"_ZTSN3HIR12TypeParamDefE", !7, i64 0, !45, i64 8, !46, i64 16}
!45 = !{!"_ZTSN3HIR7TypeRefE", !8, i64 0}
!46 = !{!"bool", !9, i64 0}
!47 = !{i8 0, i8 2}
!48 = !{}
!49 = !{!13, !8, i64 16}
!50 = !{!51, !46, i64 0}
!51 = !{!"_ZTSN3HIR19TypeData_ErasedTypeE", !46, i64 0, !52, i64 8, !56, i64 32, !60, i64 56}
!52 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !55, i64 0}
!55 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!56 = !{!"_ZTSSt6vectorIN3HIR11LifetimeRefESaIS1_EE", !57, i64 0}
!57 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE", !58, i64 0}
!58 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE12_Vector_implE", !59, i64 0}
!59 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeRefESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!60 = !{!"_ZTSN3HIR25TypeData_ErasedType_InnerE", !61, i64 0, !9, i64 8}
!61 = !{!"_ZTSN3HIR25TypeData_ErasedType_Inner3TagE", !9, i64 0}
!62 = !{!63, !91, i64 208}
!63 = !{!"_ZTSN3HIR6StructE", !64, i64 0, !81, i64 96, !82, i64 104, !11, i64 136, !11, i64 140, !84, i64 144, !90, i64 200, !94, i64 248}
!64 = !{!"_ZTSN3HIR13GenericParamsE", !65, i64 0, !69, i64 24, !73, i64 48, !77, i64 72}
!65 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!69 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!73 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!77 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !8, i64 0, !8, i64 8, !8, i64 16}
!81 = !{!"_ZTSN3HIR6Struct4ReprE", !9, i64 0}
!82 = !{!"_ZTSN3HIR6Struct4DataE", !83, i64 0, !9, i64 8}
!83 = !{!"_ZTSN3HIR6Struct4Data3TagE", !9, i64 0}
!84 = !{!"_ZTSN3HIR13TraitMarkingsE", !46, i64 0, !46, i64 1, !46, i64 2, !85, i64 8}
!85 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !86, i64 0}
!86 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !87, i64 0}
!87 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !88, i64 0, !19, i64 8}
!88 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !89, i64 0}
!89 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!90 = !{!"_ZTSN3HIR14StructMarkingsE", !46, i64 0, !11, i64 4, !91, i64 8, !11, i64 12, !92, i64 16, !11, i64 20, !11, i64 24, !46, i64 28, !46, i64 29, !93, i64 32}
!91 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !9, i64 0}
!92 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !9, i64 0}
!93 = !{!"_ZTS4U128", !22, i64 0, !22, i64 8}
!94 = !{!"_ZTSN3HIR14ConstEvalStateE", !9, i64 0}
!95 = distinct !{!95, !96}
!96 = !{!"llvm.loop.mustprogress"}
!97 = !{!63, !11, i64 204}
!98 = !{!99, !99, i64 0}
!99 = !{!"_ZTSN3HIR8CoreTypeE", !9, i64 0}


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