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

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

%class.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.502 = type { ptr, ptr }
%class.anon.503 = type { ptr, ptr, ptr, ptr }
%"class.HIR::TypeRef" = 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.anon.504 = type { ptr, ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.505 = type { ptr }
%class.anon.506 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.507" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.514" = type { ptr }
%class.anon.515 = type { ptr, ptr }
%class.anon.516 = type { ptr }
%class.anon.517 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.518" = type { ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.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.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.508" }
%"class.std::shared_ptr.508" = type { %"class.std::__shared_ptr.509" }
%"class.std::__shared_ptr.509" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair.512" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"class.HIR::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.81", [8 x i8] }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::Enum::DataVariant" = type { %class.RcString, i8, %"class.HIR::TypeRef" }
%"class.HIR::Union" = type { %"class.HIR::GenericParams", i32, %"class.std::vector.257", %"struct.HIR::TraitMarkings" }
%"class.std::vector.257" = type { %"struct.std::_Vector_base.258" }
%"struct.std::_Vector_base.258" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"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
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE = external hidden unnamed_addr constant [167 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

; 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

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

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

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

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

; 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 #7 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 nounwind uwtable
declare dso_local noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184)) #4 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: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(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 %3, ptr noundef nonnull align 8 dereferenceable(8) %4) #7 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca i32, align 4
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca %class.TraceLog, align 8
  %13 = alloca %"class.std::function.0", align 8
  %14 = alloca %class.anon.502, align 8
  %15 = alloca ptr, align 8
  %16 = alloca i32, align 4
  %17 = alloca %class.anon.503, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca i32, align 4
  %21 = alloca i8, align 1
  %22 = alloca i32, align 4
  %23 = alloca ptr, align 8
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %struct.MonomorphStatePtr, align 8
  %28 = alloca %class.anon.504, align 8
  %29 = alloca i8, align 1
  %30 = alloca ptr, align 8
  %31 = alloca i8, align 1
  %32 = alloca ptr, align 8
  %33 = alloca %struct.Span, align 8
  %34 = alloca %"class.std::function.0", align 8
  %35 = alloca %class.anon.505, align 8
  %36 = alloca i8, align 1
  %37 = alloca ptr, align 8
  %38 = alloca %struct.Span, align 8
  %39 = alloca %"class.std::function.0", align 8
  %40 = alloca %class.anon.506, align 8
  %41 = alloca i8, align 1
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %49 = alloca ptr, align 8
  %50 = alloca ptr, align 8
  %51 = alloca i32, align 4
  %52 = alloca ptr, align 8
  %53 = alloca ptr, align 8
  %54 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %55 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca i32, align 4
  %59 = alloca i8, align 1
  %60 = alloca ptr, align 8
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %64 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %65 = alloca ptr, align 8
  %66 = alloca ptr, align 8
  %67 = alloca i32, align 4
  %68 = alloca i8, align 1
  %69 = alloca ptr, align 8
  %70 = alloca ptr, align 8
  %71 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %72 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %73 = alloca ptr, align 8
  %74 = alloca ptr, align 8
  %75 = alloca i32, align 4
  %76 = alloca i8, align 1
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::function.0", align 8
  %81 = alloca %class.anon.515, align 8
  %82 = alloca i8, align 1
  %83 = alloca ptr, align 8
  %84 = alloca %struct.Span, align 8
  %85 = alloca %"class.std::function.0", align 8
  %86 = alloca %class.anon.516, align 8
  %87 = alloca i8, align 1
  %88 = alloca ptr, align 8
  %89 = alloca i8, align 1
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca %struct.Span, align 8
  %93 = alloca %"class.std::function.0", align 8
  %94 = alloca %class.anon.517, align 8
  %95 = alloca ptr, align 8
  %96 = alloca i32, align 4
  %97 = alloca ptr, align 8
  %98 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %99 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %100 = alloca ptr, align 8
  %101 = alloca i32, align 4
  %102 = alloca ptr, align 8
  store ptr %0, ptr %7, align 8, !tbaa !5
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  %103 = load ptr, ptr %7, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %12) #8
  %104 = call noundef zeroext i1 @_Z13debug_enabledv()
  %105 = zext i1 %104 to i64
  %106 = select i1 %104, ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %14) #8
  %107 = getelementptr inbounds %class.anon.502, ptr %14, i32 0, i32 0
  %108 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %108, ptr %107, align 8, !tbaa !5
  %109 = getelementptr inbounds %class.anon.502, ptr %14, i32 0, i32 1
  %110 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %110, ptr %109, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef %106, ptr noundef %13)
          to label %111 unwind label %131

111:                                              ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %17) #8
  %112 = getelementptr inbounds %class.anon.503, ptr %17, i32 0, i32 0
  store ptr %103, ptr %112, align 8, !tbaa !9
  %113 = getelementptr inbounds %class.anon.503, ptr %17, i32 0, i32 1
  %114 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %114, ptr %113, align 8, !tbaa !5
  %115 = getelementptr inbounds %class.anon.503, ptr %17, i32 0, i32 2
  %116 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %116, ptr %115, align 8, !tbaa !5
  %117 = getelementptr inbounds %class.anon.503, ptr %17, i32 0, i32 3
  store ptr %10, ptr %117, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #8
  %118 = load ptr, ptr %11, align 8, !tbaa !5
  %119 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %120 unwind label %135

120:                                              ; preds = %111
  %121 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %119)
          to label %122 unwind label %135

122:                                              ; preds = %120
  store ptr %121, ptr %18, align 8, !tbaa !5
  %123 = load ptr, ptr %18, align 8, !tbaa !5
  %124 = icmp ne ptr %123, null
  br i1 %124, label %125, label %974

125:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %19) #8
  %126 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %126, ptr %19, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %20) #8
  store i32 0, ptr %20, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 1, ptr %21) #8
  store i8 1, ptr %21, align 1, !tbaa !13
  br label %127

127:                                              ; preds = %968, %125
  %128 = load i8, ptr %21, align 1, !tbaa !13, !range !15, !noundef !16
  %129 = trunc i8 %128 to i1
  br i1 %129, label %139, label %130

130:                                              ; preds = %127
  store i32 2, ptr %22, align 4
  br label %969

131:                                              ; preds = %5
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %15, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %14) #8
  br label %1046

135:                                              ; preds = %120, %111
  %136 = landingpad { ptr, i32 }
          cleanup
  %137 = extractvalue { ptr, i32 } %136, 0
  store ptr %137, ptr %15, align 8
  %138 = extractvalue { ptr, i32 } %136, 1
  store i32 %138, ptr %16, align 4
  br label %1045

139:                                              ; preds = %127
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #8
  %140 = load ptr, ptr %19, align 8, !tbaa !5
  %141 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %140, i32 0, i32 0
  %142 = getelementptr inbounds %"class.HIR::Path", ptr %141, i32 0, i32 0
  store ptr %142, ptr %23, align 8, !tbaa !5
  br label %143

143:                                              ; preds = %963, %139
  %144 = load i8, ptr %21, align 1, !tbaa !13, !range !15, !noundef !16
  %145 = trunc i8 %144 to i1
  br i1 %145, label %147, label %146

146:                                              ; preds = %143
  store i32 5, ptr %22, align 4
  br label %964

147:                                              ; preds = %143
  %148 = load ptr, ptr %23, align 8, !tbaa !5
  %149 = invoke noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %148)
          to label %150 unwind label %151

150:                                              ; preds = %147
  switch i32 %149, label %962 [
    i32 0, label %155
    i32 1, label %156
    i32 4, label %837
    i32 3, label %884
    i32 2, label %911
  ]

151:                                              ; preds = %147
  %152 = landingpad { ptr, i32 }
          cleanup
  %153 = extractvalue { ptr, i32 } %152, 0
  store ptr %153, ptr %15, align 8
  %154 = extractvalue { ptr, i32 } %152, 1
  store i32 %154, ptr %16, align 4
  br label %966

155:                                              ; preds = %150
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1340, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

156:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #8
  store i8 1, ptr %24, align 1, !tbaa !13
  br label %157

157:                                              ; preds = %833, %156
  %158 = load i8, ptr %24, align 1, !tbaa !13, !range !15, !noundef !16
  %159 = trunc i8 %158 to i1
  br i1 %159, label %161, label %160

160:                                              ; preds = %157
  store i32 9, ptr %22, align 4
  br label %834

161:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #8
  %162 = load ptr, ptr %23, align 8, !tbaa !5
  %163 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %162)
          to label %164 unwind label %170

164:                                              ; preds = %161
  store ptr %163, ptr %25, align 8, !tbaa !5
  br label %165

165:                                              ; preds = %825, %164
  %166 = load ptr, ptr %25, align 8, !tbaa !5
  %167 = load i8, ptr %24, align 1, !tbaa !13, !range !15, !noundef !16
  %168 = trunc i8 %167 to i1
  br i1 %168, label %174, label %169

169:                                              ; preds = %165
  store i32 12, ptr %22, align 4
  br label %829

170:                                              ; preds = %161
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %15, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %16, align 4
  br label %831

174:                                              ; preds = %165
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26)
          to label %175 unwind label %188

175:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 128, ptr %27) #8
  %176 = load ptr, ptr %25, align 8, !tbaa !5
  %177 = getelementptr inbounds %"class.HIR::GenericPath", ptr %176, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %27, ptr noundef null, ptr noundef %177, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %178 unwind label %192

178:                                              ; preds = %175
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #8
  %179 = getelementptr inbounds %class.anon.504, ptr %28, i32 0, i32 0
  store ptr %103, ptr %179, align 8, !tbaa !17
  %180 = getelementptr inbounds %class.anon.504, ptr %28, i32 0, i32 1
  %181 = load ptr, ptr %8, align 8, !tbaa !5
  store ptr %181, ptr %180, align 8, !tbaa !5
  %182 = getelementptr inbounds %class.anon.504, ptr %28, i32 0, i32 2
  store ptr %26, ptr %182, align 8, !tbaa !5
  %183 = getelementptr inbounds %class.anon.504, ptr %28, i32 0, i32 3
  store ptr %27, ptr %183, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %29) #8
  store i8 1, ptr %29, align 1, !tbaa !13
  br label %184

184:                                              ; preds = %798, %178
  %185 = load i8, ptr %29, align 1, !tbaa !13, !range !15, !noundef !16
  %186 = trunc i8 %185 to i1
  br i1 %186, label %196, label %187

187:                                              ; preds = %184
  store i32 15, ptr %22, align 4
  br label %799

188:                                              ; preds = %174
  %189 = landingpad { ptr, i32 }
          cleanup
  %190 = extractvalue { ptr, i32 } %189, 0
  store ptr %190, ptr %15, align 8
  %191 = extractvalue { ptr, i32 } %189, 1
  store i32 %191, ptr %16, align 4
  br label %828

192:                                              ; preds = %175
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %15, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %16, align 4
  br label %827

196:                                              ; preds = %184
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #8
  %197 = load ptr, ptr %19, align 8, !tbaa !5
  %198 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %197, i32 0, i32 1
  store ptr %198, ptr %30, align 8, !tbaa !5
  br label %199

199:                                              ; preds = %793, %196
  %200 = load i8, ptr %29, align 1, !tbaa !13, !range !15, !noundef !16
  %201 = trunc i8 %200 to i1
  br i1 %201, label %203, label %202

202:                                              ; preds = %199
  store i32 18, ptr %22, align 4
  br label %794

203:                                              ; preds = %199
  %204 = load ptr, ptr %30, align 8, !tbaa !5
  %205 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %204)
          to label %206 unwind label %207

206:                                              ; preds = %203
  switch i32 %205, label %792 [
    i32 0, label %211
    i32 2, label %212
    i32 1, label %259
    i32 4, label %306
    i32 6, label %523
    i32 5, label %638
    i32 3, label %739
  ]

