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

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

%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.606 = type { ptr, ptr }
%struct.Span = type { ptr }
%class.anon.607 = type { ptr }
%class.anon.608 = type { ptr }
%"struct.std::pair.444" = type { %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" }
%"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" = type { %"class.__gnu_cxx::__normal_iterator.439" }
%"class.__gnu_cxx::__normal_iterator.439" = type { ptr }
%"struct.std::pair.446" = type { ptr, ptr }
%"class.std::reference_wrapper" = type { ptr }
%"class.std::reference_wrapper.448" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.571" = type { %"class.std::_Function_base", ptr }
%class.anon.609 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.52", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%class.anon.610 = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.611 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.612 = 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" }
%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.std::pair.440" = type { %"struct.std::pair.442", %"struct.TraitResolveCommon::CachedBound" }
%"struct.std::pair.442" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath" }
%"class.HIR::TypeRef" = type { ptr }
%"struct.TraitResolveCommon::CachedBound" = type { %"class.HIR::GenericParams", ptr, %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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.RcString = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = 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 }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.57", i8, %"class.std::unordered_map.339", %"class.std::unordered_map.353", %"class.std::unordered_multimap", %"class.std::unordered_map.380", i32, %"class.std::vector.57", %"struct.HIR::SimplePath" }
%"class.std::unordered_map.339" = type { %"class.std::_Hashtable.340" }
%"class.std::_Hashtable.340" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.353" = type { %"class.std::_Hashtable.354" }
%"class.std::_Hashtable.354" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.367" }
%"class.std::_Hashtable.367" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.380" = type { %"class.std::_Hashtable.381" }
%"class.std::_Hashtable.381" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.57" = type { %"struct.std::_Vector_base.58" }
%"struct.std::_Vector_base.58" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.67", [8 x i8] }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@g_debug_indent_level = external global i32, align 4
@__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [11 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [31 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca i1, align 1
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function.0", align 8
  %12 = alloca %class.anon.606, align 8
  %13 = alloca ptr, align 8
  %14 = alloca i32, align 4
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function.0", align 8
  %17 = alloca %class.anon.607, align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca %"class.std::function.0", align 8
  %20 = alloca %class.anon.608, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"struct.std::pair.444", align 8
  %23 = alloca %"struct.std::pair.446", align 8
  %24 = alloca %"class.std::reference_wrapper", align 8
  %25 = alloca %"class.std::reference_wrapper.448", align 8
  %26 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %27 = alloca ptr, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %struct.MonomorphStatePtr, align 8
  %30 = alloca i8, align 1
  %31 = alloca %"class.std::function.571", align 8
  %32 = alloca %class.anon.609, align 8
  %33 = alloca i8, align 1
  %34 = alloca i8, align 1
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.HIR::GenericPath", align 8
  %49 = alloca %struct.MonomorphStatePtr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %52 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %53 = alloca ptr, align 8
  %54 = alloca i8, align 1
  %55 = alloca ptr, align 8
  %56 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %57 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %58 = alloca ptr, align 8
  %59 = alloca i8, align 1
  %60 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %61 = alloca %"class.HIR::GenericPath", align 8
  %62 = alloca %"struct.HIR::SimplePath", align 8
  %63 = alloca %"struct.HIR::SimplePath", align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %"class.std::function.0", align 8
  %66 = alloca %class.anon.610, align 8
  %67 = alloca %"class.std::function", align 8
  %68 = alloca %class.anon.611, align 8
  %69 = alloca %class.anon.612, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %73 = alloca ptr, align 8
  %74 = alloca %"class.HIR::GenericPath", align 8
  %75 = alloca %"struct.HIR::SimplePath", align 8
  %76 = alloca %"class.std::function", align 8
  %77 = alloca ptr, align 8
  %78 = 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
  store ptr %3, ptr %9, align 8, !tbaa !5
  %79 = load ptr, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %10) #8
  %80 = call noundef zeroext i1 @_Z13debug_enabledv()
  %81 = zext i1 %80 to i64
  %82 = select i1 %80, ptr @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %12) #8
  %83 = getelementptr inbounds %class.anon.606, ptr %12, i32 0, i32 0
  %84 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %84, ptr %83, align 8, !tbaa !5
  %85 = getelementptr inbounds %class.anon.606, ptr %12, i32 0, i32 1
  %86 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %86, ptr %85, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(16) %12) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %82, ptr noundef %11)
          to label %87 unwind label %102

87:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  br label %88

88:                                               ; preds = %87
  %89 = load ptr, ptr %8, align 8, !tbaa !5
  %90 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %91 unwind label %106

91:                                               ; preds = %88
  %92 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %90)
          to label %93 unwind label %106

93:                                               ; preds = %91
  br i1 %92, label %94, label %123

94:                                               ; preds = %93
  call void @llvm.lifetime.start.p0(i64 8, ptr %15) #8
  %95 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %96 unwind label %110

96:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %97 = getelementptr inbounds %class.anon.607, ptr %17, i32 0, i32 0
  %98 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %98, ptr %97, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef %16)
          to label %99 unwind label %114

99:                                               ; preds = %96
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  %100 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %100, ptr noundef @.str)
          to label %101 unwind label %119

101:                                              ; preds = %99
  invoke void @__cxa_throw(ptr %100, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1097 unwind label %106

102:                                              ; preds = %4
  %103 = landingpad { ptr, i32 }
          cleanup
  %104 = extractvalue { ptr, i32 } %103, 0
  store ptr %104, ptr %13, align 8
  %105 = extractvalue { ptr, i32 } %103, 1
  store i32 %105, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %12) #8
  br label %1091

106:                                              ; preds = %155, %139, %129, %126, %101, %91, %88
  %107 = landingpad { ptr, i32 }
          cleanup
  %108 = extractvalue { ptr, i32 } %107, 0
  store ptr %108, ptr %13, align 8
  %109 = extractvalue { ptr, i32 } %107, 1
  store i32 %109, ptr %14, align 4
  br label %1090

110:                                              ; preds = %94
  %111 = landingpad { ptr, i32 }
          cleanup
  %112 = extractvalue { ptr, i32 } %111, 0
  store ptr %112, ptr %13, align 8
  %113 = extractvalue { ptr, i32 } %111, 1
  store i32 %113, ptr %14, align 4
  br label %118

114:                                              ; preds = %96
  %115 = landingpad { ptr, i32 }
          cleanup
  %116 = extractvalue { ptr, i32 } %115, 0
  store ptr %116, ptr %13, align 8
  %117 = extractvalue { ptr, i32 } %115, 1
  store i32 %117, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br label %118

118:                                              ; preds = %114, %110
  call void @llvm.lifetime.end.p0(i64 8, ptr %15) #8
  br label %1090

119:                                              ; preds = %99
  %120 = landingpad { ptr, i32 }
          cleanup
  %121 = extractvalue { ptr, i32 } %120, 0
  store ptr %121, ptr %13, align 8
  %122 = extractvalue { ptr, i32 } %120, 1
  store i32 %122, ptr %14, align 4
  call void @__cxa_free_exception(ptr %100) #8
  br label %1090

123:                                              ; preds = %93
  br label %124

124:                                              ; preds = %123
  br label %125

125:                                              ; preds = %124
  br label %126

126:                                              ; preds = %125
  %127 = load ptr, ptr %9, align 8, !tbaa !5
  %128 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %129 unwind label %106

129:                                              ; preds = %126
  %130 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %128)
          to label %131 unwind label %106

131:                                              ; preds = %129
  br i1 %130, label %132, label %153

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

134:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %135 = getelementptr inbounds %class.anon.608, ptr %20, i32 0, i32 0
  %136 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %136, ptr %135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef %19)
          to label %137 unwind label %144

137:                                              ; preds = %134
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  %138 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %138, ptr noundef @.str)
          to label %139 unwind label %149

139:                                              ; preds = %137
  invoke void @__cxa_throw(ptr %138, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1097 unwind label %106

140:                                              ; preds = %132
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %13, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %14, align 4
  br label %148

144:                                              ; preds = %134
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %13, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %148

148:                                              ; preds = %144, %140
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  br label %1090

149:                                              ; preds = %137
  %150 = landingpad { ptr, i32 }
          cleanup
  %151 = extractvalue { ptr, i32 } %150, 0
  store ptr %151, ptr %13, align 8
  %152 = extractvalue { ptr, i32 } %150, 1
  store i32 %152, ptr %14, align 4
  call void @__cxa_free_exception(ptr %138) #8
  br label %1090

153:                                              ; preds = %131
  br label %154

154:                                              ; preds = %153
  br label %155

155:                                              ; preds = %154
  %156 = load ptr, ptr %8, align 8, !tbaa !5
  %157 = load ptr, ptr %9, align 8, !tbaa !5
  %158 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %156, ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %159 unwind label %106

159:                                              ; preds = %155
  br i1 %158, label %160, label %161

160:                                              ; preds = %159
  store i1 true, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %1088

161:                                              ; preds = %159
  call void @llvm.lifetime.start.p0(i64 16, ptr %22) #8
  %162 = getelementptr inbounds i8, ptr %79, i64 8
  %163 = getelementptr inbounds %struct.TraitResolveCommon, ptr %162, i32 0, i32 4
  call void @llvm.lifetime.start.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %164 = load ptr, ptr %9, align 8, !tbaa !5
  %165 = call ptr @_ZSt3refIKN3HIR7TypeRefEESt17reference_wrapperIT_ERS4_(ptr noundef nonnull align 8 dereferenceable(8) %164) #8
  %166 = getelementptr inbounds %"class.std::reference_wrapper", ptr %24, i32 0, i32 0
  store ptr %165, ptr %166, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %167 = getelementptr inbounds i8, ptr %79, i64 8
  %168 = getelementptr inbounds %struct.TraitResolveCommon, ptr %167, i32 0, i32 9
  %169 = call ptr @_ZSt3refIKN3HIR10SimplePathEESt17reference_wrapperIT_ERS4_(ptr noundef nonnull align 8 dereferenceable(8) %168) #8
  %170 = getelementptr inbounds %"class.std::reference_wrapper.448", ptr %25, i32 0, i32 0
  store ptr %169, ptr %170, align 8
  %171 = invoke { ptr, ptr } @_ZSt9make_pairISt17reference_wrapperIKN3HIR7TypeRefEES0_IKNS1_10SimplePathEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25)
          to label %172 unwind label %189

172:                                              ; preds = %161
  %173 = getelementptr inbounds { ptr, ptr }, ptr %23, i32 0, i32 0
  %174 = extractvalue { ptr, ptr } %171, 0
  store ptr %174, ptr %173, align 8
  %175 = getelementptr inbounds { ptr, ptr }, ptr %23, i32 0, i32 1
  %176 = extractvalue { ptr, ptr } %171, 1
  store ptr %176, ptr %175, align 8
  %177 = invoke { ptr, ptr } @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE11equal_rangeIS0_IRKS2_RKNS1_10SimplePathEEEES0_INS8_14const_iteratorESG_ERKT_(ptr noundef nonnull align 8 dereferenceable(25) %163, ptr noundef nonnull align 8 dereferenceable(16) %23)
          to label %178 unwind label %189

178:                                              ; preds = %172
  %179 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 0
  %180 = extractvalue { ptr, ptr } %177, 0
  store ptr %180, ptr %179, align 8
  %181 = getelementptr inbounds { ptr, ptr }, ptr %22, i32 0, i32 1
  %182 = extractvalue { ptr, ptr } %177, 1
  store ptr %182, ptr %181, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  %183 = getelementptr inbounds %"struct.std::pair.444", ptr %22, i32 0, i32 0
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %26, ptr align 8 %183, i64 8, i1 false), !tbaa.struct !9
  br label %184

184:                                              ; preds = %237, %178
  %185 = getelementptr inbounds %"struct.std::pair.444", ptr %22, i32 0, i32 1
  %186 = invoke noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %185)
          to label %187 unwind label %193

187:                                              ; preds = %184
  br i1 %186, label %197, label %188

188:                                              ; preds = %187
  store i32 6, ptr %21, align 4
  br label %238

189:                                              ; preds = %172, %161
  %190 = landingpad { ptr, i32 }
          cleanup
  %191 = extractvalue { ptr, i32 } %190, 0
  store ptr %191, ptr %13, align 8
  %192 = extractvalue { ptr, i32 } %190, 1
  store i32 %192, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %23) #8
  br label %1087

193:                                              ; preds = %235, %184
  %194 = landingpad { ptr, i32 }
          cleanup
  %195 = extractvalue { ptr, i32 } %194, 0
  store ptr %195, ptr %13, align 8
  %196 = extractvalue { ptr, i32 } %194, 1
  store i32 %196, ptr %14, align 4
  br label %240

197:                                              ; preds = %187
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %198 = invoke noundef ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %199 unwind label %224

199:                                              ; preds = %197
  %200 = getelementptr inbounds %"struct.std::pair.440", ptr %198, i32 0, i32 0
  %201 = getelementptr inbounds %"struct.std::pair.442", ptr %200, i32 0, i32 1
  %202 = getelementptr inbounds %"class.HIR::GenericPath", ptr %201, i32 0, i32 1
  %203 = getelementptr inbounds %"struct.HIR::PathParams", ptr %202, i32 0, i32 1
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %203, i64 noundef 0)
          to label %205 unwind label %224

205:                                              ; preds = %199
  store ptr %204, ptr %27, align 8, !tbaa !5
  %206 = load ptr, ptr %8, align 8, !tbaa !5
  %207 = load ptr, ptr %27, align 8, !tbaa !5
  %208 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %209 unwind label %224

209:                                              ; preds = %205
  br i1 %208, label %210, label %231

210:                                              ; preds = %209
  br label %211

211:                                              ; preds = %210
  %212 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %213 unwind label %224

213:                                              ; preds = %211
  br i1 %212, label %214, label %228

214:                                              ; preds = %213
  %215 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %216 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %215, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %217 unwind label %224

217:                                              ; preds = %214
  %218 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %216, ptr noundef @.str.75)
          to label %219 unwind label %224

219:                                              ; preds = %217
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %218, ptr noundef @_ZSt3decRSt8ios_base)
          to label %221 unwind label %224

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %223 unwind label %224

223:                                              ; preds = %221
  br label %228

224:                                              ; preds = %221, %219, %217, %214, %211, %205, %199, %197
  %225 = landingpad { ptr, i32 }
          cleanup
  %226 = extractvalue { ptr, i32 } %225, 0
  store ptr %226, ptr %13, align 8
  %227 = extractvalue { ptr, i32 } %225, 1
  store i32 %227, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %240

228:                                              ; preds = %223, %213
  br label %229

229:                                              ; preds = %228
  br label %230

230:                                              ; preds = %229
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %232

231:                                              ; preds = %209
  store i32 0, ptr %21, align 4
  br label %232

232:                                              ; preds = %231, %230
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  %233 = load i32, ptr %21, align 4
  switch i32 %233, label %238 [
    i32 0, label %234
  ]

234:                                              ; preds = %232
  br label %235

235:                                              ; preds = %234
  %236 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %237 unwind label %193

237:                                              ; preds = %235
  br label %184, !llvm.loop !12

238:                                              ; preds = %232, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %239 = load i32, ptr %21, align 4
  switch i32 %239, label %1086 [
    i32 6, label %241
  ]

240:                                              ; preds = %224, %193
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %1087

241:                                              ; preds = %238
  %242 = load ptr, ptr %9, align 8, !tbaa !5
  %243 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %242)
          to label %244 unwind label %288

244:                                              ; preds = %241
  %245 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %243)
          to label %246 unwind label %288

246:                                              ; preds = %244
  br i1 %245, label %247, label %315

247:                                              ; preds = %246
  %248 = load ptr, ptr %9, align 8, !tbaa !5
  %249 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %248)
          to label %250 unwind label %288

250:                                              ; preds = %247
  %251 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %249)
          to label %252 unwind label %288

252:                                              ; preds = %250
  %253 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %251, i32 0, i32 0
  %254 = getelementptr inbounds %"class.HIR::Path", ptr %253, i32 0, i32 0
  %255 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %254)
          to label %256 unwind label %288

256:                                              ; preds = %252
  br i1 %255, label %257, label %315

257:                                              ; preds = %256
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #8
  %258 = load ptr, ptr %9, align 8, !tbaa !5
  %259 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %258)
          to label %260 unwind label %292

260:                                              ; preds = %257
  %261 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %259)
          to label %262 unwind label %292

262:                                              ; preds = %260
  %263 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %261, i32 0, i32 0
  %264 = getelementptr inbounds %"class.HIR::Path", ptr %263, i32 0, i32 0
  %265 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %264)
          to label %266 unwind label %292

266:                                              ; preds = %262
  store ptr %265, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %29) #8
  %267 = load ptr, ptr %28, align 8, !tbaa !5
  %268 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %267, i32 0, i32 0
  %269 = load ptr, ptr %28, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %269, i32 0, i32 1
  %271 = getelementptr inbounds %"class.HIR::GenericPath", ptr %270, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %29, ptr noundef %268, ptr noundef %271, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %272 unwind label %296

272:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #8
  %273 = load ptr, ptr %7, align 8, !tbaa !5
  %274 = load ptr, ptr %28, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %32) #8
  %275 = getelementptr inbounds %class.anon.609, ptr %32, i32 0, i32 0
  store ptr %79, ptr %275, align 8, !tbaa !14
  %276 = getelementptr inbounds %class.anon.609, ptr %32, i32 0, i32 1
  store ptr %29, ptr %276, align 8, !tbaa !5
  %277 = getelementptr inbounds %class.anon.609, ptr %32, i32 0, i32 2
  %278 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %278, ptr %277, align 8, !tbaa !5
  %279 = getelementptr inbounds %class.anon.609, ptr %32, i32 0, i32 3
  %280 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %280, ptr %279, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKNS0_7TypeRefESD_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %281 unwind label %300

281:                                              ; preds = %272
  %282 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(424) %79, ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull align 8 dereferenceable(80) %274, ptr noundef %31)
          to label %283 unwind label %304

283:                                              ; preds = %281
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  %284 = zext i1 %282 to i8
  store i8 %284, ptr %30, align 1, !tbaa !16
  %285 = load i8, ptr %30, align 1, !tbaa !16, !range !18, !noundef !19
  %286 = trunc i8 %285 to i1
  br i1 %286, label %287, label %309

287:                                              ; preds = %283
  store i1 true, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %310

288:                                              ; preds = %1079, %1077, %1075, %1072, %1069, %324, %321, %318, %315, %252, %250, %247, %244, %241
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %13, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %14, align 4
  br label %1087

292:                                              ; preds = %262, %260, %257
  %293 = landingpad { ptr, i32 }
          cleanup
  %294 = extractvalue { ptr, i32 } %293, 0
  store ptr %294, ptr %13, align 8
  %295 = extractvalue { ptr, i32 } %293, 1
  store i32 %295, ptr %14, align 4
  br label %314

296:                                              ; preds = %266
  %297 = landingpad { ptr, i32 }
          cleanup
  %298 = extractvalue { ptr, i32 } %297, 0
  store ptr %298, ptr %13, align 8
  %299 = extractvalue { ptr, i32 } %297, 1
  store i32 %299, ptr %14, align 4
  br label %313

300:                                              ; preds = %272
  %301 = landingpad { ptr, i32 }
          cleanup
  %302 = extractvalue { ptr, i32 } %301, 0
  store ptr %302, ptr %13, align 8
  %303 = extractvalue { ptr, i32 } %301, 1
  store i32 %303, ptr %14, align 4
  br label %308

304:                                              ; preds = %281
  %305 = landingpad { ptr, i32 }
          cleanup
  %306 = extractvalue { ptr, i32 } %305, 0
  store ptr %306, ptr %13, align 8
  %307 = extractvalue { ptr, i32 } %305, 1
  store i32 %307, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %308

308:                                              ; preds = %304, %300
  call void @llvm.lifetime.end.p0(i64 32, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %29) #8
  br label %313

309:                                              ; preds = %283
  store i32 0, ptr %21, align 4
  br label %310

310:                                              ; preds = %309, %287
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %29) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  %311 = load i32, ptr %21, align 4
  switch i32 %311, label %1086 [
    i32 0, label %312
  ]

312:                                              ; preds = %310
  br label %315

313:                                              ; preds = %308, %296
  call void @llvm.lifetime.end.p0(i64 128, ptr %29) #8
  br label %314

314:                                              ; preds = %313, %292
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #8
  br label %1087

315:                                              ; preds = %312, %256, %246
  %316 = load ptr, ptr %8, align 8, !tbaa !5
  %317 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %316)
          to label %318 unwind label %288

318:                                              ; preds = %315
  %319 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %317)
          to label %320 unwind label %288

320:                                              ; preds = %318
  br i1 %319, label %321, label %569

321:                                              ; preds = %320
  %322 = load ptr, ptr %9, align 8, !tbaa !5
  %323 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %324 unwind label %288

324:                                              ; preds = %321
  %325 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %323)
          to label %326 unwind label %288

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

327:                                              ; preds = %326
  call void @llvm.lifetime.start.p0(i64 1, ptr %33) #8
  %328 = load ptr, ptr %8, align 8, !tbaa !5
  %329 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %328)
          to label %330 unwind label %405

330:                                              ; preds = %327
  %331 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %329)
          to label %332 unwind label %405

332:                                              ; preds = %330
  %333 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %331, i32 0, i32 1
  %334 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %333)
          to label %335 unwind label %405

335:                                              ; preds = %332
  br i1 %334, label %336, label %350

336:                                              ; preds = %335
  %337 = load ptr, ptr %8, align 8, !tbaa !5
  %338 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %337)
          to label %339 unwind label %405

339:                                              ; preds = %336
  %340 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %338)
          to label %341 unwind label %405

341:                                              ; preds = %339
  %342 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %340, i32 0, i32 1
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %342)
          to label %344 unwind label %405

344:                                              ; preds = %341
  %345 = load ptr, ptr %343, align 8, !tbaa !5
  %346 = getelementptr inbounds %"class.HIR::Struct", ptr %345, i32 0, i32 7
  %347 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %346, i32 0, i32 0
  %348 = load i8, ptr %347, align 8, !tbaa !20, !range !18, !noundef !19
  %349 = trunc i8 %348 to i1
  br label %350

350:                                              ; preds = %344, %335
  %351 = phi i1 [ false, %335 ], [ %349, %344 ]
  %352 = zext i1 %351 to i8
  store i8 %352, ptr %33, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #8
  %353 = load ptr, ptr %9, align 8, !tbaa !5
  %354 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %353)
          to label %355 unwind label %409

355:                                              ; preds = %350
  %356 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %354)
          to label %357 unwind label %409

357:                                              ; preds = %355
  %358 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %356, i32 0, i32 1
  %359 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
          to label %360 unwind label %409

360:                                              ; preds = %357
  br i1 %359, label %361, label %375

361:                                              ; preds = %360
  %362 = load ptr, ptr %9, align 8, !tbaa !5
  %363 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %362)
          to label %364 unwind label %409

364:                                              ; preds = %361
  %365 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %363)
          to label %366 unwind label %409

366:                                              ; preds = %364
  %367 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %365, i32 0, i32 1
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %367)
          to label %369 unwind label %409

369:                                              ; preds = %366
  %370 = load ptr, ptr %368, align 8, !tbaa !5
  %371 = getelementptr inbounds %"class.HIR::Struct", ptr %370, i32 0, i32 7
  %372 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %371, i32 0, i32 0
  %373 = load i8, ptr %372, align 8, !tbaa !20, !range !18, !noundef !19
  %374 = trunc i8 %373 to i1
  br label %375

375:                                              ; preds = %369, %360
  %376 = phi i1 [ false, %360 ], [ %374, %369 ]
  %377 = zext i1 %376 to i8
  store i8 %377, ptr %34, align 1, !tbaa !16
  %378 = load i8, ptr %33, align 1, !tbaa !16, !range !18, !noundef !19
  %379 = trunc i8 %378 to i1
  br i1 %379, label %383, label %380

380:                                              ; preds = %375
  %381 = load i8, ptr %34, align 1, !tbaa !16, !range !18, !noundef !19
  %382 = trunc i8 %381 to i1
  br i1 %382, label %383, label %563

383:                                              ; preds = %380, %375
  br label %384

384:                                              ; preds = %383
  %385 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %386 unwind label %409

386:                                              ; preds = %384
  br i1 %385, label %387, label %413

387:                                              ; preds = %386
  %388 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %389 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %388, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %390 unwind label %409

390:                                              ; preds = %387
  %391 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %389, ptr noundef @.str.76)
          to label %392 unwind label %409

392:                                              ; preds = %390
  %393 = load ptr, ptr %8, align 8, !tbaa !5
  %394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %391, ptr noundef nonnull align 8 dereferenceable(8) %393)
          to label %395 unwind label %409

395:                                              ; preds = %392
  %396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef @.str.77)
          to label %397 unwind label %409

397:                                              ; preds = %395
  %398 = load ptr, ptr %9, align 8, !tbaa !5
  %399 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %396, ptr noundef nonnull align 8 dereferenceable(8) %398)
          to label %400 unwind label %409

400:                                              ; preds = %397
  %401 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %399, ptr noundef @_ZSt3decRSt8ios_base)
          to label %402 unwind label %409

402:                                              ; preds = %400
  %403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %401, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %404 unwind label %409

404:                                              ; preds = %402
  br label %413

405:                                              ; preds = %341, %339, %336, %332, %330, %327
  %406 = landingpad { ptr, i32 }
          cleanup
  %407 = extractvalue { ptr, i32 } %406, 0
  store ptr %407, ptr %13, align 8
  %408 = extractvalue { ptr, i32 } %406, 1
  store i32 %408, ptr %14, align 4
  br label %568

409:                                              ; preds = %402, %400, %397, %395, %392, %390, %387, %384, %366, %364, %361, %357, %355, %350
  %410 = landingpad { ptr, i32 }
          cleanup
  %411 = extractvalue { ptr, i32 } %410, 0
  store ptr %411, ptr %13, align 8
  %412 = extractvalue { ptr, i32 } %410, 1
  store i32 %412, ptr %14, align 4
  br label %567

413:                                              ; preds = %404, %386
  br label %414

414:                                              ; preds = %413
  br label %415

415:                                              ; preds = %414
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %416 = load ptr, ptr %8, align 8, !tbaa !5
  %417 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %416)
          to label %418 unwind label %461

418:                                              ; preds = %415
  %419 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %417)
          to label %420 unwind label %461

420:                                              ; preds = %418
  %421 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %419, i32 0, i32 1
  %422 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %421)
          to label %423 unwind label %461

423:                                              ; preds = %420
  %424 = load ptr, ptr %422, align 8, !tbaa !5
  store ptr %424, ptr %35, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #8
  %425 = load ptr, ptr %8, align 8, !tbaa !5
  %426 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %425)
          to label %427 unwind label %465

427:                                              ; preds = %423
  %428 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %426)
          to label %429 unwind label %465

429:                                              ; preds = %427
  %430 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %428, i32 0, i32 0
  %431 = getelementptr inbounds %"class.HIR::Path", ptr %430, i32 0, i32 0
  %432 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %431)
          to label %433 unwind label %465

433:                                              ; preds = %429
  store ptr %432, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %434 = load ptr, ptr %9, align 8, !tbaa !5
  %435 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %434)
          to label %436 unwind label %469

436:                                              ; preds = %433
  %437 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %435)
          to label %438 unwind label %469

438:                                              ; preds = %436
  %439 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %437, i32 0, i32 0
  %440 = getelementptr inbounds %"class.HIR::Path", ptr %439, i32 0, i32 0
  %441 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %440)
          to label %442 unwind label %469

442:                                              ; preds = %438
  store ptr %441, ptr %37, align 8, !tbaa !5
  %443 = load ptr, ptr %36, align 8, !tbaa !5
  %444 = load ptr, ptr %37, align 8, !tbaa !5
  %445 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %443, ptr noundef nonnull align 8 dereferenceable(32) %444)
          to label %446 unwind label %469

446:                                              ; preds = %442
  br i1 %445, label %447, label %476

447:                                              ; preds = %446
  br label %448

448:                                              ; preds = %447
  %449 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %450 unwind label %469

450:                                              ; preds = %448
  br i1 %449, label %451, label %473