207:                                              ; preds = %203
  %208 = landingpad { ptr, i32 }
          cleanup
  %209 = extractvalue { ptr, i32 } %208, 0
  store ptr %209, ptr %15, align 8
  %210 = extractvalue { ptr, i32 } %208, 1
  store i32 %210, ptr %16, align 4
  br label %796

211:                                              ; preds = %206
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1349, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

212:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #8
  store i8 1, ptr %31, align 1, !tbaa !13
  br label %213

213:                                              ; preds = %257, %212
  %214 = load i8, ptr %31, align 1, !tbaa !13, !range !15, !noundef !16
  %215 = trunc i8 %214 to i1
  br i1 %215, label %217, label %216

216:                                              ; preds = %213
  store i32 22, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %258

217:                                              ; preds = %213
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #8
  %218 = load ptr, ptr %30, align 8, !tbaa !5
  %219 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %218)
          to label %220 unwind label %226

220:                                              ; preds = %217
  store ptr %219, ptr %32, align 8, !tbaa !5
  br label %221

221:                                              ; preds = %254, %220
  %222 = load ptr, ptr %32, align 8, !tbaa !5
  %223 = load i8, ptr %31, align 1, !tbaa !13, !range !15, !noundef !16
  %224 = trunc i8 %223 to i1
  br i1 %224, label %230, label %225

225:                                              ; preds = %221
  store i32 25, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  br label %256

226:                                              ; preds = %238, %217
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %15, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %16, align 4
  br label %255

230:                                              ; preds = %221
  br label %231

231:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #8
  %232 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %232)
          to label %233 unwind label %239

233:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #8
  %234 = getelementptr inbounds %class.anon.505, ptr %35, i32 0, i32 0
  %235 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %235, ptr %234, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef %34)
          to label %236 unwind label %243

236:                                              ; preds = %233
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  %237 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %237, ptr noundef @.str)
          to label %238 unwind label %248

238:                                              ; preds = %236
  invoke void @__cxa_throw(ptr %237, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1052 unwind label %226

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

243:                                              ; preds = %233
  %244 = landingpad { ptr, i32 }
          cleanup
  %245 = extractvalue { ptr, i32 } %244, 0
  store ptr %245, ptr %15, align 8
  %246 = extractvalue { ptr, i32 } %244, 1
  store i32 %246, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %247

247:                                              ; preds = %243, %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #8
  br label %255

248:                                              ; preds = %236
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %15, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %16, align 4
  call void @__cxa_free_exception(ptr %237) #8
  br label %255

252:                                              ; No predecessors!
  br label %253

253:                                              ; preds = %252
  br label %254

254:                                              ; preds = %253
  store i8 0, ptr %31, align 1, !tbaa !13
  br label %221, !llvm.loop !19

255:                                              ; preds = %248, %247, %226
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #8
  br label %796

256:                                              ; preds = %225
  br label %257

257:                                              ; preds = %256
  store i8 0, ptr %31, align 1, !tbaa !13
  br label %213, !llvm.loop !21

258:                                              ; preds = %216
  br label %792

259:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %36) #8
  store i8 1, ptr %36, align 1, !tbaa !13
  br label %260

260:                                              ; preds = %304, %259
  %261 = load i8, ptr %36, align 1, !tbaa !13, !range !15, !noundef !16
  %262 = trunc i8 %261 to i1
  br i1 %262, label %264, label %263

263:                                              ; preds = %260
  store i32 30, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %305

264:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #8
  %265 = load ptr, ptr %30, align 8, !tbaa !5
  %266 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %265)
          to label %267 unwind label %273

267:                                              ; preds = %264
  store ptr %266, ptr %37, align 8, !tbaa !5
  br label %268

268:                                              ; preds = %301, %267
  %269 = load ptr, ptr %37, align 8, !tbaa !5
  %270 = load i8, ptr %36, align 1, !tbaa !13, !range !15, !noundef !16
  %271 = trunc i8 %270 to i1
  br i1 %271, label %277, label %272

272:                                              ; preds = %268
  store i32 33, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  br label %303

273:                                              ; preds = %285, %264
  %274 = landingpad { ptr, i32 }
          cleanup
  %275 = extractvalue { ptr, i32 } %274, 0
  store ptr %275, ptr %15, align 8
  %276 = extractvalue { ptr, i32 } %274, 1
  store i32 %276, ptr %16, align 4
  br label %302

277:                                              ; preds = %268
  br label %278

278:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #8
  %279 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef nonnull align 8 dereferenceable(8) %279)
          to label %280 unwind label %286

280:                                              ; preds = %278
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  %281 = getelementptr inbounds %class.anon.506, ptr %40, i32 0, i32 0
  %282 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %282, ptr %281, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %38, ptr noundef %39)
          to label %283 unwind label %290

283:                                              ; preds = %280
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  %284 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %284, ptr noundef @.str)
          to label %285 unwind label %295

285:                                              ; preds = %283
  invoke void @__cxa_throw(ptr %284, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1052 unwind label %273

286:                                              ; preds = %278
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %15, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %16, align 4
  br label %294

290:                                              ; preds = %280
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %15, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #8
  br label %294

294:                                              ; preds = %290, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #8
  br label %302

295:                                              ; preds = %283
  %296 = landingpad { ptr, i32 }
          cleanup
  %297 = extractvalue { ptr, i32 } %296, 0
  store ptr %297, ptr %15, align 8
  %298 = extractvalue { ptr, i32 } %296, 1
  store i32 %298, ptr %16, align 4
  call void @__cxa_free_exception(ptr %284) #8
  br label %302

299:                                              ; No predecessors!
  br label %300

300:                                              ; preds = %299
  br label %301

301:                                              ; preds = %300
  store i8 0, ptr %36, align 1, !tbaa !13
  br label %268, !llvm.loop !22

302:                                              ; preds = %295, %294, %273
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %36) #8
  br label %796

303:                                              ; preds = %272
  br label %304

304:                                              ; preds = %303
  store i8 0, ptr %36, align 1, !tbaa !13
  br label %260, !llvm.loop !23

305:                                              ; preds = %263
  br label %792

306:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %41) #8
  store i8 1, ptr %41, align 1, !tbaa !13
  br label %307

307:                                              ; preds = %519, %306
  %308 = load i8, ptr %41, align 1, !tbaa !13, !range !15, !noundef !16
  %309 = trunc i8 %308 to i1
  br i1 %309, label %311, label %310

310:                                              ; preds = %307
  store i32 38, ptr %22, align 4
  br label %520

311:                                              ; preds = %307
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  %312 = load ptr, ptr %30, align 8, !tbaa !5
  %313 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %312)
          to label %314 unwind label %320

314:                                              ; preds = %311
  store ptr %313, ptr %42, align 8, !tbaa !5
  br label %315

315:                                              ; preds = %513, %314
  %316 = load ptr, ptr %42, align 8, !tbaa !5
  %317 = load i8, ptr %41, align 1, !tbaa !13, !range !15, !noundef !16
  %318 = trunc i8 %317 to i1
  br i1 %318, label %324, label %319

319:                                              ; preds = %315
  store i32 41, ptr %22, align 4
  br label %515

320:                                              ; preds = %311
  %321 = landingpad { ptr, i32 }
          cleanup
  %322 = extractvalue { ptr, i32 } %321, 0
  store ptr %322, ptr %15, align 8
  %323 = extractvalue { ptr, i32 } %321, 1
  store i32 %323, ptr %16, align 4
  br label %517

324:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #8
  %325 = load ptr, ptr %42, align 8, !tbaa !5
  %326 = load ptr, ptr %325, align 8, !tbaa !5
  store ptr %326, ptr %43, align 8, !tbaa !5
  %327 = load ptr, ptr %43, align 8, !tbaa !5
  %328 = getelementptr inbounds %"class.HIR::Struct", ptr %327, i32 0, i32 3
  %329 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %328)
          to label %330 unwind label %331

330:                                              ; preds = %324
  switch i32 %329, label %509 [
    i32 0, label %335
    i32 1, label %336
    i32 2, label %346
    i32 3, label %424
  ]

331:                                              ; preds = %324
  %332 = landingpad { ptr, i32 }
          cleanup
  %333 = extractvalue { ptr, i32 } %332, 0
  store ptr %333, ptr %15, align 8
  %334 = extractvalue { ptr, i32 } %332, 1
  store i32 %334, ptr %16, align 4
  br label %514

335:                                              ; preds = %330
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 1386, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

336:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #8
  %337 = load ptr, ptr %43, align 8, !tbaa !5
  %338 = getelementptr inbounds %"class.HIR::Struct", ptr %337, i32 0, i32 3
  %339 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %338)
          to label %340 unwind label %342

340:                                              ; preds = %336
  store ptr %339, ptr %44, align 8, !tbaa !5
  %341 = load ptr, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %509

342:                                              ; preds = %336
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %15, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #8
  br label %514

346:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #8
  %347 = load ptr, ptr %43, align 8, !tbaa !5
  %348 = getelementptr inbounds %"class.HIR::Struct", ptr %347, i32 0, i32 3
  %349 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %348)
          to label %350 unwind label %362

350:                                              ; preds = %346
  store ptr %349, ptr %45, align 8, !tbaa !5
  %351 = load ptr, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #8
  %352 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %352, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #8
  %353 = load ptr, ptr %46, align 8, !tbaa !5
  %354 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %353) #8
  %355 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.507", ptr %47, i32 0, i32 0
  store ptr %354, ptr %355, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #8
  %356 = load ptr, ptr %46, align 8, !tbaa !5
  %357 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %356) #8
  %358 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.507", ptr %48, i32 0, i32 0
  store ptr %357, ptr %358, align 8
  br label %359

359:                                              ; preds = %414, %350
  %360 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br i1 %360, label %366, label %361

361:                                              ; preds = %359
  store i32 45, ptr %22, align 4
  br label %417

362:                                              ; preds = %346
  %363 = landingpad { ptr, i32 }
          cleanup
  %364 = extractvalue { ptr, i32 } %363, 0
  store ptr %364, ptr %15, align 8
  %365 = extractvalue { ptr, i32 } %363, 1
  store i32 %365, ptr %16, align 4
  br label %423

366:                                              ; preds = %359
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #8
  %367 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  store ptr %367, ptr %49, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #8
  %368 = load ptr, ptr %49, align 8, !tbaa !5
  %369 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %368, i32 0, i32 1
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %369)
          to label %371 unwind label %388

371:                                              ; preds = %366
  store ptr %370, ptr %50, align 8, !tbaa !5
  br label %372

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

374:                                              ; preds = %372
  br i1 %373, label %375, label %392

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

378:                                              ; preds = %375
  %379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef @.str.46)
          to label %380 unwind label %388

380:                                              ; preds = %378
  %381 = load ptr, ptr %50, align 8, !tbaa !5
  %382 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %379, ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %383 unwind label %388

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

385:                                              ; preds = %383
  %386 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %387 unwind label %388

387:                                              ; preds = %385
  br label %392

388:                                              ; preds = %385, %383, %380, %378, %375, %372, %366
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %15, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %16, align 4
  br label %416

392:                                              ; preds = %387, %374
  br label %393

393:                                              ; preds = %392
  br label %394

394:                                              ; preds = %393
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #8
  %395 = load ptr, ptr %50, align 8, !tbaa !5
  %396 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %395)
          to label %397 unwind label %403

397:                                              ; preds = %394
  store i32 %396, ptr %51, align 4, !tbaa !11
  %398 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %51)
          to label %399 unwind label %403

399:                                              ; preds = %397
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  %400 = load i32, ptr %20, align 4, !tbaa !11
  %401 = icmp eq i32 %400, 2
  br i1 %401, label %402, label %407

402:                                              ; preds = %399
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %408

403:                                              ; preds = %397, %394
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %15, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #8
  br label %416

407:                                              ; preds = %399
  store i32 0, ptr %22, align 4
  br label %408

408:                                              ; preds = %407, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  %409 = load i32, ptr %22, align 4
  switch i32 %409, label %411 [
    i32 0, label %410
  ]

410:                                              ; preds = %408
  store i32 0, ptr %22, align 4
  br label %411

411:                                              ; preds = %410, %408
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  %412 = load i32, ptr %22, align 4
  switch i32 %412, label %417 [
    i32 0, label %413
  ]

413:                                              ; preds = %411
  br label %414

414:                                              ; preds = %413
  %415 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %47) #8
  br label %359

416:                                              ; preds = %403, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  br label %423

417:                                              ; preds = %411, %361
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #8
  %418 = load i32, ptr %22, align 4
  switch i32 %418, label %420 [
    i32 45, label %419
  ]

419:                                              ; preds = %417
  store i32 0, ptr %22, align 4
  br label %420

420:                                              ; preds = %419, %417
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  %421 = load i32, ptr %22, align 4
  switch i32 %421, label %510 [
    i32 0, label %422
  ]

422:                                              ; preds = %420
  br label %509

423:                                              ; preds = %416, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #8
  br label %514

424:                                              ; preds = %330
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #8
  %425 = load ptr, ptr %43, align 8, !tbaa !5
  %426 = getelementptr inbounds %"class.HIR::Struct", ptr %425, i32 0, i32 3
  %427 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %426)
          to label %428 unwind label %440

428:                                              ; preds = %424
  store ptr %427, ptr %52, align 8, !tbaa !5
  %429 = load ptr, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #8
  %430 = load ptr, ptr %52, align 8, !tbaa !5
  store ptr %430, ptr %53, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #8
  %431 = load ptr, ptr %53, align 8, !tbaa !5
  %432 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %431) #8
  %433 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %54, i32 0, i32 0
  store ptr %432, ptr %433, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #8
  %434 = load ptr, ptr %53, align 8, !tbaa !5
  %435 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %434) #8
  %436 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %55, i32 0, i32 0
  store ptr %435, ptr %436, align 8
  br label %437

437:                                              ; preds = %499, %428
  %438 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br i1 %438, label %444, label %439

439:                                              ; preds = %437
  store i32 49, ptr %22, align 4
  br label %502

440:                                              ; preds = %424
  %441 = landingpad { ptr, i32 }
          cleanup
  %442 = extractvalue { ptr, i32 } %441, 0
  store ptr %442, ptr %15, align 8
  %443 = extractvalue { ptr, i32 } %441, 1
  store i32 %443, ptr %16, align 4
  br label %508

444:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #8
  %445 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  store ptr %445, ptr %56, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #8
  %446 = load ptr, ptr %56, align 8, !tbaa !5
  %447 = getelementptr inbounds %"struct.std::pair.512", ptr %446, i32 0, i32 1
  %448 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %447, i32 0, i32 1
  %449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %448)
          to label %450 unwind label %473

450:                                              ; preds = %444
  store ptr %449, ptr %57, align 8, !tbaa !5
  br label %451

451:                                              ; preds = %450
  %452 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %453 unwind label %473

453:                                              ; preds = %451
  br i1 %452, label %454, label %477

454:                                              ; preds = %453
  %455 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !24
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %455, ptr noundef @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %457 unwind label %473

457:                                              ; preds = %454
  %458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef @.str.47)
          to label %459 unwind label %473

459:                                              ; preds = %457
  %460 = load ptr, ptr %56, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.std::pair.512", ptr %460, i32 0, i32 0
  %462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %461)
          to label %463 unwind label %473

463:                                              ; preds = %459
  %464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %462, ptr noundef @.str.48)
          to label %465 unwind label %473

465:                                              ; preds = %463
  %466 = load ptr, ptr %57, align 8, !tbaa !5
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %464, ptr noundef nonnull align 8 dereferenceable(8) %466)
          to label %468 unwind label %473

468:                                              ; preds = %465
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef @_ZSt3decRSt8ios_base)
          to label %470 unwind label %473

470:                                              ; preds = %468
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %472 unwind label %473

472:                                              ; preds = %470
  br label %477

473:                                              ; preds = %470, %468, %465, %463, %459, %457, %454, %451, %444
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %15, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %16, align 4
  br label %501

477:                                              ; preds = %472, %453
  br label %478

478:                                              ; preds = %477
  br label %479

479:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 4, ptr %58) #8
  %480 = load ptr, ptr %57, align 8, !tbaa !5
  %481 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %482 unwind label %488

482:                                              ; preds = %479
  store i32 %481, ptr %58, align 4, !tbaa !11
  %483 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %58)
          to label %484 unwind label %488

484:                                              ; preds = %482
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  %485 = load i32, ptr %20, align 4, !tbaa !11
  %486 = icmp eq i32 %485, 2
  br i1 %486, label %487, label %492

487:                                              ; preds = %484
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %493

488:                                              ; preds = %482, %479
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %15, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %58) #8
  br label %501

492:                                              ; preds = %484
  store i32 0, ptr %22, align 4
  br label %493

493:                                              ; preds = %492, %487
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #8
  %494 = load i32, ptr %22, align 4
  switch i32 %494, label %496 [
    i32 0, label %495
  ]

495:                                              ; preds = %493
  store i32 0, ptr %22, align 4
  br label %496

496:                                              ; preds = %495, %493
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #8
  %497 = load i32, ptr %22, align 4
  switch i32 %497, label %502 [
    i32 0, label %498
  ]

498:                                              ; preds = %496
  br label %499

499:                                              ; preds = %498
  %500 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %437

501:                                              ; preds = %488, %473
  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 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  br label %508

502:                                              ; preds = %496, %439
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #8
  %503 = load i32, ptr %22, align 4
  switch i32 %503, label %505 [
    i32 49, label %504
  ]

504:                                              ; preds = %502
  store i32 0, ptr %22, align 4
  br label %505

505:                                              ; preds = %504, %502
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  %506 = load i32, ptr %22, align 4
  switch i32 %506, label %510 [
    i32 0, label %507
  ]

507:                                              ; preds = %505
  br label %509

508:                                              ; preds = %501, %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #8
  br label %514

509:                                              ; preds = %507, %422, %340, %330
  store i32 0, ptr %22, align 4
  br label %510

510:                                              ; preds = %509, %505, %420
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  %511 = load i32, ptr %22, align 4
  switch i32 %511, label %515 [
    i32 0, label %512
  ]

512:                                              ; preds = %510
  br label %513

513:                                              ; preds = %512
  store i8 0, ptr %41, align 1, !tbaa !13
  br label %315, !llvm.loop !26

514:                                              ; preds = %508, %423, %342, %331
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #8
  br label %517

515:                                              ; preds = %510, %319
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  %516 = load i32, ptr %22, align 4
  switch i32 %516, label %520 [
    i32 41, label %518
  ]

517:                                              ; preds = %514, %320
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  br label %796

518:                                              ; preds = %515
  br label %519

519:                                              ; preds = %518
  store i8 0, ptr %41, align 1, !tbaa !13
  br label %307, !llvm.loop !27

520:                                              ; preds = %515, %310
  call void @llvm.lifetime.end.p0(i64 1, ptr %41) #8
  %521 = load i32, ptr %22, align 4
  switch i32 %521, label %794 [
    i32 38, label %522
  ]

522:                                              ; preds = %520
  br label %792

523:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %59) #8
  store i8 1, ptr %59, align 1, !tbaa !13
  br label %524

524:                                              ; preds = %634, %523
  %525 = load i8, ptr %59, align 1, !tbaa !13, !range !15, !noundef !16
  %526 = trunc i8 %525 to i1
  br i1 %526, label %528, label %527

527:                                              ; preds = %524
  store i32 53, ptr %22, align 4
  br label %635

528:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #8
  %529 = load ptr, ptr %30, align 8, !tbaa !5
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %529)
          to label %531 unwind label %537

531:                                              ; preds = %528
  store ptr %530, ptr %60, align 8, !tbaa !5
  br label %532

532:                                              ; preds = %628, %531
  %533 = load ptr, ptr %60, align 8, !tbaa !5
  %534 = load i8, ptr %59, align 1, !tbaa !13, !range !15, !noundef !16
  %535 = trunc i8 %534 to i1
  br i1 %535, label %541, label %536

536:                                              ; preds = %532
  store i32 56, ptr %22, align 4
  br label %630

537:                                              ; preds = %528
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %15, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %16, align 4
  br label %632

541:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #8
  %542 = load ptr, ptr %60, align 8, !tbaa !5
  %543 = load ptr, ptr %542, align 8, !tbaa !5
  %544 = getelementptr inbounds %"class.HIR::Enum", ptr %543, i32 0, i32 3
  %545 = invoke noundef ptr @_ZNK3HIR4Enum5Class8opt_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %544)
          to label %546 unwind label %560

546:                                              ; preds = %541
  store ptr %545, ptr %61, align 8, !tbaa !5
  %547 = load ptr, ptr %61, align 8, !tbaa !5
  %548 = icmp ne ptr %547, null
  br i1 %548, label %549, label %624

549:                                              ; preds = %546
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #8
  %550 = load ptr, ptr %61, align 8, !tbaa !5
  store ptr %550, ptr %62, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #8
  %551 = load ptr, ptr %62, align 8, !tbaa !5
  %552 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %551) #8
  %553 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.514", ptr %63, i32 0, i32 0
  store ptr %552, ptr %553, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #8
  %554 = load ptr, ptr %62, align 8, !tbaa !5
  %555 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %554) #8
  %556 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.514", ptr %64, i32 0, i32 0
  store ptr %555, ptr %556, align 8
  br label %557

557:                                              ; preds = %618, %549
  %558 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  br i1 %558, label %564, label %559

559:                                              ; preds = %557
  store i32 59, ptr %22, align 4
  br label %621

560:                                              ; preds = %541
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %15, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %16, align 4
  br label %629

564:                                              ; preds = %557
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #8
  %565 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  store ptr %565, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #8
  %566 = load ptr, ptr %65, align 8, !tbaa !5
  %567 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %566, i32 0, i32 2
  %568 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %567)
          to label %569 unwind label %592

569:                                              ; preds = %564
  store ptr %568, ptr %66, align 8, !tbaa !5
  br label %570

570:                                              ; preds = %569
  %571 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %572 unwind label %592

572:                                              ; preds = %570
  br i1 %571, label %573, label %596

573:                                              ; preds = %572
  %574 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !24
  %575 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %574, ptr noundef @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %576 unwind label %592

576:                                              ; preds = %573
  %577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %575, ptr noundef @.str.49)
          to label %578 unwind label %592

578:                                              ; preds = %576
  %579 = load ptr, ptr %65, align 8, !tbaa !5
  %580 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %579, i32 0, i32 0
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull align 8 dereferenceable(8) %580)
          to label %582 unwind label %592

582:                                              ; preds = %578
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef @.str.50)
          to label %584 unwind label %592

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

587:                                              ; preds = %584
  %588 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %586, ptr noundef @_ZSt3decRSt8ios_base)
          to label %589 unwind label %592

589:                                              ; preds = %587
  %590 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %588, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %591 unwind label %592

591:                                              ; preds = %589
  br label %596

592:                                              ; preds = %589, %587, %584, %582, %578, %576, %573, %570, %564
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %15, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %16, align 4
  br label %620

596:                                              ; preds = %591, %572
  br label %597

597:                                              ; preds = %596
  br label %598

598:                                              ; preds = %597
  call void @llvm.lifetime.start.p0(i64 4, ptr %67) #8
  %599 = load ptr, ptr %66, align 8, !tbaa !5
  %600 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %599)
          to label %601 unwind label %607

601:                                              ; preds = %598
  store i32 %600, ptr %67, align 4, !tbaa !11
  %602 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %67)
          to label %603 unwind label %607

603:                                              ; preds = %601
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  %604 = load i32, ptr %20, align 4, !tbaa !11
  %605 = icmp eq i32 %604, 2
  br i1 %605, label %606, label %611

606:                                              ; preds = %603
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %612

607:                                              ; preds = %601, %598
  %608 = landingpad { ptr, i32 }
          cleanup
  %609 = extractvalue { ptr, i32 } %608, 0
  store ptr %609, ptr %15, align 8
  %610 = extractvalue { ptr, i32 } %608, 1
  store i32 %610, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %67) #8
  br label %620