451:                                              ; preds = %450
  %452 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %452, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %454 unwind label %469

454:                                              ; preds = %451
  %455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %453, ptr noundef @.str.78)
          to label %456 unwind label %469

456:                                              ; preds = %454
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %455, ptr noundef @_ZSt3decRSt8ios_base)
          to label %458 unwind label %469

458:                                              ; preds = %456
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %457, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %460 unwind label %469

460:                                              ; preds = %458
  br label %473

461:                                              ; preds = %420, %418, %415
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %13, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %14, align 4
  br label %562

465:                                              ; preds = %429, %427, %423
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %13, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %14, align 4
  br label %561

469:                                              ; preds = %553, %551, %549, %546, %543, %502, %500, %497, %495, %492, %490, %487, %484, %476, %458, %456, %454, %451, %448, %442, %438, %436, %433
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %13, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %14, align 4
  br label %560

473:                                              ; preds = %460, %450
  br label %474

474:                                              ; preds = %473
  br label %475

475:                                              ; preds = %474
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %559

476:                                              ; preds = %446
  %477 = load ptr, ptr %36, align 8, !tbaa !5
  %478 = getelementptr inbounds %"class.HIR::GenericPath", ptr %477, i32 0, i32 0
  %479 = load ptr, ptr %37, align 8, !tbaa !5
  %480 = getelementptr inbounds %"class.HIR::GenericPath", ptr %479, i32 0, i32 0
  %481 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %478, ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %482 unwind label %469

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

483:                                              ; preds = %482
  br label %484

484:                                              ; preds = %483
  %485 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %486 unwind label %469

486:                                              ; preds = %484
  br i1 %485, label %487, label %505

487:                                              ; preds = %486
  %488 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %489 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %488, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %490 unwind label %469

490:                                              ; preds = %487
  %491 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %489, ptr noundef @.str.79)
          to label %492 unwind label %469

492:                                              ; preds = %490
  %493 = load ptr, ptr %36, align 8, !tbaa !5
  %494 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef nonnull align 8 dereferenceable(32) %493)
          to label %495 unwind label %469

495:                                              ; preds = %492
  %496 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %494, ptr noundef @.str.77)
          to label %497 unwind label %469

497:                                              ; preds = %495
  %498 = load ptr, ptr %37, align 8, !tbaa !5
  %499 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef nonnull align 8 dereferenceable(32) %498)
          to label %500 unwind label %469

500:                                              ; preds = %497
  %501 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %499, ptr noundef @_ZSt3decRSt8ios_base)
          to label %502 unwind label %469

502:                                              ; preds = %500
  %503 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %501, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %504 unwind label %469

504:                                              ; preds = %502
  br label %505

505:                                              ; preds = %504, %486
  br label %506

506:                                              ; preds = %505
  br label %507

507:                                              ; preds = %506
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %508 = load ptr, ptr %36, align 8, !tbaa !5
  %509 = getelementptr inbounds %"class.HIR::GenericPath", ptr %508, i32 0, i32 1
  %510 = getelementptr inbounds %"struct.HIR::PathParams", ptr %509, i32 0, i32 1
  %511 = load ptr, ptr %35, align 8, !tbaa !5
  %512 = getelementptr inbounds %"class.HIR::Struct", ptr %511, i32 0, i32 7
  %513 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %512, i32 0, i32 1
  %514 = load i32, ptr %513, align 4, !tbaa !57
  %515 = zext i32 %514 to i64
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %510, i64 noundef %515)
          to label %517 unwind label %533

517:                                              ; preds = %507
  store ptr %516, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #8
  %518 = load ptr, ptr %37, align 8, !tbaa !5
  %519 = getelementptr inbounds %"class.HIR::GenericPath", ptr %518, i32 0, i32 1
  %520 = getelementptr inbounds %"struct.HIR::PathParams", ptr %519, i32 0, i32 1
  %521 = load ptr, ptr %35, align 8, !tbaa !5
  %522 = getelementptr inbounds %"class.HIR::Struct", ptr %521, i32 0, i32 7
  %523 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %522, i32 0, i32 1
  %524 = load i32, ptr %523, align 4, !tbaa !57
  %525 = zext i32 %524 to i64
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %520, i64 noundef %525)
          to label %527 unwind label %537

527:                                              ; preds = %517
  store ptr %526, ptr %39, align 8, !tbaa !5
  %528 = load ptr, ptr %7, align 8, !tbaa !5
  %529 = load ptr, ptr %38, align 8, !tbaa !5
  %530 = load ptr, ptr %39, align 8, !tbaa !5
  %531 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %79, ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef nonnull align 8 dereferenceable(8) %529, ptr noundef nonnull align 8 dereferenceable(8) %530)
          to label %532 unwind label %537

532:                                              ; preds = %527
  store i1 %531, ptr %5, align 1
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %559

533:                                              ; preds = %507
  %534 = landingpad { ptr, i32 }
          cleanup
  %535 = extractvalue { ptr, i32 } %534, 0
  store ptr %535, ptr %13, align 8
  %536 = extractvalue { ptr, i32 } %534, 1
  store i32 %536, ptr %14, align 4
  br label %541

537:                                              ; preds = %527, %517
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %13, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #8
  br label %541

541:                                              ; preds = %537, %533
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %560

542:                                              ; preds = %482
  br label %543

543:                                              ; preds = %542
  %544 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %545 unwind label %469

545:                                              ; preds = %543
  br i1 %544, label %546, label %556

546:                                              ; preds = %545
  %547 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %548 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %547, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %549 unwind label %469

549:                                              ; preds = %546
  %550 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %548, ptr noundef @.str.80)
          to label %551 unwind label %469

551:                                              ; preds = %549
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef @_ZSt3decRSt8ios_base)
          to label %553 unwind label %469

553:                                              ; preds = %551
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %555 unwind label %469

555:                                              ; preds = %553
  br label %556

556:                                              ; preds = %555, %545
  br label %557

557:                                              ; preds = %556
  br label %558

558:                                              ; preds = %557
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %559

559:                                              ; preds = %558, %532, %475
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %564

560:                                              ; preds = %541, %469
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %561

561:                                              ; preds = %560, %465
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #8
  br label %562

562:                                              ; preds = %561, %461
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  br label %567

563:                                              ; preds = %380
  store i32 0, ptr %21, align 4
  br label %564

564:                                              ; preds = %563, %559
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  %565 = load i32, ptr %21, align 4
  switch i32 %565, label %1086 [
    i32 0, label %566
  ]

566:                                              ; preds = %564
  br label %569

567:                                              ; preds = %562, %409
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #8
  br label %568

568:                                              ; preds = %567, %405
  call void @llvm.lifetime.end.p0(i64 1, ptr %33) #8
  br label %1087

569:                                              ; preds = %566, %326, %320
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %570 = load ptr, ptr %8, align 8, !tbaa !5
  %571 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %570)
          to label %572 unwind label %599

572:                                              ; preds = %569
  %573 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %571)
          to label %574 unwind label %599

574:                                              ; preds = %572
  store ptr %573, ptr %40, align 8, !tbaa !5
  %575 = load ptr, ptr %40, align 8, !tbaa !5
  %576 = icmp ne ptr %575, null
  br i1 %576, label %577, label %1000

577:                                              ; preds = %574
  br label %578

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

580:                                              ; preds = %578
  br i1 %579, label %581, label %603

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

584:                                              ; preds = %581
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %583, ptr noundef @.str.81)
          to label %586 unwind label %599

586:                                              ; preds = %584
  %587 = load ptr, ptr %8, align 8, !tbaa !5
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %585, ptr noundef nonnull align 8 dereferenceable(8) %587)
          to label %589 unwind label %599

589:                                              ; preds = %586
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef @.str.77)
          to label %591 unwind label %599

591:                                              ; preds = %589
  %592 = load ptr, ptr %9, align 8, !tbaa !5
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %590, ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %594 unwind label %599

594:                                              ; preds = %591
  %595 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %593, ptr noundef @_ZSt3decRSt8ios_base)
          to label %596 unwind label %599

596:                                              ; preds = %594
  %597 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %595, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %598 unwind label %599

598:                                              ; preds = %596
  br label %603

599:                                              ; preds = %596, %594, %591, %589, %586, %584, %581, %578, %572, %569
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %13, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %14, align 4
  br label %1043

603:                                              ; preds = %598, %580
  br label %604

604:                                              ; preds = %603
  br label %605

605:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %606 = load ptr, ptr %9, align 8, !tbaa !5
  %607 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %606)
          to label %608 unwind label %640

608:                                              ; preds = %605
  %609 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %607)
          to label %610 unwind label %640

610:                                              ; preds = %608
  store ptr %609, ptr %41, align 8, !tbaa !5
  %611 = load ptr, ptr %41, align 8, !tbaa !5
  %612 = icmp ne ptr %611, null
  br i1 %612, label %613, label %816

613:                                              ; preds = %610
  %614 = load ptr, ptr %40, align 8, !tbaa !5
  %615 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %614, i32 0, i32 0
  %616 = getelementptr inbounds %"class.HIR::TraitPath", ptr %615, i32 0, i32 1
  %617 = getelementptr inbounds %"class.HIR::GenericPath", ptr %616, i32 0, i32 0
  %618 = load ptr, ptr %41, align 8, !tbaa !5
  %619 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %618, i32 0, i32 0
  %620 = getelementptr inbounds %"class.HIR::TraitPath", ptr %619, i32 0, i32 1
  %621 = getelementptr inbounds %"class.HIR::GenericPath", ptr %620, i32 0, i32 0
  %622 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %617, ptr noundef nonnull align 8 dereferenceable(8) %621)
          to label %623 unwind label %640

623:                                              ; preds = %613
  br i1 %622, label %624, label %730

624:                                              ; preds = %623
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %625 = load ptr, ptr %41, align 8, !tbaa !5
  %626 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %625, i32 0, i32 0
  %627 = getelementptr inbounds %"class.HIR::TraitPath", ptr %626, i32 0, i32 4
  %628 = load ptr, ptr %627, align 8, !tbaa !58
  store ptr %628, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #8
  store i8 0, ptr %43, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %629 = load ptr, ptr %42, align 8, !tbaa !5
  %630 = getelementptr inbounds %"class.HIR::Trait", ptr %629, i32 0, i32 9
  store ptr %630, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %631 = load ptr, ptr %44, align 8, !tbaa !5
  %632 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %631) #8
  %633 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %45, i32 0, i32 0
  store ptr %632, ptr %633, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %634 = load ptr, ptr %44, align 8, !tbaa !5
  %635 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %634) #8
  %636 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.395", ptr %46, i32 0, i32 0
  store ptr %635, ptr %636, align 8
  br label %637

637:                                              ; preds = %697, %624
  %638 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46) #8
  br i1 %638, label %644, label %639

639:                                              ; preds = %637
  store i32 21, ptr %21, align 4
  br label %700

640:                                              ; preds = %750, %748, %746, %743, %740, %730, %613, %608, %605
  %641 = landingpad { ptr, i32 }
          cleanup
  %642 = extractvalue { ptr, i32 } %641, 0
  store ptr %642, ptr %13, align 8
  %643 = extractvalue { ptr, i32 } %641, 1
  store i32 %643, ptr %14, align 4
  br label %852

644:                                              ; preds = %637
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %645 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  store ptr %645, ptr %47, align 8, !tbaa !5
  %646 = load ptr, ptr %47, align 8, !tbaa !5
  %647 = getelementptr inbounds %"class.HIR::TraitPath", ptr %646, i32 0, i32 1
  %648 = getelementptr inbounds %"class.HIR::GenericPath", ptr %647, i32 0, i32 0
  %649 = load ptr, ptr %40, align 8, !tbaa !5
  %650 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %649, i32 0, i32 0
  %651 = getelementptr inbounds %"class.HIR::TraitPath", ptr %650, i32 0, i32 1
  %652 = getelementptr inbounds %"class.HIR::GenericPath", ptr %651, i32 0, i32 0
  %653 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %648, ptr noundef nonnull align 8 dereferenceable(8) %652)
          to label %654 unwind label %671

654:                                              ; preds = %644
  br i1 %653, label %655, label %693

655:                                              ; preds = %654
  call void @llvm.lifetime.start.p0(i64 32, ptr %48) #8
  call void @llvm.lifetime.start.p0(i64 128, ptr %49) #8
  %656 = load ptr, ptr %41, align 8, !tbaa !5
  %657 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %656, i32 0, i32 0
  %658 = getelementptr inbounds %"class.HIR::TraitPath", ptr %657, i32 0, i32 1
  %659 = getelementptr inbounds %"class.HIR::GenericPath", ptr %658, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %49, ptr noundef null, ptr noundef %659, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %660 unwind label %675

660:                                              ; preds = %655
  %661 = load ptr, ptr %7, align 8, !tbaa !5
  %662 = load ptr, ptr %47, align 8, !tbaa !5
  %663 = getelementptr inbounds %"class.HIR::TraitPath", ptr %662, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %48, ptr noundef nonnull align 8 dereferenceable(96) %49, ptr noundef nonnull align 8 dereferenceable(8) %661, ptr noundef nonnull align 8 dereferenceable(32) %663, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %664 unwind label %679

664:                                              ; preds = %660
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %49) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %49) #8
  %665 = load ptr, ptr %40, align 8, !tbaa !5
  %666 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %665, i32 0, i32 0
  %667 = getelementptr inbounds %"class.HIR::TraitPath", ptr %666, i32 0, i32 1
  %668 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(32) %667)
          to label %669 unwind label %684

669:                                              ; preds = %664
  br i1 %668, label %670, label %688

670:                                              ; preds = %669
  store i8 1, ptr %43, align 1, !tbaa !16
  store i32 21, ptr %21, align 4
  br label %689

671:                                              ; preds = %644
  %672 = landingpad { ptr, i32 }
          cleanup
  %673 = extractvalue { ptr, i32 } %672, 0
  store ptr %673, ptr %13, align 8
  %674 = extractvalue { ptr, i32 } %672, 1
  store i32 %674, ptr %14, align 4
  br label %699

675:                                              ; preds = %655
  %676 = landingpad { ptr, i32 }
          cleanup
  %677 = extractvalue { ptr, i32 } %676, 0
  store ptr %677, ptr %13, align 8
  %678 = extractvalue { ptr, i32 } %676, 1
  store i32 %678, ptr %14, align 4
  br label %683

679:                                              ; preds = %660
  %680 = landingpad { ptr, i32 }
          cleanup
  %681 = extractvalue { ptr, i32 } %680, 0
  store ptr %681, ptr %13, align 8
  %682 = extractvalue { ptr, i32 } %680, 1
  store i32 %682, ptr %14, align 4
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %49) #8
  br label %683

683:                                              ; preds = %679, %675
  call void @llvm.lifetime.end.p0(i64 128, ptr %49) #8
  br label %692

684:                                              ; preds = %664
  %685 = landingpad { ptr, i32 }
          cleanup
  %686 = extractvalue { ptr, i32 } %685, 0
  store ptr %686, ptr %13, align 8
  %687 = extractvalue { ptr, i32 } %685, 1
  store i32 %687, ptr %14, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %692

688:                                              ; preds = %669
  store i32 0, ptr %21, align 4
  br label %689

689:                                              ; preds = %688, %670
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  %690 = load i32, ptr %21, align 4
  switch i32 %690, label %694 [
    i32 0, label %691
  ]

691:                                              ; preds = %689
  br label %693

692:                                              ; preds = %684, %683
  call void @llvm.lifetime.end.p0(i64 32, ptr %48) #8
  br label %699

693:                                              ; preds = %691, %654
  store i32 0, ptr %21, align 4
  br label %694

694:                                              ; preds = %693, %689
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  %695 = load i32, ptr %21, align 4
  switch i32 %695, label %700 [
    i32 0, label %696
  ]

696:                                              ; preds = %694
  br label %697

697:                                              ; preds = %696
  %698 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  br label %637

699:                                              ; preds = %692, %671
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %729

700:                                              ; preds = %694, %639
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %701

701:                                              ; preds = %700
  %702 = load i8, ptr %43, align 1, !tbaa !16, !range !18, !noundef !19
  %703 = trunc i8 %702 to i1
  br i1 %703, label %725, label %704

704:                                              ; preds = %701
  br label %705

705:                                              ; preds = %704
  %706 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %707 unwind label %718

707:                                              ; preds = %705
  br i1 %706, label %708, label %722

708:                                              ; preds = %707
  %709 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %709, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %711 unwind label %718

711:                                              ; preds = %708
  %712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef @.str.82)
          to label %713 unwind label %718

713:                                              ; preds = %711
  %714 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %712, ptr noundef @_ZSt3decRSt8ios_base)
          to label %715 unwind label %718

715:                                              ; preds = %713
  %716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %714, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %717 unwind label %718

717:                                              ; preds = %715
  br label %722

718:                                              ; preds = %715, %713, %711, %708, %705
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %13, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %14, align 4
  br label %729

722:                                              ; preds = %717, %707
  br label %723

723:                                              ; preds = %722
  br label %724

724:                                              ; preds = %723
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %726

725:                                              ; preds = %701
  store i32 0, ptr %21, align 4
  br label %726

726:                                              ; preds = %725, %724
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  %727 = load i32, ptr %21, align 4
  switch i32 %727, label %817 [
    i32 0, label %728
  ]

728:                                              ; preds = %726
  br label %757

729:                                              ; preds = %718, %699
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %852

730:                                              ; preds = %623
  %731 = load ptr, ptr %40, align 8, !tbaa !5
  %732 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %731, i32 0, i32 0
  %733 = getelementptr inbounds %"class.HIR::TraitPath", ptr %732, i32 0, i32 1
  %734 = load ptr, ptr %41, align 8, !tbaa !5
  %735 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %734, i32 0, i32 0
  %736 = getelementptr inbounds %"class.HIR::TraitPath", ptr %735, i32 0, i32 1
  %737 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %733, ptr noundef nonnull align 8 dereferenceable(32) %736)
          to label %738 unwind label %640

738:                                              ; preds = %730
  br i1 %737, label %739, label %756

739:                                              ; preds = %738
  br label %740

740:                                              ; preds = %739
  %741 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %742 unwind label %640

742:                                              ; preds = %740
  br i1 %741, label %743, label %753

743:                                              ; preds = %742
  %744 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %744, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %746 unwind label %640

746:                                              ; preds = %743
  %747 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %745, ptr noundef @.str.83)
          to label %748 unwind label %640

748:                                              ; preds = %746
  %749 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %747, ptr noundef @_ZSt3decRSt8ios_base)
          to label %750 unwind label %640

750:                                              ; preds = %748
  %751 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %749, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %752 unwind label %640

752:                                              ; preds = %750
  br label %753

753:                                              ; preds = %752, %742
  br label %754

754:                                              ; preds = %753
  br label %755

755:                                              ; preds = %754
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %817

756:                                              ; preds = %738
  br label %757

757:                                              ; preds = %756, %728
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %758 = load ptr, ptr %40, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %758, i32 0, i32 1
  store ptr %759, ptr %50, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #8
  %760 = load ptr, ptr %50, align 8, !tbaa !5
  %761 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %760) #8
  %762 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %51, i32 0, i32 0
  store ptr %761, ptr %762, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %763 = load ptr, ptr %50, align 8, !tbaa !5
  %764 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %763) #8
  %765 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %52, i32 0, i32 0
  store ptr %764, ptr %765, align 8
  br label %766

766:                                              ; preds = %811, %757
  %767 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %52) #8
  br i1 %767, label %769, label %768

768:                                              ; preds = %766
  store i32 27, ptr %21, align 4
  br label %813

769:                                              ; preds = %766
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %770 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  store ptr %770, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %54) #8
  store i8 0, ptr %54, align 1, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %771 = load ptr, ptr %41, align 8, !tbaa !5
  %772 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %771, i32 0, i32 1
  store ptr %772, ptr %55, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %773 = load ptr, ptr %55, align 8, !tbaa !5
  %774 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %773) #8
  %775 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %56, i32 0, i32 0
  store ptr %774, ptr %775, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %776 = load ptr, ptr %55, align 8, !tbaa !5
  %777 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %776) #8
  %778 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %57, i32 0, i32 0
  store ptr %777, ptr %778, align 8
  br label %779

779:                                              ; preds = %797, %769
  %780 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %57) #8
  br i1 %780, label %782, label %781

781:                                              ; preds = %779
  store i32 29, ptr %21, align 4
  br label %799

782:                                              ; preds = %779
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #8
  %783 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  store ptr %783, ptr %58, align 8, !tbaa !5
  %784 = load ptr, ptr %58, align 8, !tbaa !5
  %785 = load ptr, ptr %53, align 8, !tbaa !5
  %786 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %784, ptr noundef nonnull align 8 dereferenceable(32) %785)
          to label %787 unwind label %789

787:                                              ; preds = %782
  br i1 %786, label %788, label %793

788:                                              ; preds = %787
  store i8 1, ptr %54, align 1, !tbaa !16
  store i32 29, ptr %21, align 4
  br label %794

789:                                              ; preds = %782
  %790 = landingpad { ptr, i32 }
          cleanup
  %791 = extractvalue { ptr, i32 } %790, 0
  store ptr %791, ptr %13, align 8
  %792 = extractvalue { ptr, i32 } %790, 1
  store i32 %792, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  br label %852

793:                                              ; preds = %787
  store i32 0, ptr %21, align 4
  br label %794

794:                                              ; preds = %793, %788
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #8
  %795 = load i32, ptr %21, align 4
  switch i32 %795, label %799 [
    i32 0, label %796
  ]

796:                                              ; preds = %794
  br label %797

797:                                              ; preds = %796
  %798 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %56) #8
  br label %779

799:                                              ; preds = %794, %781
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  br label %800

800:                                              ; preds = %799
  %801 = load i8, ptr %54, align 1, !tbaa !16, !range !18, !noundef !19
  %802 = trunc i8 %801 to i1
  br i1 %802, label %804, label %803

803:                                              ; preds = %800
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %805

804:                                              ; preds = %800
  store i32 0, ptr %21, align 4
  br label %805

805:                                              ; preds = %804, %803
  call void @llvm.lifetime.end.p0(i64 1, ptr %54) #8
  %806 = load i32, ptr %21, align 4
  switch i32 %806, label %808 [
    i32 0, label %807
  ]

807:                                              ; preds = %805
  store i32 0, ptr %21, align 4
  br label %808

808:                                              ; preds = %807, %805
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  %809 = load i32, ptr %21, align 4
  switch i32 %809, label %813 [
    i32 0, label %810
  ]

810:                                              ; preds = %808
  br label %811

811:                                              ; preds = %810
  %812 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %51) #8
  br label %766

813:                                              ; preds = %808, %768
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  %814 = load i32, ptr %21, align 4
  switch i32 %814, label %817 [
    i32 27, label %815
  ]

815:                                              ; preds = %813
  store i1 true, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %817

816:                                              ; preds = %610
  store i32 0, ptr %21, align 4
  br label %817

817:                                              ; preds = %816, %815, %813, %755, %726
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  %818 = load i32, ptr %21, align 4
  switch i32 %818, label %1001 [
    i32 0, label %819
  ]

819:                                              ; preds = %817
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  call void @llvm.lifetime.start.p0(i64 176, ptr %60) #8
  invoke void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %60)
          to label %820 unwind label %853

820:                                              ; preds = %819
  call void @llvm.lifetime.start.p0(i64 32, ptr %61) #8
  %821 = load ptr, ptr %40, align 8, !tbaa !5
  %822 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %821, i32 0, i32 0
  %823 = getelementptr inbounds %"class.HIR::TraitPath", ptr %822, i32 0, i32 1
  %824 = getelementptr inbounds %"class.HIR::GenericPath", ptr %823, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %824)
          to label %825 unwind label %857

825:                                              ; preds = %820
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef %62)
          to label %826 unwind label %861

826:                                              ; preds = %825
  %827 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %60, i32 0, i32 0
  %828 = getelementptr inbounds %"class.HIR::TraitPath", ptr %827, i32 0, i32 1
  %829 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR11GenericPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %828, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %830 unwind label %865

830:                                              ; preds = %826
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %61) #8
  %831 = load ptr, ptr %40, align 8, !tbaa !5
  %832 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %831, i32 0, i32 0
  %833 = getelementptr inbounds %"class.HIR::TraitPath", ptr %832, i32 0, i32 1
  %834 = getelementptr inbounds %"class.HIR::GenericPath", ptr %833, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %835 unwind label %871

835:                                              ; preds = %830
  %836 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %834, ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %837 unwind label %875

837:                                              ; preds = %835
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br i1 %836, label %838, label %900

838:                                              ; preds = %837
  br label %839

839:                                              ; preds = %838
  %840 = load ptr, ptr %40, align 8, !tbaa !5
  %841 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %840, i32 0, i32 1
  %842 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %841) #8
  %843 = icmp ugt i64 %842, 0
  br i1 %843, label %897, label %844

844:                                              ; preds = %839
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %845 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %845)
          to label %846 unwind label %880

846:                                              ; preds = %844
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %847 = getelementptr inbounds %class.anon.610, ptr %66, i32 0, i32 0
  %848 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %848, ptr %847, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef %65)
          to label %849 unwind label %884

849:                                              ; preds = %846
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  %850 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %850, ptr noundef @.str)
          to label %851 unwind label %889

851:                                              ; preds = %849
  invoke void @__cxa_throw(ptr %850, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1097 unwind label %893

852:                                              ; preds = %789, %729, %640
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  br label %1043

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

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

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

865:                                              ; preds = %826
  %866 = landingpad { ptr, i32 }
          cleanup
  %867 = extractvalue { ptr, i32 } %866, 0
  store ptr %867, ptr %13, align 8
  %868 = extractvalue { ptr, i32 } %866, 1
  store i32 %868, ptr %14, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %869

869:                                              ; preds = %865, %861
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  br label %870

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

871:                                              ; preds = %830
  %872 = landingpad { ptr, i32 }
          cleanup
  %873 = extractvalue { ptr, i32 } %872, 0
  store ptr %873, ptr %13, align 8
  %874 = extractvalue { ptr, i32 } %872, 1
  store i32 %874, ptr %14, align 4
  br label %879

875:                                              ; preds = %835
  %876 = landingpad { ptr, i32 }
          cleanup
  %877 = extractvalue { ptr, i32 } %876, 0
  store ptr %877, ptr %13, align 8
  %878 = extractvalue { ptr, i32 } %876, 1
  store i32 %878, ptr %14, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %879

879:                                              ; preds = %875, %871
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  br label %998

880:                                              ; preds = %844
  %881 = landingpad { ptr, i32 }
          cleanup
  %882 = extractvalue { ptr, i32 } %881, 0
  store ptr %882, ptr %13, align 8
  %883 = extractvalue { ptr, i32 } %881, 1
  store i32 %883, ptr %14, align 4
  br label %888

884:                                              ; preds = %846
  %885 = landingpad { ptr, i32 }
          cleanup
  %886 = extractvalue { ptr, i32 } %885, 0
  store ptr %886, ptr %13, align 8
  %887 = extractvalue { ptr, i32 } %885, 1
  store i32 %887, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br label %888

888:                                              ; preds = %884, %880
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  br label %998

889:                                              ; preds = %849
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %13, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %14, align 4
  call void @__cxa_free_exception(ptr %850) #8
  br label %998

893:                                              ; preds = %851
  %894 = landingpad { ptr, i32 }
          cleanup
  %895 = extractvalue { ptr, i32 } %894, 0
  store ptr %895, ptr %13, align 8
  %896 = extractvalue { ptr, i32 } %894, 1
  store i32 %896, ptr %14, align 4
  br label %998

897:                                              ; preds = %839
  br label %898

898:                                              ; preds = %897
  br label %899

899:                                              ; preds = %898
  store i8 1, ptr %59, align 1, !tbaa !16
  br label %930

900:                                              ; preds = %837
  store i8 0, ptr %59, align 1, !tbaa !16
  %901 = load ptr, ptr %7, align 8, !tbaa !5
  %902 = load ptr, ptr %40, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %902, i32 0, i32 0
  %904 = getelementptr inbounds %"class.HIR::TraitPath", ptr %903, i32 0, i32 1
  %905 = getelementptr inbounds %"class.HIR::GenericPath", ptr %904, i32 0, i32 0
  %906 = load ptr, ptr %40, align 8, !tbaa !5
  %907 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %906, i32 0, i32 0
  %908 = getelementptr inbounds %"class.HIR::TraitPath", ptr %907, i32 0, i32 1
  %909 = getelementptr inbounds %"class.HIR::GenericPath", ptr %908, i32 0, i32 1
  %910 = load ptr, ptr %9, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %68) #8
  %911 = getelementptr inbounds %class.anon.611, ptr %68, i32 0, i32 0
  store ptr %59, ptr %911, align 8, !tbaa !5
  %912 = getelementptr inbounds %class.anon.611, ptr %68, i32 0, i32 1
  store ptr %40, ptr %912, align 8, !tbaa !5
  %913 = getelementptr inbounds %class.anon.611, ptr %68, i32 0, i32 2
  %914 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %914, ptr %913, align 8, !tbaa !5
  %915 = getelementptr inbounds %class.anon.611, ptr %68, i32 0, i32 3
  store ptr %79, ptr %915, align 8, !tbaa !87
  %916 = getelementptr inbounds %class.anon.611, ptr %68, i32 0, i32 4
  %917 = load ptr, ptr %7, align 8, !tbaa !5
  store ptr %917, ptr %916, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(40) %68)
          to label %918 unwind label %921