611:                                              ; preds = %603
  store i32 0, ptr %22, align 4
  br label %612

612:                                              ; preds = %611, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  %613 = load i32, ptr %22, align 4
  switch i32 %613, label %615 [
    i32 0, label %614
  ]

614:                                              ; preds = %612
  store i32 0, ptr %22, align 4
  br label %615

615:                                              ; preds = %614, %612
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  %616 = load i32, ptr %22, align 4
  switch i32 %616, label %621 [
    i32 0, label %617
  ]

617:                                              ; preds = %615
  br label %618

618:                                              ; preds = %617
  %619 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %63) #8
  br label %557

620:                                              ; preds = %607, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  br label %629

621:                                              ; preds = %615, %559
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #8
  %622 = load i32, ptr %22, align 4
  switch i32 %622, label %625 [
    i32 59, label %623
  ]

623:                                              ; preds = %621
  br label %624

624:                                              ; preds = %623, %546
  store i32 0, ptr %22, align 4
  br label %625

625:                                              ; preds = %624, %621
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  %626 = load i32, ptr %22, align 4
  switch i32 %626, label %630 [
    i32 0, label %627
  ]

627:                                              ; preds = %625
  br label %628

628:                                              ; preds = %627
  store i8 0, ptr %59, align 1, !tbaa !13
  br label %532, !llvm.loop !28

629:                                              ; preds = %620, %560
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #8
  br label %632

630:                                              ; preds = %625, %536
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  %631 = load i32, ptr %22, align 4
  switch i32 %631, label %635 [
    i32 56, label %633
  ]

632:                                              ; preds = %629, %537
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  br label %796

633:                                              ; preds = %630
  br label %634

634:                                              ; preds = %633
  store i8 0, ptr %59, align 1, !tbaa !13
  br label %524, !llvm.loop !29

635:                                              ; preds = %630, %527
  call void @llvm.lifetime.end.p0(i64 1, ptr %59) #8
  %636 = load i32, ptr %22, align 4
  switch i32 %636, label %794 [
    i32 53, label %637
  ]

637:                                              ; preds = %635
  br label %792

638:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %68) #8
  store i8 1, ptr %68, align 1, !tbaa !13
  br label %639

639:                                              ; preds = %735, %638
  %640 = load i8, ptr %68, align 1, !tbaa !13, !range !15, !noundef !16
  %641 = trunc i8 %640 to i1
  br i1 %641, label %643, label %642

642:                                              ; preds = %639
  store i32 63, ptr %22, align 4
  br label %736

643:                                              ; preds = %639
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #8
  %644 = load ptr, ptr %30, align 8, !tbaa !5
  %645 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %644)
          to label %646 unwind label %652

646:                                              ; preds = %643
  store ptr %645, ptr %69, align 8, !tbaa !5
  br label %647

647:                                              ; preds = %730, %646
  %648 = load ptr, ptr %69, align 8, !tbaa !5
  %649 = load i8, ptr %68, align 1, !tbaa !13, !range !15, !noundef !16
  %650 = trunc i8 %649 to i1
  br i1 %650, label %656, label %651

651:                                              ; preds = %647
  store i32 66, ptr %22, align 4
  br label %731

652:                                              ; preds = %643
  %653 = landingpad { ptr, i32 }
          cleanup
  %654 = extractvalue { ptr, i32 } %653, 0
  store ptr %654, ptr %15, align 8
  %655 = extractvalue { ptr, i32 } %653, 1
  store i32 %655, ptr %16, align 4
  br label %733

656:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #8
  %657 = load ptr, ptr %69, align 8, !tbaa !5
  %658 = load ptr, ptr %657, align 8, !tbaa !5
  %659 = getelementptr inbounds %"class.HIR::Union", ptr %658, i32 0, i32 2
  store ptr %659, ptr %70, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #8
  %660 = load ptr, ptr %70, align 8, !tbaa !5
  %661 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %660) #8
  %662 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %71, i32 0, i32 0
  store ptr %661, ptr %662, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #8
  %663 = load ptr, ptr %70, align 8, !tbaa !5
  %664 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %663) #8
  %665 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %72, i32 0, i32 0
  store ptr %664, ptr %665, align 8
  br label %666

666:                                              ; preds = %724, %656
  %667 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %72) #8
  br i1 %667, label %669, label %668

668:                                              ; preds = %666
  store i32 69, ptr %22, align 4
  br label %727

669:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #8
  %670 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  store ptr %670, ptr %73, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #8
  %671 = load ptr, ptr %73, align 8, !tbaa !5
  %672 = getelementptr inbounds %"struct.std::pair.512", ptr %671, i32 0, i32 1
  %673 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %672, i32 0, i32 1
  %674 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(8) %673)
          to label %675 unwind label %698

675:                                              ; preds = %669
  store ptr %674, ptr %74, align 8, !tbaa !5
  br label %676

676:                                              ; preds = %675
  %677 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %678 unwind label %698

678:                                              ; preds = %676
  br i1 %677, label %679, label %702

679:                                              ; preds = %678
  %680 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !24
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %680, ptr noundef @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %682 unwind label %698

682:                                              ; preds = %679
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef @.str.51)
          to label %684 unwind label %698

684:                                              ; preds = %682
  %685 = load ptr, ptr %73, align 8, !tbaa !5
  %686 = getelementptr inbounds %"struct.std::pair.512", ptr %685, i32 0, i32 0
  %687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef nonnull align 8 dereferenceable(8) %686)
          to label %688 unwind label %698

688:                                              ; preds = %684
  %689 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %687, ptr noundef @.str.48)
          to label %690 unwind label %698

690:                                              ; preds = %688
  %691 = load ptr, ptr %74, align 8, !tbaa !5
  %692 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %689, ptr noundef nonnull align 8 dereferenceable(8) %691)
          to label %693 unwind label %698

693:                                              ; preds = %690
  %694 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %692, ptr noundef @_ZSt3decRSt8ios_base)
          to label %695 unwind label %698

695:                                              ; preds = %693
  %696 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %694, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %697 unwind label %698

697:                                              ; preds = %695
  br label %702

698:                                              ; preds = %695, %693, %690, %688, %684, %682, %679, %676, %669
  %699 = landingpad { ptr, i32 }
          cleanup
  %700 = extractvalue { ptr, i32 } %699, 0
  store ptr %700, ptr %15, align 8
  %701 = extractvalue { ptr, i32 } %699, 1
  store i32 %701, ptr %16, align 4
  br label %726

702:                                              ; preds = %697, %678
  br label %703

703:                                              ; preds = %702
  br label %704

704:                                              ; preds = %703
  call void @llvm.lifetime.start.p0(i64 4, ptr %75) #8
  %705 = load ptr, ptr %74, align 8, !tbaa !5
  %706 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %705)
          to label %707 unwind label %713

707:                                              ; preds = %704
  store i32 %706, ptr %75, align 4, !tbaa !11
  %708 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %20, ptr noundef nonnull align 4 dereferenceable(4) %75)
          to label %709 unwind label %713

709:                                              ; preds = %707
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  %710 = load i32, ptr %20, align 4, !tbaa !11
  %711 = icmp eq i32 %710, 2
  br i1 %711, label %712, label %717

712:                                              ; preds = %709
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %718

713:                                              ; preds = %707, %704
  %714 = landingpad { ptr, i32 }
          cleanup
  %715 = extractvalue { ptr, i32 } %714, 0
  store ptr %715, ptr %15, align 8
  %716 = extractvalue { ptr, i32 } %714, 1
  store i32 %716, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %75) #8
  br label %726

717:                                              ; preds = %709
  store i32 0, ptr %22, align 4
  br label %718

718:                                              ; preds = %717, %712
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  %719 = load i32, ptr %22, align 4
  switch i32 %719, label %721 [
    i32 0, label %720
  ]

720:                                              ; preds = %718
  store i32 0, ptr %22, align 4
  br label %721

721:                                              ; preds = %720, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #8
  %722 = load i32, ptr %22, align 4
  switch i32 %722, label %727 [
    i32 0, label %723
  ]

723:                                              ; preds = %721
  br label %724

724:                                              ; preds = %723
  %725 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %71) #8
  br label %666

726:                                              ; preds = %713, %698
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #8
  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
  br label %733

727:                                              ; preds = %721, %668
  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
  %728 = load i32, ptr %22, align 4
  switch i32 %728, label %731 [
    i32 69, label %729
  ]

729:                                              ; preds = %727
  br label %730

730:                                              ; preds = %729
  store i8 0, ptr %68, align 1, !tbaa !13
  br label %647, !llvm.loop !30

731:                                              ; preds = %727, %651
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  %732 = load i32, ptr %22, align 4
  switch i32 %732, label %736 [
    i32 66, label %734
  ]

733:                                              ; preds = %726, %652
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  br label %796

734:                                              ; preds = %731
  br label %735

735:                                              ; preds = %734
  store i8 0, ptr %68, align 1, !tbaa !13
  br label %639, !llvm.loop !31

736:                                              ; preds = %731, %642
  call void @llvm.lifetime.end.p0(i64 1, ptr %68) #8
  %737 = load i32, ptr %22, align 4
  switch i32 %737, label %794 [
    i32 63, label %738
  ]

738:                                              ; preds = %736
  br label %792

739:                                              ; preds = %206
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #8
  store i8 1, ptr %76, align 1, !tbaa !13
  br label %740

740:                                              ; preds = %790, %739
  %741 = load i8, ptr %76, align 1, !tbaa !13, !range !15, !noundef !16
  %742 = trunc i8 %741 to i1
  br i1 %742, label %744, label %743

743:                                              ; preds = %740
  store i32 73, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #8
  br label %791

744:                                              ; preds = %740
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #8
  %745 = load ptr, ptr %30, align 8, !tbaa !5
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %745)
          to label %747 unwind label %753

747:                                              ; preds = %744
  store ptr %746, ptr %77, align 8, !tbaa !5
  br label %748

748:                                              ; preds = %787, %747
  %749 = load ptr, ptr %77, align 8, !tbaa !5
  %750 = load i8, ptr %76, align 1, !tbaa !13, !range !15, !noundef !16
  %751 = trunc i8 %750 to i1
  br i1 %751, label %757, label %752

752:                                              ; preds = %748
  store i32 76, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  br label %789

753:                                              ; preds = %744
  %754 = landingpad { ptr, i32 }
          cleanup
  %755 = extractvalue { ptr, i32 } %754, 0
  store ptr %755, ptr %15, align 8
  %756 = extractvalue { ptr, i32 } %754, 1
  store i32 %756, ptr %16, align 4
  br label %788

757:                                              ; preds = %748
  br label %758

758:                                              ; preds = %757
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #8
  store ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #8
  %759 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %759)
          to label %760 unwind label %767

760:                                              ; preds = %758
  call void @llvm.lifetime.start.p0(i64 16, ptr %81) #8
  %761 = getelementptr inbounds %class.anon.515, ptr %81, i32 0, i32 0
  store ptr %78, ptr %761, align 8, !tbaa !5
  %762 = getelementptr inbounds %class.anon.515, ptr %81, i32 0, i32 1
  %763 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %763, ptr %762, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(16) %81) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef %80)
          to label %764 unwind label %771

764:                                              ; preds = %760
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  %765 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %765, ptr noundef @.str.3)
          to label %766 unwind label %776

766:                                              ; preds = %764
  invoke void @__cxa_throw(ptr %765, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1052 unwind label %780

767:                                              ; preds = %758
  %768 = landingpad { ptr, i32 }
          cleanup
  %769 = extractvalue { ptr, i32 } %768, 0
  store ptr %769, ptr %15, align 8
  %770 = extractvalue { ptr, i32 } %768, 1
  store i32 %770, ptr %16, align 4
  br label %775

771:                                              ; preds = %760
  %772 = landingpad { ptr, i32 }
          cleanup
  %773 = extractvalue { ptr, i32 } %772, 0
  store ptr %773, ptr %15, align 8
  %774 = extractvalue { ptr, i32 } %772, 1
  store i32 %774, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %81) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #8
  br label %775