918:                                              ; preds = %900
  %919 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %79, ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef nonnull align 8 dereferenceable(24) %909, ptr noundef nonnull align 8 dereferenceable(8) %910, ptr noundef %67)
          to label %920 unwind label %925

920:                                              ; preds = %918
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %68) #8
  br label %930

921:                                              ; preds = %900
  %922 = landingpad { ptr, i32 }
          cleanup
  %923 = extractvalue { ptr, i32 } %922, 0
  store ptr %923, ptr %13, align 8
  %924 = extractvalue { ptr, i32 } %922, 1
  store i32 %924, ptr %14, align 4
  br label %929

925:                                              ; preds = %918
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %13, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %929

929:                                              ; preds = %925, %921
  call void @llvm.lifetime.end.p0(i64 40, ptr %68) #8
  br label %998

930:                                              ; preds = %920, %899
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %931 = getelementptr inbounds %class.anon.612, ptr %69, i32 0, i32 0
  store ptr %60, ptr %931, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %932 = load ptr, ptr %40, align 8, !tbaa !5
  %933 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %932, i32 0, i32 1
  store ptr %933, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %934 = load ptr, ptr %70, align 8, !tbaa !5
  %935 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %934) #8
  %936 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %71, i32 0, i32 0
  store ptr %935, ptr %936, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %937 = load ptr, ptr %70, align 8, !tbaa !5
  %938 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %937) #8
  %939 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator", ptr %72, i32 0, i32 0
  store ptr %938, ptr %939, align 8
  br label %940

940:                                              ; preds = %973, %930
  %941 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br i1 %941, label %943, label %942

942:                                              ; preds = %940
  store i32 33, ptr %21, align 4
  br label %994

943:                                              ; preds = %940
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %944 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  store ptr %944, ptr %73, align 8, !tbaa !5
  %945 = load i8, ptr %59, align 1, !tbaa !16, !range !18, !noundef !19
  %946 = trunc i8 %945 to i1
  br i1 %946, label %948, label %947

947:                                              ; preds = %943
  store i32 33, ptr %21, align 4
  br label %970

948:                                              ; preds = %943
  %949 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %60, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #8
  %950 = load ptr, ptr %73, align 8, !tbaa !5
  %951 = getelementptr inbounds %"class.HIR::GenericPath", ptr %950, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %951)
          to label %952 unwind label %975

952:                                              ; preds = %948
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %74, ptr noundef %75)
          to label %953 unwind label %979

953:                                              ; preds = %952
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %949, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %954 unwind label %983

954:                                              ; preds = %953
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  %955 = load ptr, ptr %7, align 8, !tbaa !5
  %956 = load ptr, ptr %73, align 8, !tbaa !5
  %957 = getelementptr inbounds %"class.HIR::GenericPath", ptr %956, i32 0, i32 0
  %958 = load ptr, ptr %73, align 8, !tbaa !5
  %959 = getelementptr inbounds %"class.HIR::GenericPath", ptr %958, i32 0, i32 1
  %960 = load ptr, ptr %9, align 8, !tbaa !5
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IRZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(8) %69) #8
  %961 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %79, ptr noundef nonnull align 8 dereferenceable(8) %955, ptr noundef nonnull align 8 dereferenceable(8) %957, ptr noundef nonnull align 8 dereferenceable(24) %959, ptr noundef nonnull align 8 dereferenceable(8) %960, ptr noundef %76)
          to label %962 unwind label %989

962:                                              ; preds = %954
  %963 = zext i1 %961 to i32
  %964 = load i8, ptr %59, align 1, !tbaa !16, !range !18, !noundef !19
  %965 = trunc i8 %964 to i1
  %966 = zext i1 %965 to i32
  %967 = and i32 %966, %963
  %968 = icmp ne i32 %967, 0
  %969 = zext i1 %968 to i8
  store i8 %969, ptr %59, align 1, !tbaa !16
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  store i32 0, ptr %21, align 4
  br label %970

970:                                              ; preds = %962, %947
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  %971 = load i32, ptr %21, align 4
  switch i32 %971, label %994 [
    i32 0, label %972
  ]

972:                                              ; preds = %970
  br label %973

973:                                              ; preds = %972
  %974 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  br label %940

975:                                              ; preds = %948
  %976 = landingpad { ptr, i32 }
          cleanup
  %977 = extractvalue { ptr, i32 } %976, 0
  store ptr %977, ptr %13, align 8
  %978 = extractvalue { ptr, i32 } %976, 1
  store i32 %978, ptr %14, align 4
  br label %988

979:                                              ; preds = %952
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %13, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %14, align 4
  br label %987

983:                                              ; preds = %953
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %13, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %14, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #8
  br label %987

987:                                              ; preds = %983, %979
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #8
  br label %988

988:                                              ; preds = %987, %975
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #8
  br label %993

989:                                              ; preds = %954
  %990 = landingpad { ptr, i32 }
          cleanup
  %991 = extractvalue { ptr, i32 } %990, 0
  store ptr %991, ptr %13, align 8
  %992 = extractvalue { ptr, i32 } %990, 1
  store i32 %992, ptr %14, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #8
  br label %993

993:                                              ; preds = %989, %988
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  br label %998

994:                                              ; preds = %970, %942
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #8
  br label %995

995:                                              ; preds = %994
  %996 = load i8, ptr %59, align 1, !tbaa !16, !range !18, !noundef !19
  %997 = trunc i8 %996 to i1
  store i1 %997, ptr %5, align 1
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %60) #8
  call void @llvm.lifetime.end.p0(i64 176, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  br label %1001

998:                                              ; preds = %993, %929, %893, %889, %888, %879, %870
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %60) #8
  br label %999

999:                                              ; preds = %998, %853
  call void @llvm.lifetime.end.p0(i64 176, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  br label %1043

1000:                                             ; preds = %574
  store i32 0, ptr %21, align 4
  br label %1001

1001:                                             ; preds = %1000, %995, %817
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  %1002 = load i32, ptr %21, align 4
  switch i32 %1002, label %1086 [
    i32 0, label %1003
  ]

1003:                                             ; preds = %1001
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %1004 = load ptr, ptr %8, align 8, !tbaa !5
  %1005 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1004)
          to label %1006 unwind label %1044

1006:                                             ; preds = %1003
  %1007 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1005)
          to label %1008 unwind label %1044

1008:                                             ; preds = %1006
  store ptr %1007, ptr %77, align 8, !tbaa !5
  %1009 = load ptr, ptr %77, align 8, !tbaa !5
  %1010 = icmp ne ptr %1009, null
  br i1 %1010, label %1011, label %1065

1011:                                             ; preds = %1008
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  %1012 = load ptr, ptr %9, align 8, !tbaa !5
  %1013 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1012)
          to label %1014 unwind label %1048

1014:                                             ; preds = %1011
  %1015 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1013)
          to label %1016 unwind label %1048

1016:                                             ; preds = %1014
  store ptr %1015, ptr %78, align 8, !tbaa !5
  %1017 = load ptr, ptr %78, align 8, !tbaa !5
  %1018 = icmp ne ptr %1017, null
  br i1 %1018, label %1019, label %1061

1019:                                             ; preds = %1016
  br label %1020

1020:                                             ; preds = %1019
  %1021 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1022 unwind label %1048

1022:                                             ; preds = %1020
  br i1 %1021, label %1023, label %1052

1023:                                             ; preds = %1022
  %1024 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1025 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1024, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %1026 unwind label %1048

1026:                                             ; preds = %1023
  %1027 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1025, ptr noundef @.str.84)
          to label %1028 unwind label %1048

1028:                                             ; preds = %1026
  %1029 = load ptr, ptr %77, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %1029, i32 0, i32 0
  %1031 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1027, ptr noundef nonnull align 8 dereferenceable(8) %1030)
          to label %1032 unwind label %1048

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

1034:                                             ; preds = %1032
  %1035 = load ptr, ptr %78, align 8, !tbaa !5
  %1036 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1035, i32 0, i32 0
  %1037 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1033, ptr noundef nonnull align 8 dereferenceable(8) %1036)
          to label %1038 unwind label %1048

1038:                                             ; preds = %1034
  %1039 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1037, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1040 unwind label %1048

1040:                                             ; preds = %1038
  %1041 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1039, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1042 unwind label %1048

1042:                                             ; preds = %1040
  br label %1052

1043:                                             ; preds = %999, %852, %599
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  br label %1087

1044:                                             ; preds = %1006, %1003
  %1045 = landingpad { ptr, i32 }
          cleanup
  %1046 = extractvalue { ptr, i32 } %1045, 0
  store ptr %1046, ptr %13, align 8
  %1047 = extractvalue { ptr, i32 } %1045, 1
  store i32 %1047, ptr %14, align 4
  br label %1082

1048:                                             ; preds = %1054, %1040, %1038, %1034, %1032, %1028, %1026, %1023, %1020, %1014, %1011
  %1049 = landingpad { ptr, i32 }
          cleanup
  %1050 = extractvalue { ptr, i32 } %1049, 0
  store ptr %1050, ptr %13, align 8
  %1051 = extractvalue { ptr, i32 } %1049, 1
  store i32 %1051, ptr %14, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %1082

1052:                                             ; preds = %1042, %1022
  br label %1053

1053:                                             ; preds = %1052
  br label %1054

1054:                                             ; preds = %1053
  %1055 = load ptr, ptr %78, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1055, i32 0, i32 0
  %1057 = load ptr, ptr %77, align 8, !tbaa !5
  %1058 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %1057, i32 0, i32 0
  %1059 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1056, ptr noundef nonnull align 8 dereferenceable(8) %1058)
          to label %1060 unwind label %1048

1060:                                             ; preds = %1054
  store i1 %1059, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %1062

1061:                                             ; preds = %1016
  store i32 0, ptr %21, align 4
  br label %1062

1062:                                             ; preds = %1061, %1060
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  %1063 = load i32, ptr %21, align 4
  switch i32 %1063, label %1066 [
    i32 0, label %1064
  ]

1064:                                             ; preds = %1062
  br label %1065

1065:                                             ; preds = %1064, %1008
  store i32 0, ptr %21, align 4
  br label %1066

1066:                                             ; preds = %1065, %1062
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  %1067 = load i32, ptr %21, align 4
  switch i32 %1067, label %1086 [
    i32 0, label %1068
  ]

1068:                                             ; preds = %1066
  br label %1069

1069:                                             ; preds = %1068
  %1070 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1071 unwind label %288

1071:                                             ; preds = %1069
  br i1 %1070, label %1072, label %1083

1072:                                             ; preds = %1071
  %1073 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %1074 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1073, ptr noundef @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %1075 unwind label %288

1075:                                             ; preds = %1072
  %1076 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1074, ptr noundef @.str.85)
          to label %1077 unwind label %288

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

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

1081:                                             ; preds = %1079
  br label %1083

1082:                                             ; preds = %1048, %1044
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  br label %1087

1083:                                             ; preds = %1081, %1071
  br label %1084

1084:                                             ; preds = %1083
  br label %1085

1085:                                             ; preds = %1084
  store i1 false, ptr %5, align 1
  store i32 1, ptr %21, align 4
  br label %1086

1086:                                             ; preds = %1085, %1066, %1001, %564, %310, %238
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  br label %1088

1087:                                             ; preds = %1082, %1043, %568, %314, %288, %240, %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %22) #8
  br label %1090

1088:                                             ; preds = %1086, %160
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #8
  %1089 = load i1, ptr %5, align 1
  ret i1 %1089

1090:                                             ; preds = %1087, %149, %148, %119, %118, %106
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #8
  br label %1091

1091:                                             ; preds = %1090, %102
  call void @llvm.lifetime.end.p0(i64 40, ptr %10) #8
  br label %1092

1092:                                             ; preds = %1091
  %1093 = load ptr, ptr %13, align 8
  %1094 = load i32, ptr %14, align 4
  %1095 = insertvalue { ptr, i32 } poison, ptr %1093, 0
  %1096 = insertvalue { ptr, i32 } %1095, i32 %1094, 1
  resume { ptr, i32 } %1096