775:                                              ; preds = %771, %767
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #8
  br label %784

776:                                              ; preds = %764
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %15, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %16, align 4
  call void @__cxa_free_exception(ptr %765) #8
  br label %784

780:                                              ; preds = %766
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %15, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %16, align 4
  br label %784

784:                                              ; preds = %780, %776, %775
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #8
  br label %788

785:                                              ; No predecessors!
  br label %786

786:                                              ; preds = %785
  br label %787

787:                                              ; preds = %786
  store i8 0, ptr %76, align 1, !tbaa !13
  br label %748, !llvm.loop !32

788:                                              ; preds = %784, %753
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #8
  br label %796

789:                                              ; preds = %752
  br label %790

790:                                              ; preds = %789
  store i8 0, ptr %76, align 1, !tbaa !13
  br label %740, !llvm.loop !33

791:                                              ; preds = %743
  br label %792

792:                                              ; preds = %791, %738, %637, %522, %305, %258, %206
  br label %793

793:                                              ; preds = %792
  store i8 0, ptr %29, align 1, !tbaa !13
  br label %199, !llvm.loop !34

794:                                              ; preds = %736, %635, %520, %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  %795 = load i32, ptr %22, align 4
  switch i32 %795, label %799 [
    i32 18, label %797
  ]

796:                                              ; preds = %788, %733, %632, %517, %302, %255, %207
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  br label %826

797:                                              ; preds = %794
  br label %798

798:                                              ; preds = %797
  store i8 0, ptr %29, align 1, !tbaa !13
  br label %184, !llvm.loop !35

799:                                              ; preds = %794, %187
  call void @llvm.lifetime.end.p0(i64 1, ptr %29) #8
  %800 = load i32, ptr %22, align 4
  switch i32 %800, label %822 [
    i32 15, label %801
  ]

801:                                              ; preds = %799
  br label %802

802:                                              ; preds = %801
  %803 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %804 unwind label %815

804:                                              ; preds = %802
  br i1 %803, label %805, label %819

805:                                              ; preds = %804
  %806 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !24
  %807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %806, ptr noundef @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %808 unwind label %815

808:                                              ; preds = %805
  %809 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %807, ptr noundef @.str.52)
          to label %810 unwind label %815

810:                                              ; preds = %808
  %811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %809, ptr noundef @_ZSt3decRSt8ios_base)
          to label %812 unwind label %815

812:                                              ; preds = %810
  %813 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %811, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %814 unwind label %815

814:                                              ; preds = %812
  br label %819

815:                                              ; preds = %812, %810, %808, %805, %802
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %15, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %16, align 4
  br label %826

819:                                              ; preds = %814, %804
  br label %820

820:                                              ; preds = %819
  br label %821

821:                                              ; preds = %820
  store i32 0, ptr %22, align 4
  br label %822

822:                                              ; preds = %821, %799
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr %27) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  %823 = load i32, ptr %22, align 4
  switch i32 %823, label %829 [
    i32 0, label %824
  ]

824:                                              ; preds = %822
  br label %825

825:                                              ; preds = %824
  store i8 0, ptr %24, align 1, !tbaa !13
  br label %165, !llvm.loop !36

826:                                              ; preds = %815, %796
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #8
  br label %827

827:                                              ; preds = %826, %192
  call void @llvm.lifetime.end.p0(i64 128, ptr %27) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %828

828:                                              ; preds = %827, %188
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #8
  br label %831

829:                                              ; preds = %822, %169
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  %830 = load i32, ptr %22, align 4
  switch i32 %830, label %834 [
    i32 12, label %832
  ]

831:                                              ; preds = %828, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  br label %966

832:                                              ; preds = %829
  br label %833

833:                                              ; preds = %832
  store i8 0, ptr %24, align 1, !tbaa !13
  br label %157, !llvm.loop !37

834:                                              ; preds = %829, %160
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #8
  %835 = load i32, ptr %22, align 4
  switch i32 %835, label %964 [
    i32 9, label %836
  ]

836:                                              ; preds = %834
  br label %962

837:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #8
  store i8 1, ptr %82, align 1, !tbaa !13
  br label %838

838:                                              ; preds = %882, %837
  %839 = load i8, ptr %82, align 1, !tbaa !13, !range !15, !noundef !16
  %840 = trunc i8 %839 to i1
  br i1 %840, label %842, label %841

841:                                              ; preds = %838
  store i32 83, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %883

842:                                              ; preds = %838
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #8
  %843 = load ptr, ptr %23, align 8, !tbaa !5
  %844 = invoke noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %843)
          to label %845 unwind label %851

845:                                              ; preds = %842
  store ptr %844, ptr %83, align 8, !tbaa !5
  br label %846

846:                                              ; preds = %879, %845
  %847 = load ptr, ptr %83, align 8, !tbaa !5
  %848 = load i8, ptr %82, align 1, !tbaa !13, !range !15, !noundef !16
  %849 = trunc i8 %848 to i1
  br i1 %849, label %855, label %850

850:                                              ; preds = %846
  store i32 86, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  br label %881

851:                                              ; preds = %863, %842
  %852 = landingpad { ptr, i32 }
          cleanup
  %853 = extractvalue { ptr, i32 } %852, 0
  store ptr %853, ptr %15, align 8
  %854 = extractvalue { ptr, i32 } %852, 1
  store i32 %854, ptr %16, align 4
  br label %880

855:                                              ; preds = %846
  br label %856

856:                                              ; preds = %855
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #8
  %857 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %857)
          to label %858 unwind label %864

858:                                              ; preds = %856
  call void @llvm.lifetime.start.p0(i64 8, ptr %86) #8
  %859 = getelementptr inbounds %class.anon.516, ptr %86, i32 0, i32 0
  %860 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %860, ptr %859, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(8) %86) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef %85)
          to label %861 unwind label %868

861:                                              ; preds = %858
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  %862 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %862, ptr noundef @.str)
          to label %863 unwind label %873

863:                                              ; preds = %861
  invoke void @__cxa_throw(ptr %862, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1052 unwind label %851

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

868:                                              ; preds = %858
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %15, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %86) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #8
  br label %872

872:                                              ; preds = %868, %864
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #8
  br label %880

873:                                              ; preds = %861
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %15, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %16, align 4
  call void @__cxa_free_exception(ptr %862) #8
  br label %880

877:                                              ; No predecessors!
  br label %878

878:                                              ; preds = %877
  br label %879

879:                                              ; preds = %878
  store i8 0, ptr %82, align 1, !tbaa !13
  br label %846, !llvm.loop !38

880:                                              ; preds = %873, %872, %851
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #8
  br label %966

881:                                              ; preds = %850
  br label %882

882:                                              ; preds = %881
  store i8 0, ptr %82, align 1, !tbaa !13
  br label %838, !llvm.loop !39

883:                                              ; preds = %841
  br label %962

884:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 1, ptr %87) #8
  store i8 1, ptr %87, align 1, !tbaa !13
  br label %885

885:                                              ; preds = %907, %884
  %886 = load i8, ptr %87, align 1, !tbaa !13, !range !15, !noundef !16
  %887 = trunc i8 %886 to i1
  br i1 %887, label %889, label %888

888:                                              ; preds = %885
  store i32 91, ptr %22, align 4
  br label %908

889:                                              ; preds = %885
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #8
  %890 = load ptr, ptr %23, align 8, !tbaa !5
  %891 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %890)
          to label %892 unwind label %898

892:                                              ; preds = %889
  store ptr %891, ptr %88, align 8, !tbaa !5
  br label %893

893:                                              ; preds = %903, %892
  %894 = load ptr, ptr %88, align 8, !tbaa !5
  %895 = load i8, ptr %87, align 1, !tbaa !13, !range !15, !noundef !16
  %896 = trunc i8 %895 to i1
  br i1 %896, label %902, label %897

897:                                              ; preds = %893
  store i32 94, ptr %22, align 4
  br label %904

898:                                              ; preds = %889
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %15, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  br label %966

902:                                              ; preds = %893
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %904

903:                                              ; No predecessors!
  store i8 0, ptr %87, align 1, !tbaa !13
  br label %893, !llvm.loop !40

904:                                              ; preds = %902, %897
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #8
  %905 = load i32, ptr %22, align 4
  switch i32 %905, label %908 [
    i32 94, label %906
  ]

906:                                              ; preds = %904
  br label %907

907:                                              ; preds = %906
  store i8 0, ptr %87, align 1, !tbaa !13
  br label %885, !llvm.loop !41

908:                                              ; preds = %904, %888
  call void @llvm.lifetime.end.p0(i64 1, ptr %87) #8
  %909 = load i32, ptr %22, align 4
  switch i32 %909, label %964 [
    i32 91, label %910
  ]

910:                                              ; preds = %908
  br label %962

911:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 1, ptr %89) #8
  store i8 1, ptr %89, align 1, !tbaa !13
  br label %912

912:                                              ; preds = %960, %911
  %913 = load i8, ptr %89, align 1, !tbaa !13, !range !15, !noundef !16
  %914 = trunc i8 %913 to i1
  br i1 %914, label %916, label %915

915:                                              ; preds = %912
  store i32 97, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %961

916:                                              ; preds = %912
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #8
  %917 = load ptr, ptr %23, align 8, !tbaa !5
  %918 = invoke noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %917)
          to label %919 unwind label %925

919:                                              ; preds = %916
  store ptr %918, ptr %90, align 8, !tbaa !5
  br label %920

920:                                              ; preds = %957, %919
  %921 = load ptr, ptr %90, align 8, !tbaa !5
  %922 = load i8, ptr %89, align 1, !tbaa !13, !range !15, !noundef !16
  %923 = trunc i8 %922 to i1
  br i1 %923, label %929, label %924

924:                                              ; preds = %920
  store i32 100, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  br label %959

925:                                              ; preds = %916
  %926 = landingpad { ptr, i32 }
          cleanup
  %927 = extractvalue { ptr, i32 } %926, 0
  store ptr %927, ptr %15, align 8
  %928 = extractvalue { ptr, i32 } %926, 1
  store i32 %928, ptr %16, align 4
  br label %958

929:                                              ; preds = %920
  br label %930

930:                                              ; preds = %929
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #8
  store ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #8
  %931 = load ptr, ptr %8, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef nonnull align 8 dereferenceable(8) %931)
          to label %932 unwind label %937

932:                                              ; preds = %930
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #8
  %933 = getelementptr inbounds %class.anon.517, ptr %94, i32 0, i32 0
  store ptr %91, ptr %933, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %93, ptr noundef nonnull align 8 dereferenceable(8) %94) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %92, ptr noundef %93)
          to label %934 unwind label %941

934:                                              ; preds = %932
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  %935 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %935, ptr noundef @.str.3)
          to label %936 unwind label %946

936:                                              ; preds = %934
  invoke void @__cxa_throw(ptr %935, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1052 unwind label %950

937:                                              ; preds = %930
  %938 = landingpad { ptr, i32 }
          cleanup
  %939 = extractvalue { ptr, i32 } %938, 0
  store ptr %939, ptr %15, align 8
  %940 = extractvalue { ptr, i32 } %938, 1
  store i32 %940, ptr %16, align 4
  br label %945

941:                                              ; preds = %932
  %942 = landingpad { ptr, i32 }
          cleanup
  %943 = extractvalue { ptr, i32 } %942, 0
  store ptr %943, ptr %15, align 8
  %944 = extractvalue { ptr, i32 } %942, 1
  store i32 %944, ptr %16, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %93) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #8
  br label %945

945:                                              ; preds = %941, %937
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #8
  br label %954

946:                                              ; preds = %934
  %947 = landingpad { ptr, i32 }
          cleanup
  %948 = extractvalue { ptr, i32 } %947, 0
  store ptr %948, ptr %15, align 8
  %949 = extractvalue { ptr, i32 } %947, 1
  store i32 %949, ptr %16, align 4
  call void @__cxa_free_exception(ptr %935) #8
  br label %954