1097:                                             ; preds = %851, %139, %101
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE11equal_rangeIS0_IRKS2_RKNS1_10SimplePathEEEES0_INS8_14const_iteratorESG_ERKT_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(16)) #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt9make_pairISt17reference_wrapperIKN3HIR7TypeRefEES0_IKNS1_10SimplePathEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
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, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{i64 0, i64 8, !5}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = distinct !{!12, !13}
!13 = !{!"llvm.loop.mustprogress"}
!14 = !{!15, !6, i64 0}
!15 = !{!"_ZTSZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_E3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!16 = !{!17, !17, i64 0}
!17 = !{!"bool", !7, i64 0}
!18 = !{i8 0, i8 2}
!19 = !{}
!20 = !{!21, !17, i64 200}
!21 = !{!"_ZTSN3HIR6StructE", !22, i64 0, !39, i64 96, !40, i64 104, !11, i64 136, !11, i64 140, !42, i64 144, !52, i64 200, !56, i64 248}
!22 = !{!"_ZTSN3HIR13GenericParamsE", !23, i64 0, !27, i64 24, !31, i64 48, !35, i64 72}
!23 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !38, i64 0}
!38 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!39 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!40 = !{!"_ZTSN3HIR6Struct4DataE", !41, i64 0, !7, i64 8}
!41 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!42 = !{!"_ZTSN3HIR13TraitMarkingsE", !17, i64 0, !17, i64 1, !17, i64 2, !43, i64 8}
!43 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !44, i64 0}
!44 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !45, i64 0}
!45 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !46, i64 0, !48, i64 8}
!46 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !47, i64 0}
!47 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!48 = !{!"_ZTSSt15_Rb_tree_header", !49, i64 0, !51, i64 32}
!49 = !{!"_ZTSSt18_Rb_tree_node_base", !50, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!50 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!51 = !{!"long", !7, i64 0}
!52 = !{!"_ZTSN3HIR14StructMarkingsE", !17, i64 0, !11, i64 4, !53, i64 8, !11, i64 12, !54, i64 16, !11, i64 20, !11, i64 24, !17, i64 28, !17, i64 29, !55, i64 32}
!53 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!54 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!55 = !{!"_ZTS4U128", !51, i64 0, !51, i64 8}
!56 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!57 = !{!21, !11, i64 204}
!58 = !{!59, !6, i64 136}
!59 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !60, i64 0, !82, i64 144, !86, i64 168}
!60 = !{!"_ZTSN3HIR9TraitPathE", !61, i64 0, !67, i64 8, !74, i64 40, !79, i64 88, !6, i64 136}
!61 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !63, i64 0}
!63 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !64, i64 0}
!64 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !65, i64 0}
!65 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !66, i64 0}
!66 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!67 = !{!"_ZTSN3HIR11GenericPathE", !68, i64 0, !70, i64 8}
!68 = !{!"_ZTSN3HIR10SimplePathE", !69, i64 0}
!69 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!70 = !{!"_ZTSN3HIR10PathParamsE", !71, i64 0, !72, i64 8, !73, i64 16}
!71 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!72 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!73 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!74 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !75, i64 0}
!75 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !76, i64 0}
!76 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !77, i64 0, !48, i64 8}
!77 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !78, i64 0}
!78 = !{!"_ZTSSt4lessI8RcStringE"}
!79 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !80, i64 0}
!80 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !81, i64 0}
!81 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !77, i64 0, !48, i64 8}
!82 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !83, i64 0}
!83 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!86 = !{!"_ZTSN3HIR11LifetimeRefE", !11, i64 0}
!87 = !{!88, !6, i64 24}
!88 = !{!"_ZTSZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_E3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}


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

%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.606 = type { ptr, ptr }
%struct.Span = type { ptr }
%class.anon.607 = type { ptr }
%class.anon.608 = type { ptr }
%"struct.std::pair.444" = type { %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" }
%"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator" = type { %"class.__gnu_cxx::__normal_iterator.439" }
%"class.__gnu_cxx::__normal_iterator.439" = type { ptr }
%"struct.std::pair.446" = type { ptr, ptr }
%"class.std::reference_wrapper" = type { ptr }
%"class.std::reference_wrapper.448" = type { ptr }
%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.571" = type { %"class.std::_Function_base", ptr }
%class.anon.609 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.395" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.__gnu_cxx::__normal_iterator" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.52", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::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.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.52" = type { %"struct.std::_Vector_base.53" }
%"struct.std::_Vector_base.53" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%class.anon.610 = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.611 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.612 = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_ = external hidden unnamed_addr constant [11 x i8], align 1
@.str.75 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.76 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.77 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.78 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.79 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.80 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.81 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.82 = external hidden unnamed_addr constant [19 x i8], align 1
@.str.83 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.84 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.85 = external hidden unnamed_addr constant [31 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3) local_unnamed_addr #2 align 2 personality ptr @__gxx_personality_v0 {
  %5 = alloca %class.TraceLog, align 8
  %6 = alloca %"class.std::function.0", align 8
  %7 = alloca %class.anon.606, align 8
  %8 = alloca %struct.Span, align 8
  %9 = alloca %"class.std::function.0", align 8
  %10 = alloca %class.anon.607, align 8
  %11 = alloca %struct.Span, align 8
  %12 = alloca %"class.std::function.0", align 8
  %13 = alloca %class.anon.608, align 8
  %14 = alloca %"struct.std::pair.444", align 8
  %15 = alloca %"struct.std::pair.446", align 8
  %16 = alloca %"class.std::reference_wrapper", align 8
  %17 = alloca %"class.std::reference_wrapper.448", align 8
  %18 = alloca %"class.RangeVecMap<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound, TraitResolveCommon::CachedBoundCmp>::const_iterator", align 8
  %19 = alloca %struct.MonomorphStatePtr, align 8
  %20 = alloca %"class.std::function.571", align 8
  %21 = alloca %class.anon.609, align 8
  %22 = alloca ptr, align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.395", align 8
  %25 = alloca %"class.HIR::GenericPath", align 8
  %26 = alloca %struct.MonomorphStatePtr, align 8
  %27 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %29 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %30 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %31 = alloca i8, align 1
  %32 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %33 = alloca %"class.HIR::GenericPath", align 8
  %34 = alloca %"struct.HIR::SimplePath", align 8
  %35 = alloca %"struct.HIR::SimplePath", align 8
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function.0", align 8
  %38 = alloca %class.anon.610, align 8
  %39 = alloca %"class.std::function", align 8
  %40 = alloca %class.anon.611, align 8
  %41 = alloca %class.anon.612, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator", align 8
  %44 = alloca %"class.HIR::GenericPath", align 8
  %45 = alloca %"struct.HIR::SimplePath", align 8
  %46 = alloca %"class.std::function", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %5) #7
  %47 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %48 = select i1 %47, ptr @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %7) #7
  store ptr %2, ptr %7, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %7, i64 8
  store ptr %3, ptr %49, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %6, ptr noundef nonnull align 8 dereferenceable(16) %7) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %5, ptr noundef %48, ptr noundef nonnull %6)
          to label %50 unwind label %57

50:                                               ; preds = %4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %6) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %7) #7
  %51 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %52 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %51)
  br i1 %52, label %53, label %68

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

54:                                               ; preds = %53
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #7
  store ptr %2, ptr %10, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull %9)
          to label %55 unwind label %63

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

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

59:                                               ; preds = %.invoke, %83
  %60 = landingpad { ptr, i32 }
          cleanup
  br label %550

61:                                               ; preds = %53
  %62 = landingpad { ptr, i32 }
          cleanup
  br label %65

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

65:                                               ; preds = %63, %61
  %.pn242 = phi { ptr, i32 } [ %64, %63 ], [ %62, %61 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #7
  br label %550

66:                                               ; preds = %55
  %67 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %56) #7
  br label %550

68:                                               ; preds = %50
  %69 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %70 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %69)
  br i1 %70, label %71, label %83

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

72:                                               ; preds = %71
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #7
  store ptr %3, ptr %13, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull %12)
          to label %73 unwind label %78

73:                                               ; preds = %72
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  %74 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %74, ptr noundef nonnull @.str)
          to label %.invoke unwind label %81

.invoke:                                          ; preds = %55, %73
  %75 = phi ptr [ %74, %73 ], [ %56, %55 ]
  invoke void @__cxa_throw(ptr nonnull %75, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %.cont unwind label %59

.cont:                                            ; preds = %.invoke
  unreachable

76:                                               ; preds = %71
  %77 = landingpad { ptr, i32 }
          cleanup
  br label %80

78:                                               ; preds = %72
  %79 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #7
  br label %80

80:                                               ; preds = %78, %76
  %.pn240 = phi { ptr, i32 } [ %79, %78 ], [ %77, %76 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #7
  br label %550

81:                                               ; preds = %73
  %82 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %74) #7
  br label %550

83:                                               ; preds = %68
  %84 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %85 unwind label %59

85:                                               ; preds = %83
  br i1 %84, label %549, label %86

86:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #7
  %87 = call ptr @_ZSt3refIKN3HIR7TypeRefEESt17reference_wrapperIT_ERS4_(ptr noundef nonnull align 8 dereferenceable(8) %3) #7
  store ptr %87, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #7
  %88 = getelementptr inbounds i8, ptr %0, i64 144
  %89 = call ptr @_ZSt3refIKN3HIR10SimplePathEESt17reference_wrapperIT_ERS4_(ptr noundef nonnull align 8 dereferenceable(8) %88) #7
  store ptr %89, ptr %17, align 8
  %90 = invoke { ptr, ptr } @_ZSt9make_pairISt17reference_wrapperIKN3HIR7TypeRefEES0_IKNS1_10SimplePathEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %91 unwind label %103

91:                                               ; preds = %86
  %92 = getelementptr inbounds i8, ptr %0, i64 80
  %93 = extractvalue { ptr, ptr } %90, 0
  store ptr %93, ptr %15, align 8
  %94 = getelementptr inbounds i8, ptr %15, i64 8
  %95 = extractvalue { ptr, ptr } %90, 1
  store ptr %95, ptr %94, align 8
  %96 = invoke { ptr, ptr } @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE11equal_rangeIS0_IRKS2_RKNS1_10SimplePathEEEES0_INS8_14const_iteratorESG_ERKT_(ptr noundef nonnull align 8 dereferenceable(25) %92, ptr noundef nonnull align 8 dereferenceable(16) %15)
          to label %97 unwind label %103

97:                                               ; preds = %91
  %98 = extractvalue { ptr, ptr } %96, 0
  store ptr %98, ptr %14, align 8
  %99 = getelementptr inbounds i8, ptr %14, i64 8
  %100 = extractvalue { ptr, ptr } %96, 1
  store ptr %100, ptr %99, align 8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #7
  %101 = ptrtoint ptr %98 to i64
  store i64 %101, ptr %18, align 8, !tbaa !5
  %102 = call noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %99)
  br i1 %102, label %.lr.ph, label %._crit_edge

103:                                              ; preds = %91, %86
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #7
  br label %548

.lr.ph:                                           ; preds = %97, %.critedge
  %105 = call noundef ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorptEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %106 = getelementptr inbounds i8, ptr %105, i64 24
  %107 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %106, i64 noundef 0)
          to label %108 unwind label %.loopexit282

108:                                              ; preds = %.lr.ph
  %109 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %110 unwind label %.loopexit282

110:                                              ; preds = %108
  br i1 %109, label %111, label %.critedge

111:                                              ; preds = %110
  %112 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %113 unwind label %.loopexit.split-lp

113:                                              ; preds = %111
  br i1 %112, label %114, label %126

114:                                              ; preds = %113
  %115 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %115, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %117 unwind label %.loopexit.split-lp

117:                                              ; preds = %114
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull @.str.75)
          to label %119 unwind label %.loopexit.split-lp

119:                                              ; preds = %117
  %120 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %121 unwind label %.loopexit.split-lp

121:                                              ; preds = %119
  %122 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %120, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %126 unwind label %.loopexit.split-lp

.loopexit282:                                     ; preds = %.lr.ph, %108
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %123

.loopexit.split-lp:                               ; preds = %111, %114, %117, %119, %121
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %123

123:                                              ; preds = %.loopexit.split-lp, %.loopexit282
  %lpad.phi = phi { ptr, i32 } [ %lpad.loopexit, %.loopexit282 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %548

.critedge:                                        ; preds = %110
  %124 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorppEv(ptr noundef nonnull align 8 dereferenceable(8) %18)
  %125 = call noundef zeroext i1 @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE14const_iteratorneERKS9_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %99)
  br i1 %125, label %.lr.ph, label %._crit_edge, !llvm.loop !11

126:                                              ; preds = %121, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  br label %.thread

._crit_edge:                                      ; preds = %.critedge, %97
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #7
  %127 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %128 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %127)
  br i1 %128, label %129, label %155

129:                                              ; preds = %._crit_edge
  %130 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %131 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %130)
  %132 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %131)
  br i1 %132, label %133, label %155

133:                                              ; preds = %129
  %134 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %135 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %134)
  %136 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %135)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %19) #7
  %137 = getelementptr inbounds i8, ptr %136, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %19, ptr noundef nonnull %136, ptr noundef nonnull %137, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %138 unwind label %147

138:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %21) #7
  store ptr %0, ptr %21, align 8, !tbaa !13
  %139 = getelementptr inbounds i8, ptr %21, i64 8
  store ptr %19, ptr %139, align 8, !tbaa !5
  %140 = getelementptr inbounds i8, ptr %21, i64 16
  store ptr %1, ptr %140, align 8, !tbaa !5
  %141 = getelementptr inbounds i8, ptr %21, i64 24
  store ptr %2, ptr %141, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKNS0_7TypeRefESD_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %20, ptr noundef nonnull align 8 dereferenceable(32) %21)
          to label %142 unwind label %149

142:                                              ; preds = %138
  %143 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(80) %136, ptr noundef nonnull %20)
          to label %144 unwind label %151

144:                                              ; preds = %142
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #7
  br i1 %143, label %.thread, label %155

145:                                              ; preds = %546, %544, %542, %539, %536
  %146 = landingpad { ptr, i32 }
          cleanup
  br label %548

147:                                              ; preds = %133
  %148 = landingpad { ptr, i32 }
          cleanup
  br label %154

149:                                              ; preds = %138
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %153

151:                                              ; preds = %142
  %152 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %20) #7
  br label %153

153:                                              ; preds = %151, %149
  %.pn = phi { ptr, i32 } [ %152, %151 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %21) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #7
  br label %154

154:                                              ; preds = %153, %147
  %.pn.pn = phi { ptr, i32 } [ %.pn, %153 ], [ %148, %147 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %19) #7
  br label %548

155:                                              ; preds = %144, %129, %._crit_edge
  %156 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %157 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %156)
  br i1 %157, label %158, label %283

158:                                              ; preds = %155
  %159 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %160 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %159)
  br i1 %160, label %161, label %283

161:                                              ; preds = %158
  %162 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %163 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %162)
  %164 = getelementptr inbounds i8, ptr %163, i64 88
  %165 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %164)
  br i1 %165, label %166, label %175