950:                                              ; preds = %936
  %951 = landingpad { ptr, i32 }
          cleanup
  %952 = extractvalue { ptr, i32 } %951, 0
  store ptr %952, ptr %15, align 8
  %953 = extractvalue { ptr, i32 } %951, 1
  store i32 %953, ptr %16, align 4
  br label %954

954:                                              ; preds = %950, %946, %945
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #8
  br label %958

955:                                              ; No predecessors!
  br label %956

956:                                              ; preds = %955
  br label %957

957:                                              ; preds = %956
  store i8 0, ptr %89, align 1, !tbaa !13
  br label %920, !llvm.loop !42

958:                                              ; preds = %954, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %89) #8
  br label %966

959:                                              ; preds = %924
  br label %960

960:                                              ; preds = %959
  store i8 0, ptr %89, align 1, !tbaa !13
  br label %912, !llvm.loop !43

961:                                              ; preds = %915
  br label %962

962:                                              ; preds = %961, %910, %883, %836, %150
  br label %963

963:                                              ; preds = %962
  store i8 0, ptr %21, align 1, !tbaa !13
  br label %143, !llvm.loop !44

964:                                              ; preds = %908, %834, %146
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  %965 = load i32, ptr %22, align 4
  switch i32 %965, label %969 [
    i32 5, label %967
  ]

966:                                              ; preds = %958, %898, %880, %831, %151
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %1045

967:                                              ; preds = %964
  br label %968

968:                                              ; preds = %967
  store i8 0, ptr %21, align 1, !tbaa !13
  br label %127, !llvm.loop !45

969:                                              ; preds = %964, %130
  call void @llvm.lifetime.end.p0(i64 1, ptr %21) #8
  %970 = load i32, ptr %22, align 4
  switch i32 %970, label %973 [
    i32 2, label %971
  ]

971:                                              ; preds = %969
  %972 = load i32, ptr %20, align 4, !tbaa !11
  store i32 %972, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %973

973:                                              ; preds = %971, %969
  call void @llvm.lifetime.end.p0(i64 4, ptr %20) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %19) #8
  br label %1043

974:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #8
  %975 = load ptr, ptr %11, align 8, !tbaa !5
  %976 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %975)
          to label %977 unwind label %993

977:                                              ; preds = %974
  %978 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %976)
          to label %979 unwind label %993

979:                                              ; preds = %977
  store ptr %978, ptr %95, align 8, !tbaa !5
  %980 = load ptr, ptr %95, align 8, !tbaa !5
  %981 = icmp ne ptr %980, null
  br i1 %981, label %982, label %1022

982:                                              ; preds = %979
  call void @llvm.lifetime.start.p0(i64 4, ptr %96) #8
  store i32 0, ptr %96, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #8
  %983 = load ptr, ptr %95, align 8, !tbaa !5
  store ptr %983, ptr %97, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #8
  %984 = load ptr, ptr %97, align 8, !tbaa !5
  %985 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %984) #8
  %986 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.518", ptr %98, i32 0, i32 0
  store ptr %985, ptr %986, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #8
  %987 = load ptr, ptr %97, align 8, !tbaa !5
  %988 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %987) #8
  %989 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.518", ptr %99, i32 0, i32 0
  store ptr %988, ptr %989, align 8
  br label %990

990:                                              ; preds = %1015, %982
  %991 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #8
  br i1 %991, label %997, label %992

992:                                              ; preds = %990
  store i32 105, ptr %22, align 4
  br label %1017

993:                                              ; preds = %977, %974
  %994 = landingpad { ptr, i32 }
          cleanup
  %995 = extractvalue { ptr, i32 } %994, 0
  store ptr %995, ptr %15, align 8
  %996 = extractvalue { ptr, i32 } %994, 1
  store i32 %996, ptr %16, align 4
  br label %1042

997:                                              ; preds = %990
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #8
  %998 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  store ptr %998, ptr %100, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %101) #8
  %999 = load ptr, ptr %100, align 8, !tbaa !5
  %1000 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %999)
          to label %1001 unwind label %1007

1001:                                             ; preds = %997
  store i32 %1000, ptr %101, align 4, !tbaa !11
  %1002 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %96, ptr noundef nonnull align 4 dereferenceable(4) %101)
          to label %1003 unwind label %1007

1003:                                             ; preds = %1001
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  %1004 = load i32, ptr %96, align 4, !tbaa !11
  %1005 = icmp eq i32 %1004, 2
  br i1 %1005, label %1006, label %1011

1006:                                             ; preds = %1003
  store i32 2, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %1012

1007:                                             ; preds = %1001, %997
  %1008 = landingpad { ptr, i32 }
          cleanup
  %1009 = extractvalue { ptr, i32 } %1008, 0
  store ptr %1009, ptr %15, align 8
  %1010 = extractvalue { ptr, i32 } %1008, 1
  store i32 %1010, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %101) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  br label %1042

1011:                                             ; preds = %1003
  store i32 0, ptr %22, align 4
  br label %1012

1012:                                             ; preds = %1011, %1006
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #8
  %1013 = load i32, ptr %22, align 4
  switch i32 %1013, label %1017 [
    i32 0, label %1014
  ]

1014:                                             ; preds = %1012
  br label %1015

1015:                                             ; preds = %1014
  %1016 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %98) #8
  br label %990

1017:                                             ; preds = %1012, %992
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #8
  %1018 = load i32, ptr %22, align 4
  switch i32 %1018, label %1021 [
    i32 105, label %1019
  ]

1019:                                             ; preds = %1017
  %1020 = load i32, ptr %96, align 4, !tbaa !11
  store i32 %1020, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %1021

1021:                                             ; preds = %1019, %1017
  call void @llvm.lifetime.end.p0(i64 4, ptr %96) #8
  br label %1041

1022:                                             ; preds = %979
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #8
  %1023 = load ptr, ptr %11, align 8, !tbaa !5
  %1024 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1023)
          to label %1025 unwind label %1035

1025:                                             ; preds = %1022
  %1026 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %1024)
          to label %1027 unwind label %1035

1027:                                             ; preds = %1025
  store ptr %1026, ptr %102, align 8, !tbaa !5
  %1028 = load ptr, ptr %102, align 8, !tbaa !5
  %1029 = icmp ne ptr %1028, null
  br i1 %1029, label %1030, label %1039

1030:                                             ; preds = %1027
  %1031 = load ptr, ptr %102, align 8, !tbaa !5
  %1032 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %1031, i32 0, i32 0
  %1033 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(8) %1032)
          to label %1034 unwind label %1035

1034:                                             ; preds = %1030
  store i32 %1033, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %1040

1035:                                             ; preds = %1030, %1025, %1022
  %1036 = landingpad { ptr, i32 }
          cleanup
  %1037 = extractvalue { ptr, i32 } %1036, 0
  store ptr %1037, ptr %15, align 8
  %1038 = extractvalue { ptr, i32 } %1036, 1
  store i32 %1038, ptr %16, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1042

1039:                                             ; preds = %1027
  store i32 0, ptr %6, align 4
  store i32 1, ptr %22, align 4
  br label %1040

1040:                                             ; preds = %1039, %1034
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #8
  br label %1041

1041:                                             ; preds = %1040, %1021
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1043

1042:                                             ; preds = %1035, %1007, %993
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #8
  br label %1045

1043:                                             ; preds = %1041, %973
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #8
  %1044 = load i32, ptr %6, align 4
  ret i32 %1044

1045:                                             ; preds = %1042, %966, %135
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %17) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  br label %1046

1046:                                             ; preds = %1045, %131
  call void @llvm.lifetime.end.p0(i64 40, ptr %12) #8
  br label %1047

1047:                                             ; preds = %1046
  %1048 = load ptr, ptr %15, align 8
  %1049 = load i32, ptr %16, align 4
  %1050 = insertvalue { ptr, i32 } poison, ptr %1048, 0
  %1051 = insertvalue { ptr, i32 } %1050, i32 %1049, 1
  resume { ptr, i32 } %1051

1052:                                             ; preds = %936, %863, %766, %285, %238
  unreachable
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 dso_local noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88)) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_2vEEOT_"(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 dso_local noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_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_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(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 @_ZNK3HIR15TypePathBinding8as_UnionEv(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 @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_5vEEOT_"(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 dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_6vEEOT_"(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 dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88)) #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_7vEEOT_"(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 dso_local noundef ptr @_ZNK3HIR8TypeData9opt_TupleEv(ptr noundef nonnull align 8 dereferenceable(184)) #4 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEE3$_4", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!13 = !{!14, !14, i64 0}
!14 = !{!"bool", !7, i64 0}
!15 = !{i8 0, i8 2}
!16 = !{}
!17 = !{!18, !6, i64 0}
!18 = !{!"_ZTSZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = !{!25, !25, i64 0}
!25 = !{!"int", !7, i64 0}
!26 = distinct !{!26, !20}
!27 = distinct !{!27, !20}
!28 = distinct !{!28, !20}
!29 = distinct !{!29, !20}
!30 = distinct !{!30, !20}
!31 = distinct !{!31, !20}
!32 = distinct !{!32, !20}
!33 = distinct !{!33, !20}
!34 = distinct !{!34, !20}
!35 = distinct !{!35, !20}
!36 = distinct !{!36, !20}
!37 = distinct !{!37, !20}
!38 = distinct !{!38, !20}
!39 = distinct !{!39, !20}
!40 = distinct !{!40, !20}
!41 = distinct !{!41, !20}
!42 = distinct !{!42, !20}
!43 = distinct !{!43, !20}
!44 = distinct !{!44, !20}
!45 = distinct !{!45, !20}


; 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.502 = type { ptr, ptr }
%class.anon.503 = type { ptr, ptr, ptr, ptr }
%"class.HIR::TypeRef" = 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.anon.504 = type { ptr, ptr, ptr, ptr }
%struct.Span = type { ptr }
%class.anon.505 = type { ptr }
%class.anon.506 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.507" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.514" = type { ptr }
%class.anon.515 = type { ptr, ptr }
%class.anon.516 = type { ptr }
%class.anon.517 = type { ptr }
%"class.__gnu_cxx::__normal_iterator.518" = type { ptr }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.3 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE = external hidden unnamed_addr constant [34 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE = external hidden unnamed_addr constant [167 x i8], align 1
@.str.46 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.47 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.48 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.49 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.50 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.51 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.52 = external hidden unnamed_addr constant [35 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: inlinehint mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

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

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

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

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

; 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

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

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

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

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

; 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 #7 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 nounwind uwtable
declare dso_local noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(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 %3, ptr noundef nonnull align 8 dereferenceable(8) %4) local_unnamed_addr #7 align 2 personality ptr @__gxx_personality_v0 {
  %6 = alloca ptr, align 8
  %7 = alloca %class.TraceLog, align 8
  %8 = alloca %"class.std::function.0", align 8
  %9 = alloca %class.anon.502, align 8
  %10 = alloca %class.anon.503, align 8
  %11 = alloca i32, align 4
  %12 = alloca %"class.HIR::TypeRef", align 8
  %13 = alloca %struct.MonomorphStatePtr, align 8
  %14 = alloca %class.anon.504, align 8
  %15 = alloca %struct.Span, align 8
  %16 = alloca %"class.std::function.0", align 8
  %17 = alloca %class.anon.505, align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca %"class.std::function.0", align 8
  %20 = alloca %class.anon.506, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %23 = alloca i32, align 4
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %26 = alloca i32, align 4
  %27 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %28 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %29 = alloca i32, align 4
  %30 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %31 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %32 = alloca i32, align 4
  %33 = alloca ptr, align 8
  %34 = alloca %struct.Span, align 8
  %35 = alloca %"class.std::function.0", align 8
  %36 = alloca %class.anon.515, align 8
  %37 = alloca %struct.Span, align 8
  %38 = alloca %"class.std::function.0", align 8
  %39 = alloca %class.anon.516, align 8
  %40 = alloca ptr, align 8
  %41 = alloca %struct.Span, align 8
  %42 = alloca %"class.std::function.0", align 8
  %43 = alloca %class.anon.517, align 8
  %44 = alloca i32, align 4
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %47 = alloca i32, align 4
  store ptr %3, ptr %6, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #8
  %48 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %49 = select i1 %48, ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %9) #8
  store ptr %2, ptr %9, align 8, !tbaa !5
  %50 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %4, ptr %50, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(16) %9) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %49, ptr noundef nonnull %8)
          to label %51 unwind label %58

51:                                               ; preds = %5
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %10) #8
  store ptr %0, ptr %10, align 8, !tbaa !9
  %52 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %1, ptr %52, align 8, !tbaa !5
  %53 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %2, ptr %53, align 8, !tbaa !5
  %54 = getelementptr inbounds i8, ptr %10, i64 24
  store ptr %6, ptr %54, align 8, !tbaa !5
  %55 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %56 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %55)
  %.not = icmp eq ptr %56, null
  br i1 %.not, label %338, label %.lr.ph447

.loopexit388:                                     ; preds = %.backedge, %.lr.ph447
  %57 = load i32, ptr %11, align 4
  br label %.loopexit385

58:                                               ; preds = %5
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %9) #8
  br label %364

.lr.ph447:                                        ; preds = %51
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %11) #8
  store i32 0, ptr %11, align 4, !tbaa !11
  %60 = getelementptr inbounds i8, ptr %14, i64 8
  %61 = getelementptr inbounds i8, ptr %14, i64 16
  %62 = getelementptr inbounds i8, ptr %14, i64 24
  %63 = getelementptr inbounds i8, ptr %56, i64 88
  %64 = call noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88) %56)
  switch i32 %64, label %.loopexit388 [
    i32 0, label %65
    i32 1, label %.preheader386
    i32 4, label %303
    i32 3, label %318
    i32 2, label %320
  ]

65:                                               ; preds = %.lr.ph447
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1340, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

.preheader386:                                    ; preds = %.lr.ph447
  %66 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %56)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12)
          to label %67 unwind label %69

67:                                               ; preds = %.preheader386
  %68 = getelementptr inbounds i8, ptr %66, i64 8
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %13) #8
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %13, ptr noundef null, ptr noundef nonnull %68, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %.lr.ph444 unwind label %71

69:                                               ; preds = %.preheader386
  %70 = landingpad { ptr, i32 }
          cleanup
  br label %302

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

.lr.ph444:                                        ; preds = %67
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  store ptr %0, ptr %14, align 8, !tbaa !13
  store ptr %1, ptr %60, align 8, !tbaa !5
  store ptr %12, ptr %61, align 8, !tbaa !5
  store ptr %13, ptr %62, align 8, !tbaa !5
  %73 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  switch i32 %73, label %.loopexit383 [
    i32 0, label %74
    i32 2, label %75
    i32 1, label %90
    i32 4, label %.lr.ph441
    i32 6, label %.lr.ph432
    i32 5, label %.lr.ph426
    i32 3, label %270
  ]

74:                                               ; preds = %.lr.ph444
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1349, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

75:                                               ; preds = %.lr.ph444
  %76 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %15, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %79 unwind label %83

77:                                               ; preds = %82
  %78 = landingpad { ptr, i32 }
          cleanup
  br label %300

79:                                               ; preds = %75
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  store ptr %4, ptr %17, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 nonnull %16)
          to label %80 unwind label %85

80:                                               ; preds = %79
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  %81 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %81, ptr noundef nonnull @.str)
          to label %82 unwind label %88

82:                                               ; preds = %80
  invoke void @__cxa_throw(ptr nonnull %81, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %365 unwind label %77

83:                                               ; preds = %75
  %84 = landingpad { ptr, i32 }
          cleanup
  br label %87

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

87:                                               ; preds = %85, %83
  %.pn314 = phi { ptr, i32 } [ %86, %85 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  br label %300

88:                                               ; preds = %80
  %89 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %81) #8
  br label %300

90:                                               ; preds = %.lr.ph444
  %91 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %94 unwind label %98

92:                                               ; preds = %97
  %93 = landingpad { ptr, i32 }
          cleanup
  br label %300

94:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr %4, ptr %20, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 nonnull %19)
          to label %95 unwind label %100

95:                                               ; preds = %94
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  %96 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %96, ptr noundef nonnull @.str)
          to label %97 unwind label %103

97:                                               ; preds = %95
  invoke void @__cxa_throw(ptr nonnull %96, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %365 unwind label %92

98:                                               ; preds = %90
  %99 = landingpad { ptr, i32 }
          cleanup
  br label %102

100:                                              ; preds = %94
  %101 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %102

102:                                              ; preds = %100, %98
  %.pn310 = phi { ptr, i32 } [ %101, %100 ], [ %99, %98 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %300

103:                                              ; preds = %95
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %96) #8
  br label %300

.lr.ph441:                                        ; preds = %.lr.ph444
  %105 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  %106 = load ptr, ptr %105, align 8, !tbaa !5
  %107 = getelementptr inbounds i8, ptr %106, i64 104
  %108 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %107)
  switch i32 %108, label %.loopexit383 [
    i32 0, label %109
    i32 1, label %110
    i32 2, label %112
    i32 3, label %147
  ]

109:                                              ; preds = %.lr.ph441
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 1386, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE) #9
  unreachable

110:                                              ; preds = %.lr.ph441
  %111 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %107)
  br label %.loopexit383

112:                                              ; preds = %.lr.ph441
  %113 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  %114 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  store ptr %114, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #8
  %115 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  store ptr %115, ptr %22, align 8
  %116 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %116, label %.lr.ph438, label %._crit_edge439

.lr.ph438:                                        ; preds = %112, %143
  %117 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %118 = getelementptr inbounds i8, ptr %117, i64 16
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %120 unwind label %134

120:                                              ; preds = %.lr.ph438
  %121 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %122 unwind label %134

122:                                              ; preds = %120
  br i1 %121, label %123, label %136

123:                                              ; preds = %122
  %124 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %124, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %126 unwind label %134

126:                                              ; preds = %123
  %127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull @.str.46)
          to label %128 unwind label %134

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %130 unwind label %134

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %132 unwind label %134

132:                                              ; preds = %130
  %133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %131, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %136 unwind label %134

134:                                              ; preds = %132, %130, %128, %126, %123, %120, %.lr.ph438
  %135 = landingpad { ptr, i32 }
          cleanup
  br label %146

136:                                              ; preds = %132, %122
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %23) #8
  %137 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %138 unwind label %141

138:                                              ; preds = %136
  store i32 %137, ptr %23, align 4, !tbaa !11
  %139 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %23)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  %140 = load i32, ptr %11, align 4, !tbaa !11
  %.not309 = icmp eq i32 %140, 2
  br i1 %.not309, label %.thread, label %143

.thread:                                          ; preds = %138
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %.loopexit385.loopexit

141:                                              ; preds = %136
  %142 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %23) #8
  br label %146

143:                                              ; preds = %138
  %144 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  %145 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #8
  br i1 %145, label %.lr.ph438, label %._crit_edge439

146:                                              ; preds = %141, %134
  %.pn306 = phi { ptr, i32 } [ %142, %141 ], [ %135, %134 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %300

._crit_edge439:                                   ; preds = %143, %112
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %.loopexit383

147:                                              ; preds = %.lr.ph441
  %148 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %107)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #8
  %149 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %148) #8
  store ptr %149, ptr %24, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %25) #8
  %150 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %148) #8
  store ptr %150, ptr %25, align 8
  %151 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br i1 %151, label %.lr.ph435, label %._crit_edge436

.lr.ph435:                                        ; preds = %147, %182
  %152 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  %153 = getelementptr inbounds i8, ptr %152, i64 24
  %154 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %153)
          to label %155 unwind label %173

155:                                              ; preds = %.lr.ph435
  %156 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %157 unwind label %173

157:                                              ; preds = %155
  br i1 %156, label %158, label %175

158:                                              ; preds = %157
  %159 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %160 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %159, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %161 unwind label %173

161:                                              ; preds = %158
  %162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %160, ptr noundef nonnull @.str.47)
          to label %163 unwind label %173

163:                                              ; preds = %161
  %164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %162, ptr noundef nonnull align 8 dereferenceable(8) %152)
          to label %165 unwind label %173

165:                                              ; preds = %163
  %166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %164, ptr noundef nonnull @.str.48)
          to label %167 unwind label %173

167:                                              ; preds = %165
  %168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %166, ptr noundef nonnull align 8 dereferenceable(8) %154)
          to label %169 unwind label %173

169:                                              ; preds = %167
  %170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %171 unwind label %173

171:                                              ; preds = %169
  %172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %175 unwind label %173

173:                                              ; preds = %171, %169, %167, %165, %163, %161, %158, %155, %.lr.ph435
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %185

175:                                              ; preds = %171, %157
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  %176 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %154)
          to label %177 unwind label %180

177:                                              ; preds = %175
  store i32 %176, ptr %26, align 4, !tbaa !11
  %178 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %26)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  %179 = load i32, ptr %11, align 4, !tbaa !11
  %.not305 = icmp eq i32 %179, 2
  br i1 %.not305, label %.thread327, label %182

.thread327:                                       ; preds = %177
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %.loopexit385.loopexit

180:                                              ; preds = %175
  %181 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  br label %185

182:                                              ; preds = %177
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  %184 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #8
  br i1 %184, label %.lr.ph435, label %._crit_edge436

185:                                              ; preds = %180, %173
  %.pn303 = phi { ptr, i32 } [ %181, %180 ], [ %174, %173 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %300

._crit_edge436:                                   ; preds = %182, %147
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %25) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #8
  br label %.loopexit383

.lr.ph432:                                        ; preds = %.lr.ph444
  %186 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  %187 = load ptr, ptr %186, align 8, !tbaa !5
  %188 = getelementptr inbounds i8, ptr %187, i64 104
  %189 = call noundef ptr @_ZNK3HIR4Enum5Class8opt_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %188)
  %.not299 = icmp eq ptr %189, null
  br i1 %.not299, label %.loopexit383, label %190

190:                                              ; preds = %.lr.ph432
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %191 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #8
  store ptr %191, ptr %27, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %192 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %189) #8
  store ptr %192, ptr %28, align 8
  %193 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br i1 %193, label %.lr.ph429, label %._crit_edge430

.lr.ph429:                                        ; preds = %190, %224
  %194 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  %195 = getelementptr inbounds i8, ptr %194, i64 16
  %196 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %195)
          to label %197 unwind label %215

197:                                              ; preds = %.lr.ph429
  %198 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %199 unwind label %215

199:                                              ; preds = %197
  br i1 %198, label %200, label %217

200:                                              ; preds = %199
  %201 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %201, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %203 unwind label %215

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

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %207 unwind label %215

207:                                              ; preds = %205
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull @.str.50)
          to label %209 unwind label %215

209:                                              ; preds = %207
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull align 8 dereferenceable(8) %196)
          to label %211 unwind label %215

211:                                              ; preds = %209
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %213 unwind label %215

213:                                              ; preds = %211
  %214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %217 unwind label %215

215:                                              ; preds = %213, %211, %209, %207, %205, %203, %200, %197, %.lr.ph429
  %216 = landingpad { ptr, i32 }
          cleanup
  br label %227

217:                                              ; preds = %213, %199
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %29) #8
  %218 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %196)
          to label %219 unwind label %222

219:                                              ; preds = %217
  store i32 %218, ptr %29, align 4, !tbaa !11
  %220 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %29)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #8
  %221 = load i32, ptr %11, align 4, !tbaa !11
  %.not302 = icmp eq i32 %221, 2
  br i1 %.not302, label %228, label %224

222:                                              ; preds = %217
  %223 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %29) #8
  br label %227

224:                                              ; preds = %219
  %225 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  %226 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br i1 %226, label %.lr.ph429, label %._crit_edge430