166:                                              ; preds = %161
  %167 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %168 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %167)
  %169 = getelementptr inbounds i8, ptr %168, i64 88
  %170 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %169)
  %171 = load ptr, ptr %170, align 8, !tbaa !5
  %172 = getelementptr inbounds i8, ptr %171, i64 200
  %173 = load i8, ptr %172, align 8, !tbaa !15, !range !53, !noundef !54
  %174 = trunc nuw i8 %173 to i1
  br label %175

175:                                              ; preds = %166, %161
  %176 = phi i1 [ false, %161 ], [ %174, %166 ]
  %177 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %178 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %177)
  %179 = getelementptr inbounds i8, ptr %178, i64 88
  %180 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %179)
  br i1 %180, label %181, label %190

181:                                              ; preds = %175
  %182 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %183 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %182)
  %184 = getelementptr inbounds i8, ptr %183, i64 88
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %184)
  %186 = load ptr, ptr %185, align 8, !tbaa !5
  %187 = getelementptr inbounds i8, ptr %186, i64 200
  %188 = load i8, ptr %187, align 8, !tbaa !15, !range !53, !noundef !54
  %189 = trunc nuw i8 %188 to i1
  br label %190

190:                                              ; preds = %181, %175
  %191 = phi i1 [ false, %175 ], [ %189, %181 ]
  %brmerge = select i1 %176, i1 true, i1 %191
  br i1 %brmerge, label %192, label %283

192:                                              ; preds = %190
  %193 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %194 unwind label %210

194:                                              ; preds = %192
  br i1 %193, label %195, label %212

195:                                              ; preds = %194
  %196 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %197 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %196, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %198 unwind label %210

198:                                              ; preds = %195
  %199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %197, ptr noundef nonnull @.str.76)
          to label %200 unwind label %210

200:                                              ; preds = %198
  %201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %199, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %202 unwind label %210

202:                                              ; preds = %200
  %203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %201, ptr noundef nonnull @.str.77)
          to label %204 unwind label %210

204:                                              ; preds = %202
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %206 unwind label %210

206:                                              ; preds = %204
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %205, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %208 unwind label %210

208:                                              ; preds = %206
  %209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %212 unwind label %210

210:                                              ; preds = %208, %206, %204, %202, %200, %198, %195, %192
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %548

212:                                              ; preds = %208, %194
  %213 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %214 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %213)
  %215 = getelementptr inbounds i8, ptr %214, i64 88
  %216 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %215)
  %217 = load ptr, ptr %216, align 8, !tbaa !5
  %218 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %219 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %218)
  %220 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %219)
  %221 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %222 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %221)
  %223 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %222)
  %224 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %220, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %225 unwind label %232

225:                                              ; preds = %212
  br i1 %224, label %226, label %234

226:                                              ; preds = %225
  %227 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %228 unwind label %232

228:                                              ; preds = %226
  br i1 %227, label %229, label %.thread

229:                                              ; preds = %228
  %230 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %231 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %230, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %.invoke324 unwind label %232

232:                                              ; preds = %.invoke324, %.invoke323, %.invoke322, %275, %272, %253, %251, %249, %247, %245, %243, %240, %237, %234, %229, %226, %212
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %548

234:                                              ; preds = %225
  %235 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %220, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %236 unwind label %232

236:                                              ; preds = %234
  br i1 %235, label %237, label %272

237:                                              ; preds = %236
  %238 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %239 unwind label %232

239:                                              ; preds = %237
  br i1 %238, label %240, label %255

240:                                              ; preds = %239
  %241 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %242 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %241, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %243 unwind label %232

243:                                              ; preds = %240
  %244 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %242, ptr noundef nonnull @.str.79)
          to label %245 unwind label %232

245:                                              ; preds = %243
  %246 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %244, ptr noundef nonnull align 8 dereferenceable(32) %220)
          to label %247 unwind label %232

247:                                              ; preds = %245
  %248 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %246, ptr noundef nonnull @.str.77)
          to label %249 unwind label %232

249:                                              ; preds = %247
  %250 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %248, ptr noundef nonnull align 8 dereferenceable(32) %223)
          to label %251 unwind label %232

251:                                              ; preds = %249
  %252 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %250, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %253 unwind label %232

253:                                              ; preds = %251
  %254 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %255 unwind label %232

255:                                              ; preds = %253, %239
  %256 = getelementptr inbounds i8, ptr %220, i64 16
  %257 = getelementptr inbounds i8, ptr %217, i64 204
  %258 = load i32, ptr %257, align 4, !tbaa !55
  %259 = zext i32 %258 to i64
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %256, i64 noundef %259)
          to label %261 unwind label %268

261:                                              ; preds = %255
  %262 = getelementptr inbounds i8, ptr %223, i64 16
  %263 = load i32, ptr %257, align 4, !tbaa !55
  %264 = zext i32 %263 to i64
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %262, i64 noundef %264)
          to label %266 unwind label %270

266:                                              ; preds = %261
  %267 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull align 8 dereferenceable(8) %265)
          to label %.thread unwind label %270

268:                                              ; preds = %255
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %548

270:                                              ; preds = %266, %261
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %548

272:                                              ; preds = %236
  %273 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %274 unwind label %232

274:                                              ; preds = %272
  br i1 %273, label %275, label %.thread

275:                                              ; preds = %274
  %276 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %276, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %.invoke324 unwind label %232

.invoke324:                                       ; preds = %229, %275
  %278 = phi ptr [ %277, %275 ], [ %231, %229 ]
  %279 = phi ptr [ @.str.80, %275 ], [ @.str.78, %229 ]
  %280 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull %279)
          to label %.invoke323 unwind label %232

.invoke323:                                       ; preds = %.invoke324
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %280, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke322 unwind label %232

.invoke322:                                       ; preds = %.invoke323
  %282 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread unwind label %232

283:                                              ; preds = %190, %158, %155
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %284 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %285 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %284)
  store ptr %285, ptr %22, align 8, !tbaa !5
  %.not = icmp eq ptr %285, null
  br i1 %.not, label %.thread269, label %288

.thread269:                                       ; preds = %283
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  %286 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %287 = call noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %286)
  %.not236 = icmp eq ptr %287, null
  br i1 %.not236, label %536, label %510

288:                                              ; preds = %283
  %289 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %290 unwind label %306

290:                                              ; preds = %288
  br i1 %289, label %291, label %308

291:                                              ; preds = %290
  %292 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %292, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %294 unwind label %306

294:                                              ; preds = %291
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull @.str.81)
          to label %296 unwind label %306

296:                                              ; preds = %294
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %298 unwind label %306

298:                                              ; preds = %296
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef nonnull @.str.77)
          to label %300 unwind label %306

300:                                              ; preds = %298
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %302 unwind label %306

302:                                              ; preds = %300
  %303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %304 unwind label %306

304:                                              ; preds = %302
  %305 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %308 unwind label %306

306:                                              ; preds = %304, %302, %300, %298, %296, %294, %291, %288
  %307 = landingpad { ptr, i32 }
          cleanup
  br label %531

308:                                              ; preds = %304, %290
  %309 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %310 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %309)
  %.not208 = icmp eq ptr %310, null
  br i1 %.not208, label %.thread267, label %311

311:                                              ; preds = %308
  %312 = load ptr, ptr %22, align 8, !tbaa !5
  %313 = getelementptr inbounds i8, ptr %312, i64 8
  %314 = getelementptr inbounds i8, ptr %310, i64 8
  %315 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %313, ptr noundef nonnull align 8 dereferenceable(8) %314)
          to label %316 unwind label %325

316:                                              ; preds = %311
  br i1 %315, label %317, label %368

317:                                              ; preds = %316
  %318 = getelementptr inbounds i8, ptr %310, i64 136
  %319 = load ptr, ptr %318, align 8, !tbaa !56
  %320 = getelementptr inbounds i8, ptr %319, i64 368
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %321 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %320) #7
  store ptr %321, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %322 = call ptr @_ZNKSt6vectorIN3HIR9TraitPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %320) #7
  store ptr %322, ptr %24, align 8
  %323 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %323, label %.lr.ph294, label %.loopexit321

.lr.ph294:                                        ; preds = %317
  %324 = getelementptr inbounds i8, ptr %310, i64 16
  br label %327

325:                                              ; preds = %383, %381, %379, %376, %373, %368, %311
  %326 = landingpad { ptr, i32 }
          cleanup
  br label %531

327:                                              ; preds = %.lr.ph294, %.thread256
  %328 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %329 = getelementptr inbounds i8, ptr %328, i64 8
  %330 = load ptr, ptr %22, align 8, !tbaa !5
  %331 = getelementptr inbounds i8, ptr %330, i64 8
  %332 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %329, ptr noundef nonnull align 8 dereferenceable(8) %331)
          to label %333 unwind label %341

333:                                              ; preds = %327
  br i1 %332, label %334, label %.thread256

334:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %25) #7
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %26) #7
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %26, ptr noundef null, ptr noundef nonnull %324, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %335 unwind label %343

335:                                              ; preds = %334
  invoke void @_ZNK13Monomorphiser21monomorph_genericpathERK4SpanRKN3HIR11GenericPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %25, ptr noundef nonnull align 8 dereferenceable(96) %26, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %329, i1 noundef zeroext true, i1 noundef zeroext false)
          to label %336 unwind label %345

336:                                              ; preds = %335
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %26) #7
  %337 = load ptr, ptr %22, align 8, !tbaa !5
  %338 = getelementptr inbounds i8, ptr %337, i64 8
  %339 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(32) %338)
          to label %340 unwind label %348

340:                                              ; preds = %336
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br i1 %339, label %354, label %.thread256

341:                                              ; preds = %327
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %353

343:                                              ; preds = %334
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %347

345:                                              ; preds = %335
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %26) #7
  br label %347

347:                                              ; preds = %345, %343
  %.pn209 = phi { ptr, i32 } [ %346, %345 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %26) #7
  br label %350

348:                                              ; preds = %336
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #7
  br label %350

350:                                              ; preds = %348, %347
  %.pn211 = phi { ptr, i32 } [ %349, %348 ], [ %.pn209, %347 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %25) #7
  br label %353

.thread256:                                       ; preds = %340, %333
  %351 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %352 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR9TraitPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %352, label %327, label %.loopexit321

353:                                              ; preds = %350, %341
  %.pn211.pn = phi { ptr, i32 } [ %.pn211, %350 ], [ %342, %341 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %531

354:                                              ; preds = %340
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %385

.loopexit321:                                     ; preds = %.thread256, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  %355 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %356 unwind label %366

356:                                              ; preds = %.loopexit321
  br i1 %355, label %357, label %.thread262

357:                                              ; preds = %356
  %358 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %359 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %358, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %360 unwind label %366

360:                                              ; preds = %357
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull @.str.82)
          to label %362 unwind label %366

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

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

366:                                              ; preds = %364, %362, %360, %357, %.loopexit321
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %531

368:                                              ; preds = %316
  %369 = load ptr, ptr %22, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %369, i64 8
  %371 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %370, ptr noundef nonnull align 8 dereferenceable(32) %314)
          to label %372 unwind label %325

372:                                              ; preds = %368
  br i1 %371, label %373, label %385

373:                                              ; preds = %372
  %374 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %375 unwind label %325

375:                                              ; preds = %373
  br i1 %374, label %376, label %.thread272

376:                                              ; preds = %375
  %377 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %377, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %379 unwind label %325

379:                                              ; preds = %376
  %380 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %378, ptr noundef nonnull @.str.83)
          to label %381 unwind label %325

381:                                              ; preds = %379
  %382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %380, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %383 unwind label %325

383:                                              ; preds = %381
  %384 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %382, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread272 unwind label %325

385:                                              ; preds = %354, %372
  %386 = load ptr, ptr %22, align 8, !tbaa !5
  %387 = getelementptr inbounds i8, ptr %386, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #7
  %388 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %387) #7
  store ptr %388, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #7
  %389 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %387) #7
  store ptr %389, ptr %28, align 8
  %390 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br i1 %390, label %.lr.ph300, label %.loopexit

.lr.ph300:                                        ; preds = %385
  %391 = getelementptr inbounds i8, ptr %310, i64 144
  br label %392

392:                                              ; preds = %.lr.ph300, %405
  %393 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  %394 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #7
  store ptr %394, ptr %29, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  %395 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %391) #7
  store ptr %395, ptr %30, align 8
  %396 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br i1 %396, label %.lr.ph296, label %.critedge281

.lr.ph296:                                        ; preds = %392, %402
  %397 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  %398 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %397, ptr noundef nonnull align 8 dereferenceable(32) %393)
          to label %399 unwind label %400

399:                                              ; preds = %.lr.ph296
  br i1 %398, label %405, label %402

400:                                              ; preds = %.lr.ph296
  %401 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %531

402:                                              ; preds = %399
  %403 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  %404 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br i1 %404, label %.lr.ph296, label %.critedge281

405:                                              ; preds = %399
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  %406 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #7
  %407 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br i1 %407, label %392, label %.loopexit

.critedge281:                                     ; preds = %392, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  br label %.loopexit

.loopexit:                                        ; preds = %405, %385, %.critedge281
  %not. = phi i1 [ false, %.critedge281 ], [ true, %385 ], [ true, %405 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #7
  br label %.thread262

.thread272:                                       ; preds = %383, %375
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %.thread

.thread267:                                       ; preds = %308
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #7
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %32) #7
  invoke void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %32)
          to label %408 unwind label %430

408:                                              ; preds = %.thread267
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #7
  %409 = load ptr, ptr %22, align 8, !tbaa !5
  %410 = getelementptr inbounds i8, ptr %409, i64 8
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %410)
          to label %411 unwind label %432

411:                                              ; preds = %408
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull %34)
          to label %412 unwind label %434

412:                                              ; preds = %411
  %413 = getelementptr inbounds i8, ptr %32, i64 8
  %414 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR11GenericPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %413, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %415 unwind label %436

415:                                              ; preds = %412
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  %416 = load ptr, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #7
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %417 unwind label %440

417:                                              ; preds = %415
  %418 = getelementptr inbounds i8, ptr %416, i64 8
  %419 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %418, ptr noundef nonnull align 8 dereferenceable(8) %35)
          to label %420 unwind label %442

420:                                              ; preds = %417
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br i1 %419, label %421, label %455