227:                                              ; preds = %222, %215
  %.pn300 = phi { ptr, i32 } [ %223, %222 ], [ %216, %215 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %300

._crit_edge430:                                   ; preds = %224, %190
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %.loopexit383

228:                                              ; preds = %219
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  br label %.loopexit385.loopexit

.lr.ph426:                                        ; preds = %.lr.ph444
  %229 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  %230 = load ptr, ptr %229, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %230, i64 104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  %232 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %231) #8
  store ptr %232, ptr %30, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #8
  %233 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %231) #8
  store ptr %233, ptr %31, align 8
  %234 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br i1 %234, label %.lr.ph, label %..loopexit378_crit_edge

.lr.ph:                                           ; preds = %.lr.ph426, %265
  %235 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %236 = getelementptr inbounds i8, ptr %235, i64 24
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %238 unwind label %256

238:                                              ; preds = %.lr.ph
  %239 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %240 unwind label %256

240:                                              ; preds = %238
  br i1 %239, label %241, label %258

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

244:                                              ; preds = %241
  %245 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %243, ptr noundef nonnull @.str.51)
          to label %246 unwind label %256

246:                                              ; preds = %244
  %247 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %245, ptr noundef nonnull align 8 dereferenceable(8) %235)
          to label %248 unwind label %256

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

250:                                              ; preds = %248
  %251 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %252 unwind label %256

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

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

256:                                              ; preds = %254, %252, %250, %248, %246, %244, %241, %238, %.lr.ph
  %257 = landingpad { ptr, i32 }
          cleanup
  br label %268

258:                                              ; preds = %254, %240
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %32) #8
  %259 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %237)
          to label %260 unwind label %263

260:                                              ; preds = %258
  store i32 %259, ptr %32, align 4, !tbaa !11
  %261 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %11, ptr noundef nonnull align 4 dereferenceable(4) %32)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  %262 = load i32, ptr %11, align 4, !tbaa !11
  %.not298 = icmp eq i32 %262, 2
  br i1 %.not298, label %269, label %265

263:                                              ; preds = %258
  %264 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %32) #8
  br label %268

265:                                              ; preds = %260
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  %267 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br i1 %267, label %.lr.ph, label %..loopexit378_crit_edge

268:                                              ; preds = %263, %256
  %.pn296 = phi { ptr, i32 } [ %264, %263 ], [ %257, %256 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %300

..loopexit378_crit_edge:                          ; preds = %265, %.lr.ph426
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %.loopexit383

269:                                              ; preds = %260
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  br label %.loopexit385.loopexit

270:                                              ; preds = %.lr.ph444
  %271 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %63)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  store ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %272 unwind label %277

272:                                              ; preds = %270
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #8
  store ptr %33, ptr %36, align 8, !tbaa !5
  %273 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %4, ptr %273, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull %35)
          to label %274 unwind label %279

274:                                              ; preds = %272
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  %275 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %275, ptr noundef nonnull @.str.3)
          to label %276 unwind label %282

276:                                              ; preds = %274
  invoke void @__cxa_throw(ptr nonnull %275, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %365 unwind label %284

277:                                              ; preds = %270
  %278 = landingpad { ptr, i32 }
          cleanup
  br label %281

279:                                              ; preds = %272
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  br label %281

281:                                              ; preds = %279, %277
  %.pn292 = phi { ptr, i32 } [ %280, %279 ], [ %278, %277 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %286

282:                                              ; preds = %274
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %275) #8
  br label %286

284:                                              ; preds = %276
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %286

286:                                              ; preds = %284, %282, %281
  %.pn294 = phi { ptr, i32 } [ %285, %284 ], [ %283, %282 ], [ %.pn292, %281 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br label %300

.loopexit383:                                     ; preds = %.lr.ph444, %._crit_edge436, %._crit_edge439, %110, %.lr.ph441, %._crit_edge430, %.lr.ph432, %..loopexit378_crit_edge
  %287 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %288 unwind label %298

288:                                              ; preds = %.loopexit383
  br i1 %287, label %289, label %.backedge

289:                                              ; preds = %288
  %290 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !15
  %291 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %290, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE)
          to label %292 unwind label %298

292:                                              ; preds = %289
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull @.str.52)
          to label %294 unwind label %298

294:                                              ; preds = %292
  %295 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %293, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %296 unwind label %298

296:                                              ; preds = %294
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.backedge unwind label %298

298:                                              ; preds = %296, %294, %292, %289, %.loopexit383
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %300

.backedge:                                        ; preds = %288, %296
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %.loopexit388

300:                                              ; preds = %227, %268, %286, %88, %87, %77, %103, %102, %92, %185, %146, %298
  %.pn294.pn.pn = phi { ptr, i32 } [ %299, %298 ], [ %.pn294, %286 ], [ %.pn296, %268 ], [ %.pn300, %227 ], [ %78, %77 ], [ %89, %88 ], [ %.pn314, %87 ], [ %93, %92 ], [ %104, %103 ], [ %.pn310, %102 ], [ %.pn303, %185 ], [ %.pn306, %146 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #8
  br label %301

301:                                              ; preds = %300, %71
  %.pn294.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn, %300 ], [ %72, %71 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %302

302:                                              ; preds = %301, %69
  %.pn294.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn294.pn.pn.pn, %301 ], [ %70, %69 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %336

303:                                              ; preds = %.lr.ph447
  %304 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88) %56)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %307 unwind label %311

305:                                              ; preds = %310
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %336

307:                                              ; preds = %303
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  store ptr %4, ptr %39, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull %38)
          to label %308 unwind label %313

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

310:                                              ; preds = %308
  invoke void @__cxa_throw(ptr nonnull %309, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %365 unwind label %305

311:                                              ; preds = %303
  %312 = landingpad { ptr, i32 }
          cleanup
  br label %315

313:                                              ; preds = %307
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %315

315:                                              ; preds = %313, %311
  %.pn288 = phi { ptr, i32 } [ %314, %313 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %336

316:                                              ; preds = %308
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %309) #8
  br label %336

318:                                              ; preds = %.lr.ph447
  %319 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %56)
  br label %.loopexit385

320:                                              ; preds = %.lr.ph447
  %321 = call noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88) %56)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  store ptr @__func__._ZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %41) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %322 unwind label %326

322:                                              ; preds = %320
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  store ptr %40, ptr %43, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull %42)
          to label %323 unwind label %328

323:                                              ; preds = %322
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  %324 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %324, ptr noundef nonnull @.str.3)
          to label %325 unwind label %331

325:                                              ; preds = %323
  invoke void @__cxa_throw(ptr nonnull %324, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %365 unwind label %333

326:                                              ; preds = %320
  %327 = landingpad { ptr, i32 }
          cleanup
  br label %330

328:                                              ; preds = %322
  %329 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %330

330:                                              ; preds = %328, %326
  %.pn284 = phi { ptr, i32 } [ %329, %328 ], [ %327, %326 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %41) #8
  br label %335

331:                                              ; preds = %323
  %332 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %324) #8
  br label %335

333:                                              ; preds = %325
  %334 = landingpad { ptr, i32 }
          cleanup
  br label %335

335:                                              ; preds = %333, %331, %330
  %.pn286 = phi { ptr, i32 } [ %334, %333 ], [ %332, %331 ], [ %.pn284, %330 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %336

336:                                              ; preds = %305, %315, %316, %335, %302
  %.pn286.pn = phi { ptr, i32 } [ %.pn286, %335 ], [ %.pn294.pn.pn.pn.pn, %302 ], [ %306, %305 ], [ %317, %316 ], [ %.pn288, %315 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  br label %363

.loopexit385.loopexit:                            ; preds = %269, %228, %.thread, %.thread327
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %13) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %13) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %.loopexit385

.loopexit385:                                     ; preds = %.loopexit385.loopexit, %318, %.loopexit388
  %337 = phi i32 [ %57, %.loopexit388 ], [ 2, %318 ], [ 2, %.loopexit385.loopexit ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %11) #8
  br label %362

338:                                              ; preds = %51
  %339 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %340 = call noundef ptr @_ZNK3HIR8TypeData9opt_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %339)
  %.not280 = icmp eq ptr %340, null
  br i1 %.not280, label %355, label %341

341:                                              ; preds = %338
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %44) #8
  store i32 0, ptr %44, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  %342 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %340) #8
  store ptr %342, ptr %45, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #8
  %343 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %340) #8
  store ptr %343, ptr %46, align 8
  %344 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_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 %344, label %.lr.ph450, label %._crit_edge451

.lr.ph450:                                        ; preds = %341, %352
  %345 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %47) #8
  %346 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %347 unwind label %350

347:                                              ; preds = %.lr.ph450
  store i32 %346, ptr %47, align 4, !tbaa !11
  %348 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %44, ptr noundef nonnull align 4 dereferenceable(4) %47)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #8
  %349 = load i32, ptr %44, align 4
  %.not283 = icmp eq i32 %349, 2
  br i1 %.not283, label %._crit_edge451, label %352

350:                                              ; preds = %.lr.ph450
  %351 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %47) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #8
  br label %363

352:                                              ; preds = %347
  %353 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  %354 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_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 %354, label %.lr.ph450, label %.._crit_edge451.loopexit_crit_edge

.._crit_edge451.loopexit_crit_edge:               ; preds = %352
  %.pre.pre = load i32, ptr %44, align 4
  br label %._crit_edge451

._crit_edge451:                                   ; preds = %347, %.._crit_edge451.loopexit_crit_edge, %341
  %.lcssa = phi i32 [ 0, %341 ], [ %.pre.pre, %.._crit_edge451.loopexit_crit_edge ], [ 2, %347 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %44) #8
  br label %362

355:                                              ; preds = %338
  %356 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %357 = call noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %356)
  %.not281 = icmp eq ptr %357, null
  br i1 %.not281, label %362, label %358

358:                                              ; preds = %355
  %359 = invoke noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(8) %357)
          to label %362 unwind label %360

360:                                              ; preds = %358
  %361 = landingpad { ptr, i32 }
          cleanup
  br label %363

362:                                              ; preds = %._crit_edge451, %355, %358, %.loopexit385
  %.52 = phi i32 [ %337, %.loopexit385 ], [ %.lcssa, %._crit_edge451 ], [ %359, %358 ], [ 0, %355 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #8
  ret i32 %.52

363:                                              ; preds = %350, %360, %336
  %.pn286.pn.pn = phi { ptr, i32 } [ %.pn286.pn, %336 ], [ %351, %350 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %10) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #8
  br label %364

364:                                              ; preds = %363, %58
  %.pn286.pn.pn.pn = phi { ptr, i32 } [ %.pn286.pn.pn, %363 ], [ %59, %58 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #8
  resume { ptr, i32 } %.pn286.pn.pn.pn

365:                                              ; preds = %325, %310, %276, %97, %82
  unreachable
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 dso_local noundef i32 @_ZNK3HIR4Path4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_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 dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_2vEEOT_"(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 dso_local noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_3clISA_EESC_RKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i32 @"_ZZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEENK3$_4clISA_EENS3_7CompareERKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_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_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(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 @_ZNK3HIR15TypePathBinding8as_UnionEv(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 @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_5vEEOT_"(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 dso_local noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR4Path4Data14as_UfcsUnknownEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_6vEEOT_"(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 dso_local noundef nonnull align 8 dereferenceable(64) ptr @_ZNK3HIR4Path4Data15as_UfcsInherentEv(ptr noundef nonnull align 8 dereferenceable(88)) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefEE3$_7vEEOT_"(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 dso_local noundef ptr @_ZNK3HIR8TypeData9opt_TupleEv(ptr noundef nonnull align 8 dereferenceable(184)) local_unnamed_addr #4 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 0}
!10 = !{!"_ZTSZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEE3$_4", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!11 = !{!12, !12, i64 0}
!12 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!13 = !{!14, !6, i64 0}
!14 = !{!"_ZTSZNK18StaticTraitResolve33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefEE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!15 = !{!16, !16, i64 0}
!16 = !{!"int", !7, i64 0}


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