421:                                              ; preds = %420
  %422 = load ptr, ptr %22, align 8, !tbaa !5
  %423 = getelementptr inbounds i8, ptr %422, i64 144
  %424 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %423) #7
  %.not225 = icmp eq i64 %424, 0
  br i1 %.not225, label %425, label %454

425:                                              ; preds = %421
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %426 unwind label %445

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %38) #7
  store ptr %2, ptr %38, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 8 dereferenceable(8) %38) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %427 unwind label %447

427:                                              ; preds = %426
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %38) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  %428 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef nonnull @.str)
          to label %429 unwind label %450

429:                                              ; preds = %427
  invoke void @__cxa_throw(ptr nonnull %428, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %552 unwind label %452

430:                                              ; preds = %.thread267
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %509

432:                                              ; preds = %408
  %433 = landingpad { ptr, i32 }
          cleanup
  br label %439

434:                                              ; preds = %411
  %435 = landingpad { ptr, i32 }
          cleanup
  br label %438

436:                                              ; preds = %412
  %437 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %438

438:                                              ; preds = %436, %434
  %.pn218 = phi { ptr, i32 } [ %437, %436 ], [ %435, %434 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #7
  br label %439

439:                                              ; preds = %438, %432
  %.pn218.pn = phi { ptr, i32 } [ %.pn218, %438 ], [ %433, %432 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #7
  br label %508

440:                                              ; preds = %415
  %441 = landingpad { ptr, i32 }
          cleanup
  br label %444

442:                                              ; preds = %417
  %443 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  br label %444

444:                                              ; preds = %442, %440
  %.pn221 = phi { ptr, i32 } [ %443, %442 ], [ %441, %440 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #7
  br label %508

445:                                              ; preds = %425
  %446 = landingpad { ptr, i32 }
          cleanup
  br label %449

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

449:                                              ; preds = %447, %445
  %.pn226 = phi { ptr, i32 } [ %448, %447 ], [ %446, %445 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %508

450:                                              ; preds = %427
  %451 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %428) #7
  br label %508

452:                                              ; preds = %429
  %453 = landingpad { ptr, i32 }
          cleanup
  br label %508

454:                                              ; preds = %421
  store i8 1, ptr %31, align 1, !tbaa !85
  br label %471

455:                                              ; preds = %420
  store i8 0, ptr %31, align 1, !tbaa !85
  %456 = load ptr, ptr %22, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %40) #7
  store ptr %31, ptr %40, align 8, !tbaa !5
  %457 = getelementptr inbounds i8, ptr %40, i64 8
  store ptr %22, ptr %457, align 8, !tbaa !5
  %458 = getelementptr inbounds i8, ptr %40, i64 16
  store ptr %3, ptr %458, align 8, !tbaa !5
  %459 = getelementptr inbounds i8, ptr %40, i64 24
  store ptr %0, ptr %459, align 8, !tbaa !86
  %460 = getelementptr inbounds i8, ptr %40, i64 32
  store ptr %1, ptr %460, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(40) %40)
          to label %461 unwind label %466

461:                                              ; preds = %455
  %462 = getelementptr inbounds i8, ptr %456, i64 8
  %463 = getelementptr inbounds i8, ptr %456, i64 16
  %464 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef nonnull align 8 dereferenceable(24) %463, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %39)
          to label %465 unwind label %468

465:                                              ; preds = %461
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #7
  br label %471

466:                                              ; preds = %455
  %467 = landingpad { ptr, i32 }
          cleanup
  br label %470

468:                                              ; preds = %461
  %469 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %470

470:                                              ; preds = %468, %466
  %.pn223 = phi { ptr, i32 } [ %469, %468 ], [ %467, %466 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %40) #7
  br label %508

471:                                              ; preds = %465, %454
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #7
  store ptr %32, ptr %41, align 8, !tbaa !5
  %472 = load ptr, ptr %22, align 8, !tbaa !5
  %473 = getelementptr inbounds i8, ptr %472, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #7
  %474 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %473) #7
  store ptr %474, ptr %42, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #7
  %475 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %473) #7
  store ptr %475, ptr %43, align 8
  %476 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br i1 %476, label %.lr.ph305, label %.critedge250

.lr.ph305:                                        ; preds = %471
  %477 = getelementptr inbounds i8, ptr %32, i64 144
  br label %478

478:                                              ; preds = %.lr.ph305, %488
  %479 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  %480 = load i8, ptr %31, align 1, !tbaa !85, !range !53, !noundef !54
  %481 = trunc nuw i8 %480 to i1
  br i1 %481, label %482, label %.critedge250

482:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %44) #7
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %479)
          to label %483 unwind label %495

483:                                              ; preds = %482
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull %45)
          to label %484 unwind label %497

484:                                              ; preds = %483
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %477, ptr noundef nonnull align 8 dereferenceable(32) %44)
          to label %485 unwind label %499

485:                                              ; preds = %484
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  %486 = getelementptr inbounds i8, ptr %479, i64 8
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IRZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefESB_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  %487 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %479, ptr noundef nonnull align 8 dereferenceable(24) %486, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %46)
          to label %488 unwind label %503

488:                                              ; preds = %485
  %489 = load i8, ptr %31, align 1, !tbaa !85, !range !53, !noundef !54
  %490 = icmp ne i8 %489, 0
  %491 = and i1 %487, %490
  %492 = zext i1 %491 to i8
  store i8 %492, ptr %31, align 1, !tbaa !85
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  %494 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br i1 %494, label %478, label %.critedge250

495:                                              ; preds = %482
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %502

497:                                              ; preds = %483
  %498 = landingpad { ptr, i32 }
          cleanup
  br label %501

499:                                              ; preds = %484
  %500 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #7
  br label %501

501:                                              ; preds = %499, %497
  %.pn228 = phi { ptr, i32 } [ %500, %499 ], [ %498, %497 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br label %502

502:                                              ; preds = %501, %495
  %.pn228.pn = phi { ptr, i32 } [ %.pn228, %501 ], [ %496, %495 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %44) #7
  br label %505

503:                                              ; preds = %485
  %504 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #7
  br label %505

505:                                              ; preds = %503, %502
  %.pn231 = phi { ptr, i32 } [ %504, %503 ], [ %.pn228.pn, %502 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  br label %508

.critedge250:                                     ; preds = %488, %478, %471
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #7
  %506 = load i8, ptr %31, align 1, !tbaa !85, !range !53, !noundef !54
  %507 = trunc nuw i8 %506 to i1
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #7
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %32) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  br label %.thread262

508:                                              ; preds = %505, %470, %452, %450, %449, %444, %439
  %.pn231.pn = phi { ptr, i32 } [ %.pn231, %505 ], [ %453, %452 ], [ %451, %450 ], [ %.pn226, %449 ], [ %.pn223, %470 ], [ %.pn221, %444 ], [ %.pn218.pn, %439 ]
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %32) #7
  br label %509

509:                                              ; preds = %508, %430
  %.pn231.pn.pn = phi { ptr, i32 } [ %.pn231.pn, %508 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #7
  br label %531

.thread262:                                       ; preds = %.loopexit, %356, %364, %.critedge250
  %.14 = phi i1 [ %507, %.critedge250 ], [ %not., %.loopexit ], [ false, %356 ], [ false, %364 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %.thread

510:                                              ; preds = %.thread269
  %511 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %512 = call noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %511)
  %.not237 = icmp eq ptr %512, null
  br i1 %.not237, label %536, label %513

513:                                              ; preds = %510
  %514 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %515 unwind label %532

515:                                              ; preds = %513
  br i1 %514, label %516, label %534

516:                                              ; preds = %515
  %517 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !9
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %517, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_)
          to label %519 unwind label %532

519:                                              ; preds = %516
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef nonnull @.str.84)
          to label %521 unwind label %532

521:                                              ; preds = %519
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %520, ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %523 unwind label %532

523:                                              ; preds = %521
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %522, ptr noundef nonnull @.str.77)
          to label %525 unwind label %532

525:                                              ; preds = %523
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %527 unwind label %532

527:                                              ; preds = %525
  %528 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %526, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %529 unwind label %532

529:                                              ; preds = %527
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %534 unwind label %532

531:                                              ; preds = %325, %400, %366, %353, %509, %306
  %.pn231.pn.pn.pn = phi { ptr, i32 } [ %.pn231.pn.pn, %509 ], [ %307, %306 ], [ %401, %400 ], [ %326, %325 ], [ %367, %366 ], [ %.pn211.pn, %353 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  br label %548

532:                                              ; preds = %534, %529, %527, %525, %523, %521, %519, %516, %513
  %533 = landingpad { ptr, i32 }
          cleanup
  br label %548

534:                                              ; preds = %529, %515
  %535 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %.thread unwind label %532

536:                                              ; preds = %.thread269, %510
  %537 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %538 unwind label %145

538:                                              ; preds = %536
  br i1 %537, label %539, label %.thread

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

542:                                              ; preds = %539
  %543 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %541, ptr noundef nonnull @.str.85)
          to label %544 unwind label %145

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

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

.thread:                                          ; preds = %.invoke322, %.thread262, %228, %266, %274, %534, %.thread272, %126, %538, %546, %144
  %.18 = phi i1 [ %.14, %.thread262 ], [ true, %144 ], [ false, %126 ], [ false, %546 ], [ false, %538 ], [ false, %.thread272 ], [ %535, %534 ], [ false, %274 ], [ %267, %266 ], [ false, %228 ], [ false, %.invoke322 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %549

548:                                              ; preds = %210, %268, %270, %232, %532, %531, %154, %145, %123, %103
  %.pn238 = phi { ptr, i32 } [ %146, %145 ], [ %533, %532 ], [ %.pn231.pn.pn.pn, %531 ], [ %.pn.pn, %154 ], [ %lpad.phi, %123 ], [ %104, %103 ], [ %211, %210 ], [ %233, %232 ], [ %271, %270 ], [ %269, %268 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #7
  br label %550

549:                                              ; preds = %85, %.thread
  %.19 = phi i1 [ %.18, %.thread ], [ true, %85 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  ret i1 %.19

550:                                              ; preds = %548, %81, %80, %66, %65, %59
  %.pn244 = phi { ptr, i32 } [ %60, %59 ], [ %67, %66 ], [ %.pn242, %65 ], [ %82, %81 ], [ %.pn240, %80 ], [ %.pn238, %548 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %5) #7
  br label %551

551:                                              ; preds = %550, %57
  %.pn244.pn = phi { ptr, i32 } [ %.pn244, %550 ], [ %58, %57 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %5) #7
  resume { ptr, i32 } %.pn244.pn

552:                                              ; preds = %429
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZNK11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE11equal_rangeIS0_IRKS2_RKNS1_10SimplePathEEEES0_INS8_14const_iteratorESG_ERKT_(ptr noundef nonnull align 8 dereferenceable(25), ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare dso_local { ptr, ptr } @_ZSt9make_pairISt17reference_wrapperIKN3HIR7TypeRefEES0_IKNS1_10SimplePathEEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS9_INSA_IT0_E4typeEE6__typeEEOSB_OSG_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172)) unnamed_addr #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #4 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 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { nounwind }
attributes #8 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"int", !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_E3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!16, !38, i64 200}
!16 = !{!"_ZTSN3HIR6StructE", !17, i64 0, !34, i64 96, !35, i64 104, !10, i64 136, !10, i64 140, !37, i64 144, !48, i64 200, !52, i64 248}
!17 = !{!"_ZTSN3HIR13GenericParamsE", !18, i64 0, !22, i64 24, !26, i64 48, !30, i64 72}
!18 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !31, i64 0}
!31 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!34 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!35 = !{!"_ZTSN3HIR6Struct4DataE", !36, i64 0, !7, i64 8}
!36 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!37 = !{!"_ZTSN3HIR13TraitMarkingsE", !38, i64 0, !38, i64 1, !38, i64 2, !39, i64 8}
!38 = !{!"bool", !7, i64 0}
!39 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !40, i64 0}
!40 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !41, i64 0}
!41 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !42, i64 0, !44, i64 8}
!42 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !43, i64 0}
!43 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!44 = !{!"_ZTSSt15_Rb_tree_header", !45, i64 0, !47, i64 32}
!45 = !{!"_ZTSSt18_Rb_tree_node_base", !46, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!46 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!47 = !{!"long", !7, i64 0}
!48 = !{!"_ZTSN3HIR14StructMarkingsE", !38, i64 0, !10, i64 4, !49, i64 8, !10, i64 12, !50, i64 16, !10, i64 20, !10, i64 24, !38, i64 28, !38, i64 29, !51, i64 32}
!49 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!50 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!51 = !{!"_ZTS4U128", !47, i64 0, !47, i64 8}
!52 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!53 = !{i8 0, i8 2}
!54 = !{}
!55 = !{!16, !10, i64 204}
!56 = !{!57, !6, i64 136}
!57 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !58, i64 0, !80, i64 144, !84, i64 168}
!58 = !{!"_ZTSN3HIR9TraitPathE", !59, i64 0, !65, i64 8, !72, i64 40, !77, i64 88, !6, i64 136}
!59 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !60, i64 0}
!60 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !61, i64 0}
!61 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !63, i64 0}
!63 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!65 = !{!"_ZTSN3HIR11GenericPathE", !66, i64 0, !68, i64 8}
!66 = !{!"_ZTSN3HIR10SimplePathE", !67, i64 0}
!67 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!68 = !{!"_ZTSN3HIR10PathParamsE", !69, i64 0, !70, i64 8, !71, i64 16}
!69 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!70 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!71 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!72 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !73, i64 0}
!73 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !74, i64 0}
!74 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !75, i64 0, !44, i64 8}
!75 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !76, i64 0}
!76 = !{!"_ZTSSt4lessI8RcStringE"}
!77 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !78, i64 0}
!78 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !79, i64 0}
!79 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !75, i64 0, !44, i64 8}
!80 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !81, i64 0}
!81 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !83, i64 0}
!83 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!84 = !{!"_ZTSN3HIR11LifetimeRefE", !10, i64 0}
!85 = !{!38, !38, i64 0}
!86 = !{!87, !6, i64 24}
!87 = !{!"_ZTSZNK18StaticTraitResolve10can_unsizeERK4SpanRKN3HIR7TypeRefES6_E3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}


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