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

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

%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.629 = type { ptr, ptr }
%"class.std::function.221" = type { %"class.std::_Function_base", ptr }
%class.anon.633 = type { ptr, ptr, ptr, 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.181" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.634 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.635 = type { ptr, ptr, ptr }
%"class.std::function.489" = type { %"class.std::_Function_base", ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.45", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%struct.Span = type { ptr }
%class.anon.636 = type { ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.637 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.638 = type { ptr, ptr }
%"class.HIR::TypeData" = type { i32, %"union.HIR::TypeData::DataUnion" }
%"union.HIR::TypeData::DataUnion" = type { %"struct.HIR::TypeData_ErasedType", [16 x i8] }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.50", %"class.std::vector.55", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeData_ErasedType_Inner" = type { i32, %"union.HIR::TypeData_ErasedType_Inner::DataUnion" }
%"union.HIR::TypeData_ErasedType_Inner::DataUnion" = type { %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", [56 x i8] }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Alias" = type { %"struct.HIR::PathParams", %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.RangeVecMap = type <{ %"class.std::vector.211", [8 x i8] }>
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.29" }
%class.RcString = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.474" }
%"class.std::vector.474" = type { %"struct.std::_Vector_base.475" }
%"struct.std::_Vector_base.475" = 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.469" }
%"class.std::map.469" = type { %"class.std::_Rb_tree.470" }
%"class.std::_Rb_tree.470" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.16", [8 x i8] }
%"class.std::unique_ptr.16" = type { %"struct.std::__uniq_ptr_data.17" }
%"struct.std::__uniq_ptr_data.17" = type { %"class.std::__uniq_ptr_impl.18" }
%"class.std::__uniq_ptr_impl.18" = type { %"class.std::tuple.19" }
%"class.std::tuple.19" = type { %"struct.std::_Tuple_impl.20" }
%"struct.std::_Tuple_impl.20" = type { %"struct.std::_Head_base.23" }
%"struct.std::_Head_base.23" = type { ptr }

@g_debug_indent_level = external global i32, align 4
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE = external hidden unnamed_addr constant [11 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [31 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

declare 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: inlinehint mustprogress uwtable
declare noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #2

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind noalias writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8, ptr noundef nonnull align 8 dereferenceable(49)) #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4, ptr noundef %5) #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i32, align 4
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %class.TraceLog, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.629, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca i32, align 4
  %20 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %21 = alloca i32, align 4
  %22 = alloca i8, align 1
  %23 = alloca %"class.std::function.221", align 8
  %24 = alloca %class.anon.633, align 8
  %25 = alloca i32, align 4
  %26 = alloca ptr, align 8
  %27 = alloca %struct.MonomorphStatePtr, align 8
  %28 = alloca i8, align 1
  %29 = alloca %"class.std::function.229", align 8
  %30 = alloca %class.anon.634, align 8
  %31 = alloca i8, align 1
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca ptr, align 8
  %37 = alloca ptr, align 8
  %38 = alloca %class.anon.635, align 8
  %39 = alloca %"class.std::function.489", align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca i32, align 4
  %43 = alloca ptr, align 8
  %44 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %45 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %46 = alloca ptr, align 8
  %47 = alloca i8, align 1
  %48 = alloca ptr, align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %50 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %51 = alloca ptr, align 8
  %52 = alloca i8, align 1
  %53 = alloca i32, align 4
  %54 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %55 = alloca %"class.HIR::GenericPath", align 8
  %56 = alloca %"struct.HIR::SimplePath", align 8
  %57 = alloca %"struct.HIR::SimplePath", align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %"class.std::function", align 8
  %60 = alloca %class.anon.636, align 8
  %61 = alloca %"class.std::function.444", align 8
  %62 = alloca %class.anon.637, align 8
  %63 = alloca %class.anon.638, align 8
  %64 = alloca ptr, align 8
  %65 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.HIR::GenericPath", align 8
  %69 = alloca %"struct.HIR::SimplePath", align 8
  %70 = alloca %"class.std::function.444", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %"class.HIR::TypeData", align 8
  %73 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %74 = alloca ptr, align 8
  %75 = alloca ptr, align 8
  %76 = alloca i32, align 4
  %77 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca %"class.HIR::TypeRef", align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %80 = load ptr, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #7
  %81 = call noundef zeroext i1 @_Z13debug_enabledv()
  %82 = zext i1 %81 to i64
  %83 = select i1 %81, ptr @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr %16) #7
  %84 = getelementptr inbounds %class.anon.629, ptr %16, i32 0, i32 0
  %85 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %85, ptr %84, align 8, !tbaa !5
  %86 = getelementptr inbounds %class.anon.629, ptr %16, i32 0, i32 1
  %87 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %87, ptr %86, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefESB_PS_IFvS9_EEPS_IFvSB_SB_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(16) %16) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef %83, ptr noundef %15)
          to label %88 unwind label %100

88:                                               ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %19) #7
  %89 = load ptr, ptr %10, align 8, !tbaa !5
  %90 = load ptr, ptr %9, align 8, !tbaa !5
  %91 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %20) #7
  %92 = getelementptr inbounds %class.TraitResolution, ptr %80, i32 0, i32 2
  %93 = load ptr, ptr %92, align 8, !tbaa !9
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %20, ptr noundef nonnull align 8 dereferenceable(49) %93)
          to label %94 unwind label %104

94:                                               ; preds = %88
  %95 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %96 unwind label %104

96:                                               ; preds = %94
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  store i32 %95, ptr %19, align 4, !tbaa !33
  %97 = load i32, ptr %19, align 4, !tbaa !33
  %98 = icmp eq i32 %97, 0
  br i1 %98, label %99, label %108

99:                                               ; preds = %96
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %109

100:                                              ; preds = %6
  %101 = landingpad { ptr, i32 }
          cleanup
  %102 = extractvalue { ptr, i32 } %101, 0
  store ptr %102, ptr %17, align 8
  %103 = extractvalue { ptr, i32 } %101, 1
  store i32 %103, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %16) #7
  br label %1009

104:                                              ; preds = %94, %88
  %105 = landingpad { ptr, i32 }
          cleanup
  %106 = extractvalue { ptr, i32 } %105, 0
  store ptr %106, ptr %17, align 8
  %107 = extractvalue { ptr, i32 } %105, 1
  store i32 %107, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  br label %1008

108:                                              ; preds = %96
  store i32 0, ptr %21, align 4
  br label %109

109:                                              ; preds = %108, %99
  call void @llvm.lifetime.end.p0(i64 4, ptr %19) #7
  %110 = load i32, ptr %21, align 4
  switch i32 %110, label %1006 [
    i32 0, label %111
  ]

111:                                              ; preds = %109
  %112 = load ptr, ptr %10, align 8, !tbaa !5
  %113 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %114 unwind label %131

114:                                              ; preds = %111
  %115 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %113)
          to label %116 unwind label %131

116:                                              ; preds = %114
  br i1 %115, label %123, label %117

117:                                              ; preds = %116
  %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 %131

120:                                              ; preds = %117
  %121 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %119)
          to label %122 unwind label %131

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

123:                                              ; preds = %122, %116
  %124 = load ptr, ptr %13, align 8, !tbaa !5
  %125 = icmp ne ptr %124, null
  br i1 %125, label %126, label %135

126:                                              ; preds = %123
  %127 = load ptr, ptr %13, align 8, !tbaa !5
  %128 = load ptr, ptr %10, align 8, !tbaa !5
  %129 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNKSt8functionIFvRKN3HIR7TypeRefES3_EEclES3_S3_(ptr noundef nonnull align 8 dereferenceable(32) %127, ptr noundef nonnull align 8 dereferenceable(8) %128, ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %130 unwind label %131

130:                                              ; preds = %126
  br label %135

131:                                              ; preds = %999, %997, %995, %992, %989, %249, %246, %243, %240, %177, %175, %172, %169, %166, %126, %120, %117, %114, %111
  %132 = landingpad { ptr, i32 }
          cleanup
  %133 = extractvalue { ptr, i32 } %132, 0
  store ptr %133, ptr %17, align 8
  %134 = extractvalue { ptr, i32 } %132, 1
  store i32 %134, ptr %18, align 4
  br label %1008

135:                                              ; preds = %130, %123
  store i32 1, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %1006

136:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 1, ptr %22) #7
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = load ptr, ptr %11, align 8, !tbaa !5
  %139 = getelementptr inbounds %struct.TraitResolveCommon, ptr %80, i32 0, i32 9
  call void @llvm.lifetime.start.p0(i64 32, ptr %24) #7
  %140 = getelementptr inbounds %class.anon.633, ptr %24, i32 0, i32 0
  %141 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %141, ptr %140, align 8, !tbaa !5
  %142 = getelementptr inbounds %class.anon.633, ptr %24, i32 0, i32 1
  %143 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %143, ptr %142, align 8, !tbaa !5
  %144 = getelementptr inbounds %class.anon.633, ptr %24, i32 0, i32 2
  store ptr %80, ptr %144, align 8, !tbaa !35
  %145 = getelementptr inbounds %class.anon.633, ptr %24, i32 0, i32 3
  %146 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %146, ptr %145, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbN3HIR7CompareERKNS0_7TypeRefERKNS0_11GenericPathERKN18TraitResolveCommon11CachedBoundEEEC2IZNK15TraitResolution10can_unsizeERK4SpanS4_S4_PS_IFvS2_EEPS_IFvS4_S4_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(32) %24)
          to label %147 unwind label %154

147:                                              ; preds = %136
  %148 = invoke noundef zeroext i1 @_ZNK15TraitResolution21iterate_bounds_traitsERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathESt8functionIFbNS3_7CompareES6_RKNS3_11GenericPathERKN18TraitResolveCommon11CachedBoundEEE(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %138, ptr noundef nonnull align 8 dereferenceable(8) %139, ptr noundef %23)
          to label %149 unwind label %158

149:                                              ; preds = %147
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  %150 = zext i1 %148 to i8
  store i8 %150, ptr %22, align 1, !tbaa !37
  %151 = load i8, ptr %22, align 1, !tbaa !37, !range !39, !noundef !40
  %152 = trunc i8 %151 to i1
  br i1 %152, label %153, label %163

153:                                              ; preds = %149
  store i32 0, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %164

154:                                              ; preds = %136
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %17, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %18, align 4
  br label %162

158:                                              ; preds = %147
  %159 = landingpad { ptr, i32 }
          cleanup
  %160 = extractvalue { ptr, i32 } %159, 0
  store ptr %160, ptr %17, align 8
  %161 = extractvalue { ptr, i32 } %159, 1
  store i32 %161, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #7
  br label %162

162:                                              ; preds = %158, %154
  call void @llvm.lifetime.end.p0(i64 32, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  br label %1008

163:                                              ; preds = %149
  store i32 0, ptr %21, align 4
  br label %164

164:                                              ; preds = %163, %153
  call void @llvm.lifetime.end.p0(i64 1, ptr %22) #7
  %165 = load i32, ptr %21, align 4
  switch i32 %165, label %1006 [
    i32 0, label %166
  ]

166:                                              ; preds = %164
  %167 = load ptr, ptr %11, align 8, !tbaa !5
  %168 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %169 unwind label %131

169:                                              ; preds = %166
  %170 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %168)
          to label %171 unwind label %131

171:                                              ; preds = %169
  br i1 %170, label %172, label %240

172:                                              ; preds = %171
  %173 = load ptr, ptr %11, align 8, !tbaa !5
  %174 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %175 unwind label %131

175:                                              ; preds = %172
  %176 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %174)
          to label %177 unwind label %131

177:                                              ; preds = %175
  %178 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %176, i32 0, i32 0
  %179 = getelementptr inbounds %"class.HIR::Path", ptr %178, i32 0, i32 0
  %180 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %179)
          to label %181 unwind label %131

181:                                              ; preds = %177
  br i1 %180, label %182, label %240

182:                                              ; preds = %181
  call void @llvm.lifetime.start.p0(i64 4, ptr %25) #7
  store i32 0, ptr %25, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %183 = load ptr, ptr %11, align 8, !tbaa !5
  %184 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %183)
          to label %185 unwind label %217

185:                                              ; preds = %182
  %186 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %184)
          to label %187 unwind label %217

187:                                              ; preds = %185
  %188 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %186, i32 0, i32 0
  %189 = getelementptr inbounds %"class.HIR::Path", ptr %188, i32 0, i32 0
  %190 = invoke noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %189)
          to label %191 unwind label %217

191:                                              ; preds = %187
  store ptr %190, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 128, ptr %27) #7
  %192 = load ptr, ptr %26, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %192, i32 0, i32 0
  %194 = load ptr, ptr %26, align 8, !tbaa !5
  %195 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %194, i32 0, i32 1
  %196 = getelementptr inbounds %"class.HIR::GenericPath", ptr %195, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %27, ptr noundef %193, ptr noundef %196, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %197 unwind label %221

197:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = load ptr, ptr %26, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %30) #7
  %200 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 0
  store ptr %80, ptr %200, align 8, !tbaa !41
  %201 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 1
  store ptr %27, ptr %201, align 8, !tbaa !5
  %202 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 2
  %203 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %203, ptr %202, align 8, !tbaa !5
  %204 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 3
  %205 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %205, ptr %204, align 8, !tbaa !5
  %206 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 4
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %207, ptr %206, align 8, !tbaa !5
  %208 = getelementptr inbounds %class.anon.634, ptr %30, i32 0, i32 5
  store ptr %25, ptr %208, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKNS0_7TypeRefESD_PS_IFvSB_EEPS_IFvSD_SD_EEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(48) %30)
          to label %209 unwind label %225

209:                                              ; preds = %197
  %210 = invoke noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(80) %199, ptr noundef %29)
          to label %211 unwind label %229

211:                                              ; preds = %209
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #7
  %212 = zext i1 %210 to i8
  store i8 %212, ptr %28, align 1, !tbaa !37
  %213 = load i8, ptr %28, align 1, !tbaa !37, !range !39, !noundef !40
  %214 = trunc i8 %213 to i1
  br i1 %214, label %215, label %234

215:                                              ; preds = %211
  %216 = load i32, ptr %25, align 4, !tbaa !33
  store i32 %216, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %235

217:                                              ; preds = %187, %185, %182
  %218 = landingpad { ptr, i32 }
          cleanup
  %219 = extractvalue { ptr, i32 } %218, 0
  store ptr %219, ptr %17, align 8
  %220 = extractvalue { ptr, i32 } %218, 1
  store i32 %220, ptr %18, align 4
  br label %239

221:                                              ; preds = %191
  %222 = landingpad { ptr, i32 }
          cleanup
  %223 = extractvalue { ptr, i32 } %222, 0
  store ptr %223, ptr %17, align 8
  %224 = extractvalue { ptr, i32 } %222, 1
  store i32 %224, ptr %18, align 4
  br label %238

225:                                              ; preds = %197
  %226 = landingpad { ptr, i32 }
          cleanup
  %227 = extractvalue { ptr, i32 } %226, 0
  store ptr %227, ptr %17, align 8
  %228 = extractvalue { ptr, i32 } %226, 1
  store i32 %228, ptr %18, align 4
  br label %233

229:                                              ; preds = %209
  %230 = landingpad { ptr, i32 }
          cleanup
  %231 = extractvalue { ptr, i32 } %230, 0
  store ptr %231, ptr %17, align 8
  %232 = extractvalue { ptr, i32 } %230, 1
  store i32 %232, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  br label %233

233:                                              ; preds = %229, %225
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #7
  br label %238

234:                                              ; preds = %211
  store i32 0, ptr %21, align 4
  br label %235

235:                                              ; preds = %234, %215
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %27) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  %236 = load i32, ptr %21, align 4
  switch i32 %236, label %1006 [
    i32 0, label %237
  ]

237:                                              ; preds = %235
  br label %240

238:                                              ; preds = %233, %221
  call void @llvm.lifetime.end.p0(i64 128, ptr %27) #7
  br label %239

239:                                              ; preds = %238, %217
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %25) #7
  br label %1008

240:                                              ; preds = %237, %181, %171
  %241 = load ptr, ptr %10, align 8, !tbaa !5
  %242 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %241)
          to label %243 unwind label %131

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

245:                                              ; preds = %243
  br i1 %244, label %246, label %535

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

249:                                              ; preds = %246
  %250 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %248)
          to label %251 unwind label %131

251:                                              ; preds = %249
  br i1 %250, label %252, label %535

252:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 1, ptr %31) #7
  %253 = load ptr, ptr %10, align 8, !tbaa !5
  %254 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %253)
          to label %255 unwind label %330

255:                                              ; preds = %252
  %256 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %254)
          to label %257 unwind label %330

257:                                              ; preds = %255
  %258 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %256, i32 0, i32 1
  %259 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %258)
          to label %260 unwind label %330

260:                                              ; preds = %257
  br i1 %259, label %261, label %275

261:                                              ; preds = %260
  %262 = load ptr, ptr %10, align 8, !tbaa !5
  %263 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %262)
          to label %264 unwind label %330

264:                                              ; preds = %261
  %265 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %263)
          to label %266 unwind label %330

266:                                              ; preds = %264
  %267 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %265, i32 0, i32 1
  %268 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %267)
          to label %269 unwind label %330

269:                                              ; preds = %266
  %270 = load ptr, ptr %268, align 8, !tbaa !5
  %271 = getelementptr inbounds %"class.HIR::Struct", ptr %270, i32 0, i32 7
  %272 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %271, i32 0, i32 0
  %273 = load i8, ptr %272, align 8, !tbaa !43, !range !39, !noundef !40
  %274 = trunc i8 %273 to i1
  br label %275

275:                                              ; preds = %269, %260
  %276 = phi i1 [ false, %260 ], [ %274, %269 ]
  %277 = zext i1 %276 to i8
  store i8 %277, ptr %31, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  %278 = load ptr, ptr %11, align 8, !tbaa !5
  %279 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %280 unwind label %334

280:                                              ; preds = %275
  %281 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %279)
          to label %282 unwind label %334

282:                                              ; preds = %280
  %283 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %281, i32 0, i32 1
  %284 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %283)
          to label %285 unwind label %334

285:                                              ; preds = %282
  br i1 %284, label %286, label %300

286:                                              ; preds = %285
  %287 = load ptr, ptr %11, align 8, !tbaa !5
  %288 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %287)
          to label %289 unwind label %334

289:                                              ; preds = %286
  %290 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %288)
          to label %291 unwind label %334

291:                                              ; preds = %289
  %292 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %290, i32 0, i32 1
  %293 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %292)
          to label %294 unwind label %334

294:                                              ; preds = %291
  %295 = load ptr, ptr %293, align 8, !tbaa !5
  %296 = getelementptr inbounds %"class.HIR::Struct", ptr %295, i32 0, i32 7
  %297 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %296, i32 0, i32 0
  %298 = load i8, ptr %297, align 8, !tbaa !43, !range !39, !noundef !40
  %299 = trunc i8 %298 to i1
  br label %300

300:                                              ; preds = %294, %285
  %301 = phi i1 [ false, %285 ], [ %299, %294 ]
  %302 = zext i1 %301 to i8
  store i8 %302, ptr %32, align 1, !tbaa !37
  %303 = load i8, ptr %31, align 1, !tbaa !37, !range !39, !noundef !40
  %304 = trunc i8 %303 to i1
  br i1 %304, label %308, label %305

305:                                              ; preds = %300
  %306 = load i8, ptr %32, align 1, !tbaa !37, !range !39, !noundef !40
  %307 = trunc i8 %306 to i1
  br i1 %307, label %308, label %529

308:                                              ; preds = %305, %300
  br label %309

309:                                              ; preds = %308
  %310 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %311 unwind label %334

311:                                              ; preds = %309
  br i1 %310, label %312, label %338

312:                                              ; preds = %311
  %313 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !77
  %314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %313, ptr noundef @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %315 unwind label %334

315:                                              ; preds = %312
  %316 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %314, ptr noundef @.str.169)
          to label %317 unwind label %334

317:                                              ; preds = %315
  %318 = load ptr, ptr %10, align 8, !tbaa !5
  %319 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %316, ptr noundef nonnull align 8 dereferenceable(8) %318)
          to label %320 unwind label %334

320:                                              ; preds = %317
  %321 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %319, ptr noundef @.str.56)
          to label %322 unwind label %334

322:                                              ; preds = %320
  %323 = load ptr, ptr %11, align 8, !tbaa !5
  %324 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %321, ptr noundef nonnull align 8 dereferenceable(8) %323)
          to label %325 unwind label %334

325:                                              ; preds = %322
  %326 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %324, ptr noundef @_ZSt3decRSt8ios_base)
          to label %327 unwind label %334

327:                                              ; preds = %325
  %328 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %329 unwind label %334

329:                                              ; preds = %327
  br label %338

330:                                              ; preds = %266, %264, %261, %257, %255, %252
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %17, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %18, align 4
  br label %534

334:                                              ; preds = %327, %325, %322, %320, %317, %315, %312, %309, %291, %289, %286, %282, %280, %275
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %17, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %18, align 4
  br label %533

338:                                              ; preds = %329, %311
  br label %339

339:                                              ; preds = %338
  br label %340

340:                                              ; preds = %339
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %341 = load ptr, ptr %10, align 8, !tbaa !5
  %342 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %341)
          to label %343 unwind label %386

343:                                              ; preds = %340
  %344 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %342)
          to label %345 unwind label %386

345:                                              ; preds = %343
  %346 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %344, i32 0, i32 1
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %346)
          to label %348 unwind label %386

348:                                              ; preds = %345
  %349 = load ptr, ptr %347, align 8, !tbaa !5
  store ptr %349, ptr %33, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %350 = load ptr, ptr %10, align 8, !tbaa !5
  %351 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %350)
          to label %352 unwind label %390

352:                                              ; preds = %348
  %353 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %351)
          to label %354 unwind label %390

354:                                              ; preds = %352
  %355 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %353, i32 0, i32 0
  %356 = getelementptr inbounds %"class.HIR::Path", ptr %355, i32 0, i32 0
  %357 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %356)
          to label %358 unwind label %390

358:                                              ; preds = %354
  store ptr %357, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %359 = load ptr, ptr %11, align 8, !tbaa !5
  %360 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %359)
          to label %361 unwind label %394

361:                                              ; preds = %358
  %362 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %360)
          to label %363 unwind label %394

363:                                              ; preds = %361
  %364 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %362, i32 0, i32 0
  %365 = getelementptr inbounds %"class.HIR::Path", ptr %364, i32 0, i32 0
  %366 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %365)
          to label %367 unwind label %394

367:                                              ; preds = %363
  store ptr %366, ptr %35, align 8, !tbaa !5
  %368 = load ptr, ptr %34, align 8, !tbaa !5
  %369 = load ptr, ptr %35, align 8, !tbaa !5
  %370 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %368, ptr noundef nonnull align 8 dereferenceable(32) %369)
          to label %371 unwind label %394

371:                                              ; preds = %367
  br i1 %370, label %372, label %401

372:                                              ; preds = %371
  br label %373

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

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

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

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

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

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

385:                                              ; preds = %383
  br label %398

386:                                              ; preds = %345, %343, %340
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %17, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %18, align 4
  br label %528

390:                                              ; preds = %354, %352, %348
  %391 = landingpad { ptr, i32 }
          cleanup
  %392 = extractvalue { ptr, i32 } %391, 0
  store ptr %392, ptr %17, align 8
  %393 = extractvalue { ptr, i32 } %391, 1
  store i32 %393, ptr %18, align 4
  br label %527

394:                                              ; preds = %519, %517, %515, %512, %509, %427, %425, %422, %420, %417, %415, %412, %409, %401, %383, %381, %379, %376, %373, %367, %363, %361, %358
  %395 = landingpad { ptr, i32 }
          cleanup
  %396 = extractvalue { ptr, i32 } %395, 0
  store ptr %396, ptr %17, align 8
  %397 = extractvalue { ptr, i32 } %395, 1
  store i32 %397, ptr %18, align 4
  br label %526

398:                                              ; preds = %385, %375
  br label %399

399:                                              ; preds = %398
  br label %400

400:                                              ; preds = %399
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %525

401:                                              ; preds = %371
  %402 = load ptr, ptr %34, align 8, !tbaa !5
  %403 = getelementptr inbounds %"class.HIR::GenericPath", ptr %402, i32 0, i32 0
  %404 = load ptr, ptr %35, align 8, !tbaa !5
  %405 = getelementptr inbounds %"class.HIR::GenericPath", ptr %404, i32 0, i32 0
  %406 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %403, ptr noundef nonnull align 8 dereferenceable(8) %405)
          to label %407 unwind label %394

407:                                              ; preds = %401
  br i1 %406, label %408, label %508

408:                                              ; preds = %407
  br label %409

409:                                              ; preds = %408
  %410 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %411 unwind label %394

411:                                              ; preds = %409
  br i1 %410, label %412, label %430

412:                                              ; preds = %411
  %413 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !77
  %414 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %413, ptr noundef @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %415 unwind label %394

415:                                              ; preds = %412
  %416 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %414, ptr noundef @.str.171)
          to label %417 unwind label %394

417:                                              ; preds = %415
  %418 = load ptr, ptr %34, align 8, !tbaa !5
  %419 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %416, ptr noundef nonnull align 8 dereferenceable(32) %418)
          to label %420 unwind label %394

420:                                              ; preds = %417
  %421 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %419, ptr noundef @.str.56)
          to label %422 unwind label %394

422:                                              ; preds = %420
  %423 = load ptr, ptr %35, align 8, !tbaa !5
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %421, ptr noundef nonnull align 8 dereferenceable(32) %423)
          to label %425 unwind label %394

425:                                              ; preds = %422
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef @_ZSt3decRSt8ios_base)
          to label %427 unwind label %394

427:                                              ; preds = %425
  %428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %426, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %429 unwind label %394

429:                                              ; preds = %427
  br label %430

430:                                              ; preds = %429, %411
  br label %431

431:                                              ; preds = %430
  br label %432

432:                                              ; preds = %431
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %433 = getelementptr inbounds %class.TraitResolution, ptr %80, i32 0, i32 2
  %434 = load ptr, ptr %433, align 8, !tbaa !9
  %435 = load ptr, ptr %34, align 8, !tbaa !5
  %436 = getelementptr inbounds %"class.HIR::GenericPath", ptr %435, i32 0, i32 1
  %437 = getelementptr inbounds %"struct.HIR::PathParams", ptr %436, i32 0, i32 1
  %438 = load ptr, ptr %33, align 8, !tbaa !5
  %439 = getelementptr inbounds %"class.HIR::Struct", ptr %438, i32 0, i32 7
  %440 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %439, i32 0, i32 1
  %441 = load i32, ptr %440, align 4, !tbaa !78
  %442 = zext i32 %441 to i64
  %443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %437, i64 noundef %442)
          to label %444 unwind label %476

444:                                              ; preds = %432
  %445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %434, ptr noundef nonnull align 8 dereferenceable(8) %443)
          to label %446 unwind label %476

446:                                              ; preds = %444
  store ptr %445, ptr %36, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #7
  %447 = getelementptr inbounds %class.TraitResolution, ptr %80, i32 0, i32 2
  %448 = load ptr, ptr %447, align 8, !tbaa !9
  %449 = load ptr, ptr %35, align 8, !tbaa !5
  %450 = getelementptr inbounds %"class.HIR::GenericPath", ptr %449, i32 0, i32 1
  %451 = getelementptr inbounds %"struct.HIR::PathParams", ptr %450, i32 0, i32 1
  %452 = load ptr, ptr %33, align 8, !tbaa !5
  %453 = getelementptr inbounds %"class.HIR::Struct", ptr %452, i32 0, i32 7
  %454 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %453, i32 0, i32 1
  %455 = load i32, ptr %454, align 4, !tbaa !78
  %456 = zext i32 %455 to i64
  %457 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %451, i64 noundef %456)
          to label %458 unwind label %480

458:                                              ; preds = %446
  %459 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %448, ptr noundef nonnull align 8 dereferenceable(8) %457)
          to label %460 unwind label %480

460:                                              ; preds = %458
  store ptr %459, ptr %37, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %38) #7
  %461 = getelementptr inbounds %class.anon.635, ptr %38, i32 0, i32 0
  store ptr %12, ptr %461, align 8, !tbaa !5
  %462 = getelementptr inbounds %class.anon.635, ptr %38, i32 0, i32 1
  %463 = load ptr, ptr %34, align 8, !tbaa !5
  store ptr %463, ptr %462, align 8, !tbaa !5
  %464 = getelementptr inbounds %class.anon.635, ptr %38, i32 0, i32 2
  %465 = load ptr, ptr %33, align 8, !tbaa !5
  store ptr %465, ptr %464, align 8, !tbaa !5
  %466 = load ptr, ptr %12, align 8, !tbaa !5
  %467 = icmp ne ptr %466, null
  br i1 %467, label %468, label %493

468:                                              ; preds = %460
  call void @llvm.lifetime.start.p0(i64 32, ptr %39) #7
  invoke void @"_ZNSt8functionIFvN3HIR7TypeRefEEEC2IRZNK15TraitResolution10can_unsizeERK4SpanRKS1_SA_PS3_PS_IFvSA_SA_EEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(24) %38)
          to label %469 unwind label %484

469:                                              ; preds = %468
  %470 = load ptr, ptr %9, align 8, !tbaa !5
  %471 = load ptr, ptr %36, align 8, !tbaa !5
  %472 = load ptr, ptr %37, align 8, !tbaa !5
  %473 = load ptr, ptr %13, align 8, !tbaa !5
  %474 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef %39, ptr noundef %473)
          to label %475 unwind label %488

475:                                              ; preds = %469
  store i32 %474, ptr %7, align 4
  store i32 1, ptr %21, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %504

476:                                              ; preds = %444, %432
  %477 = landingpad { ptr, i32 }
          cleanup
  %478 = extractvalue { ptr, i32 } %477, 0
  store ptr %478, ptr %17, align 8
  %479 = extractvalue { ptr, i32 } %477, 1
  store i32 %479, ptr %18, align 4
  br label %507

480:                                              ; preds = %458, %446
  %481 = landingpad { ptr, i32 }
          cleanup
  %482 = extractvalue { ptr, i32 } %481, 0
  store ptr %482, ptr %17, align 8
  %483 = extractvalue { ptr, i32 } %481, 1
  store i32 %483, ptr %18, align 4
  br label %506

484:                                              ; preds = %468
  %485 = landingpad { ptr, i32 }
          cleanup
  %486 = extractvalue { ptr, i32 } %485, 0
  store ptr %486, ptr %17, align 8
  %487 = extractvalue { ptr, i32 } %485, 1
  store i32 %487, ptr %18, align 4
  br label %492

488:                                              ; preds = %469
  %489 = landingpad { ptr, i32 }
          cleanup
  %490 = extractvalue { ptr, i32 } %489, 0
  store ptr %490, ptr %17, align 8
  %491 = extractvalue { ptr, i32 } %489, 1
  store i32 %491, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  br label %492

492:                                              ; preds = %488, %484
  call void @llvm.lifetime.end.p0(i64 32, ptr %39) #7
  br label %505

493:                                              ; preds = %460
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  %495 = load ptr, ptr %36, align 8, !tbaa !5
  %496 = load ptr, ptr %37, align 8, !tbaa !5
  %497 = load ptr, ptr %13, align 8, !tbaa !5
  %498 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %494, ptr noundef nonnull align 8 dereferenceable(8) %495, ptr noundef nonnull align 8 dereferenceable(8) %496, ptr noundef null, ptr noundef %497)
          to label %499 unwind label %500

499:                                              ; preds = %493
  store i32 %498, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %504

500:                                              ; preds = %493
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %17, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %18, align 4
  br label %505

504:                                              ; preds = %499, %475
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %525

505:                                              ; preds = %500, %492
  call void @llvm.lifetime.end.p0(i64 24, ptr %38) #7
  br label %506

506:                                              ; preds = %505, %480
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #7
  br label %507

507:                                              ; preds = %506, %476
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  br label %526

508:                                              ; preds = %407
  br label %509

509:                                              ; preds = %508
  %510 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %511 unwind label %394

511:                                              ; preds = %509
  br i1 %510, label %512, label %522

512:                                              ; preds = %511
  %513 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !77
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %513, ptr noundef @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %515 unwind label %394

515:                                              ; preds = %512
  %516 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef @.str.172)
          to label %517 unwind label %394

517:                                              ; preds = %515
  %518 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %516, ptr noundef @_ZSt3decRSt8ios_base)
          to label %519 unwind label %394

519:                                              ; preds = %517
  %520 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %518, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %521 unwind label %394

521:                                              ; preds = %519
  br label %522

522:                                              ; preds = %521, %511
  br label %523

523:                                              ; preds = %522
  br label %524

524:                                              ; preds = %523
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %525

525:                                              ; preds = %524, %504, %400
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %530

526:                                              ; preds = %507, %394
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %527

527:                                              ; preds = %526, %390
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %528

528:                                              ; preds = %527, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  br label %533

529:                                              ; preds = %305
  store i32 0, ptr %21, align 4
  br label %530

530:                                              ; preds = %529, %525
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  %531 = load i32, ptr %21, align 4
  switch i32 %531, label %1006 [
    i32 0, label %532
  ]

532:                                              ; preds = %530
  br label %535

533:                                              ; preds = %528, %334
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %534

534:                                              ; preds = %533, %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %31) #7
  br label %1008

535:                                              ; preds = %532, %251, %245
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %536 = load ptr, ptr %10, align 8, !tbaa !5
  %537 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %538 unwind label %565

538:                                              ; preds = %535
  %539 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %537)
          to label %540 unwind label %565

540:                                              ; preds = %538
  store ptr %539, ptr %40, align 8, !tbaa !5
  %541 = load ptr, ptr %40, align 8, !tbaa !5
  %542 = icmp ne ptr %541, null
  br i1 %542, label %543, label %883

543:                                              ; preds = %540
  br label %544

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

546:                                              ; preds = %544
  br i1 %545, label %547, label %569

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

550:                                              ; preds = %547
  %551 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %549, ptr noundef @.str.173)
          to label %552 unwind label %565

552:                                              ; preds = %550
  %553 = load ptr, ptr %10, align 8, !tbaa !5
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %551, ptr noundef nonnull align 8 dereferenceable(8) %553)
          to label %555 unwind label %565

555:                                              ; preds = %552
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef @.str.56)
          to label %557 unwind label %565

557:                                              ; preds = %555
  %558 = load ptr, ptr %11, align 8, !tbaa !5
  %559 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef nonnull align 8 dereferenceable(8) %558)
          to label %560 unwind label %565

560:                                              ; preds = %557
  %561 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %559, ptr noundef @_ZSt3decRSt8ios_base)
          to label %562 unwind label %565

562:                                              ; preds = %560
  %563 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %564 unwind label %565

564:                                              ; preds = %562
  br label %569

565:                                              ; preds = %562, %560, %557, %555, %552, %550, %547, %544, %538, %535
  %566 = landingpad { ptr, i32 }
          cleanup
  %567 = extractvalue { ptr, i32 } %566, 0
  store ptr %567, ptr %17, align 8
  %568 = extractvalue { ptr, i32 } %566, 1
  store i32 %568, ptr %18, align 4
  br label %926

569:                                              ; preds = %564, %546
  br label %570

570:                                              ; preds = %569
  br label %571

571:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %572 = load ptr, ptr %11, align 8, !tbaa !5
  %573 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %572)
          to label %574 unwind label %587

574:                                              ; preds = %571
  %575 = invoke noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %573)
          to label %576 unwind label %587

576:                                              ; preds = %574
  store ptr %575, ptr %41, align 8, !tbaa !5
  %577 = load ptr, ptr %41, align 8, !tbaa !5
  %578 = icmp ne ptr %577, null
  br i1 %578, label %579, label %663

579:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 4, ptr %42) #7
  store i32 0, ptr %42, align 4, !tbaa !33
  %580 = load ptr, ptr %40, align 8, !tbaa !5
  %581 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %580, i32 0, i32 0
  %582 = load ptr, ptr %41, align 8, !tbaa !5
  %583 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %582, i32 0, i32 0
  %584 = invoke noundef zeroext i1 @_ZNK3HIR9TraitPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %581, ptr noundef nonnull align 8 dereferenceable(144) %583)
          to label %585 unwind label %591

585:                                              ; preds = %579
  br i1 %584, label %586, label %595

586:                                              ; preds = %585
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %661

587:                                              ; preds = %574, %571
  %588 = landingpad { ptr, i32 }
          cleanup
  %589 = extractvalue { ptr, i32 } %588, 0
  store ptr %589, ptr %17, align 8
  %590 = extractvalue { ptr, i32 } %588, 1
  store i32 %590, ptr %18, align 4
  br label %699

591:                                              ; preds = %579
  %592 = landingpad { ptr, i32 }
          cleanup
  %593 = extractvalue { ptr, i32 } %592, 0
  store ptr %593, ptr %17, align 8
  %594 = extractvalue { ptr, i32 } %592, 1
  store i32 %594, ptr %18, align 4
  br label %662

595:                                              ; preds = %585
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %596 = load ptr, ptr %40, align 8, !tbaa !5
  %597 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %596, i32 0, i32 1
  store ptr %597, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %598 = load ptr, ptr %43, align 8, !tbaa !5
  %599 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %598) #7
  %600 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %44, i32 0, i32 0
  store ptr %599, ptr %600, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #7
  %601 = load ptr, ptr %43, align 8, !tbaa !5
  %602 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %601) #7
  %603 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %45, i32 0, i32 0
  store ptr %602, ptr %603, align 8
  br label %604

604:                                              ; preds = %649, %595
  %605 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br i1 %605, label %607, label %606

606:                                              ; preds = %604
  store i32 12, ptr %21, align 4
  br label %651

607:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %608 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  store ptr %608, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #7
  store i8 0, ptr %47, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %609 = load ptr, ptr %41, align 8, !tbaa !5
  %610 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %609, i32 0, i32 1
  store ptr %610, ptr %48, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %611 = load ptr, ptr %48, align 8, !tbaa !5
  %612 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %611) #7
  %613 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %49, i32 0, i32 0
  store ptr %612, ptr %613, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %614 = load ptr, ptr %48, align 8, !tbaa !5
  %615 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %614) #7
  %616 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %50, i32 0, i32 0
  store ptr %615, ptr %616, align 8
  br label %617

617:                                              ; preds = %635, %607
  %618 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %50) #7
  br i1 %618, label %620, label %619

619:                                              ; preds = %617
  store i32 14, ptr %21, align 4
  br label %637

620:                                              ; preds = %617
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %621 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  store ptr %621, ptr %51, align 8, !tbaa !5
  %622 = load ptr, ptr %51, align 8, !tbaa !5
  %623 = load ptr, ptr %46, align 8, !tbaa !5
  %624 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %622, ptr noundef nonnull align 8 dereferenceable(32) %623)
          to label %625 unwind label %627

625:                                              ; preds = %620
  br i1 %624, label %626, label %631

626:                                              ; preds = %625
  store i8 1, ptr %47, align 1, !tbaa !37
  store i32 14, ptr %21, align 4
  br label %632

627:                                              ; preds = %620
  %628 = landingpad { ptr, i32 }
          cleanup
  %629 = extractvalue { ptr, i32 } %628, 0
  store ptr %629, ptr %17, align 8
  %630 = extractvalue { ptr, i32 } %628, 1
  store i32 %630, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  br label %662

631:                                              ; preds = %625
  store i32 0, ptr %21, align 4
  br label %632

632:                                              ; preds = %631, %626
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  %633 = load i32, ptr %21, align 4
  switch i32 %633, label %637 [
    i32 0, label %634
  ]

634:                                              ; preds = %632
  br label %635

635:                                              ; preds = %634
  %636 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br label %617

637:                                              ; preds = %632, %619
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  br label %638

638:                                              ; preds = %637
  %639 = load i8, ptr %47, align 1, !tbaa !37, !range !39, !noundef !40
  %640 = trunc i8 %639 to i1
  br i1 %640, label %642, label %641

641:                                              ; preds = %638
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %643

642:                                              ; preds = %638
  store i32 0, ptr %21, align 4
  br label %643

643:                                              ; preds = %642, %641
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #7
  %644 = load i32, ptr %21, align 4
  switch i32 %644, label %646 [
    i32 0, label %645
  ]

645:                                              ; preds = %643
  store i32 0, ptr %21, align 4
  br label %646

646:                                              ; preds = %645, %643
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %647 = load i32, ptr %21, align 4
  switch i32 %647, label %651 [
    i32 0, label %648
  ]

648:                                              ; preds = %646
  br label %649

649:                                              ; preds = %648
  %650 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %44) #7
  br label %604

651:                                              ; preds = %646, %606
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  %652 = load i32, ptr %21, align 4
  switch i32 %652, label %661 [
    i32 12, label %653
  ]

653:                                              ; preds = %651
  %654 = load i32, ptr %42, align 4, !tbaa !33
  %655 = icmp eq i32 %654, 1
  br i1 %655, label %656, label %660

656:                                              ; preds = %653
  %657 = load ptr, ptr %12, align 8, !tbaa !5
  %658 = icmp ne ptr %657, null
  br i1 %658, label %659, label %660

659:                                              ; preds = %656
  br label %660

660:                                              ; preds = %659, %656, %653
  store i32 0, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %661

661:                                              ; preds = %660, %651, %586
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %664

662:                                              ; preds = %627, %591
  call void @llvm.lifetime.end.p0(i64 4, ptr %42) #7
  br label %699

663:                                              ; preds = %576
  store i32 0, ptr %21, align 4
  br label %664

664:                                              ; preds = %663, %661
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  %665 = load i32, ptr %21, align 4
  switch i32 %665, label %884 [
    i32 0, label %666
  ]

666:                                              ; preds = %664
  call void @llvm.lifetime.start.p0(i64 1, ptr %52) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #7
  store i32 0, ptr %53, align 4, !tbaa !33
  call void @llvm.lifetime.start.p0(i64 176, ptr %54) #7
  invoke void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %54)
          to label %667 unwind label %700

667:                                              ; preds = %666
  call void @llvm.lifetime.start.p0(i64 32, ptr %55) #7
  %668 = load ptr, ptr %40, align 8, !tbaa !5
  %669 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %668, i32 0, i32 0
  %670 = getelementptr inbounds %"class.HIR::TraitPath", ptr %669, i32 0, i32 1
  %671 = getelementptr inbounds %"class.HIR::GenericPath", ptr %670, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %671)
          to label %672 unwind label %704

672:                                              ; preds = %667
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef %56)
          to label %673 unwind label %708

673:                                              ; preds = %672
  %674 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %54, i32 0, i32 0
  %675 = getelementptr inbounds %"class.HIR::TraitPath", ptr %674, i32 0, i32 1
  %676 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR11GenericPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %675, ptr noundef nonnull align 8 dereferenceable(32) %55)
          to label %677 unwind label %712

677:                                              ; preds = %673
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  %678 = load ptr, ptr %40, align 8, !tbaa !5
  %679 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %678, i32 0, i32 0
  %680 = getelementptr inbounds %"class.HIR::TraitPath", ptr %679, i32 0, i32 1
  %681 = getelementptr inbounds %"class.HIR::GenericPath", ptr %680, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %682 unwind label %718

682:                                              ; preds = %677
  %683 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull align 8 dereferenceable(8) %57)
          to label %684 unwind label %722

684:                                              ; preds = %682
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br i1 %683, label %685, label %747

685:                                              ; preds = %684
  br label %686

686:                                              ; preds = %685
  %687 = load ptr, ptr %40, align 8, !tbaa !5
  %688 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %687, i32 0, i32 1
  %689 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %688) #7
  %690 = icmp ugt i64 %689, 0
  br i1 %690, label %744, label %691

691:                                              ; preds = %686
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %692 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %692)
          to label %693 unwind label %727

693:                                              ; preds = %691
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %694 = getelementptr inbounds %class.anon.636, ptr %60, i32 0, i32 0
  %695 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %695, ptr %694, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefESB_PS_IFvS9_EEPS_IFvSB_SB_EEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %59, ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef %59)
          to label %696 unwind label %731

696:                                              ; preds = %693
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  %697 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %697, ptr noundef @.str.8)
          to label %698 unwind label %736

698:                                              ; preds = %696
  invoke void @__cxa_throw(ptr %697, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #8
          to label %1015 unwind label %740

699:                                              ; preds = %662, %587
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %926

700:                                              ; preds = %666
  %701 = landingpad { ptr, i32 }
          cleanup
  %702 = extractvalue { ptr, i32 } %701, 0
  store ptr %702, ptr %17, align 8
  %703 = extractvalue { ptr, i32 } %701, 1
  store i32 %703, ptr %18, align 4
  br label %882

704:                                              ; preds = %667
  %705 = landingpad { ptr, i32 }
          cleanup
  %706 = extractvalue { ptr, i32 } %705, 0
  store ptr %706, ptr %17, align 8
  %707 = extractvalue { ptr, i32 } %705, 1
  store i32 %707, ptr %18, align 4
  br label %717

708:                                              ; preds = %672
  %709 = landingpad { ptr, i32 }
          cleanup
  %710 = extractvalue { ptr, i32 } %709, 0
  store ptr %710, ptr %17, align 8
  %711 = extractvalue { ptr, i32 } %709, 1
  store i32 %711, ptr %18, align 4
  br label %716

712:                                              ; preds = %673
  %713 = landingpad { ptr, i32 }
          cleanup
  %714 = extractvalue { ptr, i32 } %713, 0
  store ptr %714, ptr %17, align 8
  %715 = extractvalue { ptr, i32 } %713, 1
  store i32 %715, ptr %18, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #7
  br label %716

716:                                              ; preds = %712, %708
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #7
  br label %717

717:                                              ; preds = %716, %704
  call void @llvm.lifetime.end.p0(i64 32, ptr %55) #7
  br label %881

718:                                              ; preds = %677
  %719 = landingpad { ptr, i32 }
          cleanup
  %720 = extractvalue { ptr, i32 } %719, 0
  store ptr %720, ptr %17, align 8
  %721 = extractvalue { ptr, i32 } %719, 1
  store i32 %721, ptr %18, align 4
  br label %726

722:                                              ; preds = %682
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %17, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %18, align 4
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #7
  br label %726

726:                                              ; preds = %722, %718
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %881

727:                                              ; preds = %691
  %728 = landingpad { ptr, i32 }
          cleanup
  %729 = extractvalue { ptr, i32 } %728, 0
  store ptr %729, ptr %17, align 8
  %730 = extractvalue { ptr, i32 } %728, 1
  store i32 %730, ptr %18, align 4
  br label %735

731:                                              ; preds = %693
  %732 = landingpad { ptr, i32 }
          cleanup
  %733 = extractvalue { ptr, i32 } %732, 0
  store ptr %733, ptr %17, align 8
  %734 = extractvalue { ptr, i32 } %732, 1
  store i32 %734, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br label %735

735:                                              ; preds = %731, %727
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %881

736:                                              ; preds = %696
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %17, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %18, align 4
  call void @__cxa_free_exception(ptr %697) #7
  br label %881

740:                                              ; preds = %698
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %17, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %18, align 4
  br label %881

744:                                              ; preds = %686
  br label %745

745:                                              ; preds = %744
  br label %746

746:                                              ; preds = %745
  store i8 1, ptr %52, align 1, !tbaa !37
  br label %779

747:                                              ; preds = %684
  %748 = load ptr, ptr %9, align 8, !tbaa !5
  %749 = load ptr, ptr %40, align 8, !tbaa !5
  %750 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %749, i32 0, i32 0
  %751 = getelementptr inbounds %"class.HIR::TraitPath", ptr %750, i32 0, i32 1
  %752 = getelementptr inbounds %"class.HIR::GenericPath", ptr %751, i32 0, i32 0
  %753 = load ptr, ptr %40, align 8, !tbaa !5
  %754 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %753, i32 0, i32 0
  %755 = getelementptr inbounds %"class.HIR::TraitPath", ptr %754, i32 0, i32 1
  %756 = getelementptr inbounds %"class.HIR::GenericPath", ptr %755, i32 0, i32 1
  %757 = load ptr, ptr %11, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 48, ptr %62) #7
  %758 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 0
  store ptr %53, ptr %758, align 8, !tbaa !5
  %759 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 1
  store ptr %54, ptr %759, align 8, !tbaa !5
  %760 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 2
  store ptr %40, ptr %760, align 8, !tbaa !5
  %761 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 3
  %762 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %762, ptr %761, align 8, !tbaa !5
  %763 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 4
  store ptr %80, ptr %763, align 8, !tbaa !79
  %764 = getelementptr inbounds %class.anon.637, ptr %62, i32 0, i32 5
  %765 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %765, ptr %764, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKNS1_7TypeRefESC_PS_IFvSA_EEPS_IFvSC_SC_EEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(48) %62)
          to label %766 unwind label %770

766:                                              ; preds = %747
  %767 = invoke noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %748, ptr noundef nonnull align 8 dereferenceable(8) %752, ptr noundef nonnull align 8 dereferenceable(24) %756, ptr noundef nonnull align 8 dereferenceable(8) %757, ptr noundef %61, i1 noundef zeroext true)
          to label %768 unwind label %774

768:                                              ; preds = %766
  %769 = zext i1 %767 to i8
  store i8 %769, ptr %52, align 1, !tbaa !37
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #7
  br label %779

770:                                              ; preds = %747
  %771 = landingpad { ptr, i32 }
          cleanup
  %772 = extractvalue { ptr, i32 } %771, 0
  store ptr %772, ptr %17, align 8
  %773 = extractvalue { ptr, i32 } %771, 1
  store i32 %773, ptr %18, align 4
  br label %778

774:                                              ; preds = %766
  %775 = landingpad { ptr, i32 }
          cleanup
  %776 = extractvalue { ptr, i32 } %775, 0
  store ptr %776, ptr %17, align 8
  %777 = extractvalue { ptr, i32 } %775, 1
  store i32 %777, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #7
  br label %778

778:                                              ; preds = %774, %770
  call void @llvm.lifetime.end.p0(i64 48, ptr %62) #7
  br label %881

779:                                              ; preds = %768, %746
  call void @llvm.lifetime.start.p0(i64 16, ptr %63) #7
  %780 = getelementptr inbounds %class.anon.638, ptr %63, i32 0, i32 0
  store ptr %53, ptr %780, align 8, !tbaa !5
  %781 = getelementptr inbounds %class.anon.638, ptr %63, i32 0, i32 1
  store ptr %54, ptr %781, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %782 = load ptr, ptr %40, align 8, !tbaa !5
  %783 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %782, i32 0, i32 1
  store ptr %783, ptr %64, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %784 = load ptr, ptr %64, align 8, !tbaa !5
  %785 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %784) #7
  %786 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %65, i32 0, i32 0
  store ptr %785, ptr %786, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  %787 = load ptr, ptr %64, align 8, !tbaa !5
  %788 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %787) #7
  %789 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.153", ptr %66, i32 0, i32 0
  store ptr %788, ptr %789, align 8
  br label %790

790:                                              ; preds = %823, %779
  %791 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  br i1 %791, label %793, label %792

792:                                              ; preds = %790
  store i32 18, ptr %21, align 4
  br label %844

793:                                              ; preds = %790
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %794 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  store ptr %794, ptr %67, align 8, !tbaa !5
  %795 = load i8, ptr %52, align 1, !tbaa !37, !range !39, !noundef !40
  %796 = trunc i8 %795 to i1
  br i1 %796, label %798, label %797

797:                                              ; preds = %793
  store i32 18, ptr %21, align 4
  br label %820

798:                                              ; preds = %793
  %799 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %54, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %68) #7
  %800 = load ptr, ptr %67, align 8, !tbaa !5
  %801 = getelementptr inbounds %"class.HIR::GenericPath", ptr %800, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %801)
          to label %802 unwind label %825

802:                                              ; preds = %798
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef %69)
          to label %803 unwind label %829

803:                                              ; preds = %802
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %799, ptr noundef nonnull align 8 dereferenceable(32) %68)
          to label %804 unwind label %833

804:                                              ; preds = %803
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  %805 = load ptr, ptr %9, align 8, !tbaa !5
  %806 = load ptr, ptr %67, align 8, !tbaa !5
  %807 = getelementptr inbounds %"class.HIR::GenericPath", ptr %806, i32 0, i32 0
  %808 = load ptr, ptr %67, align 8, !tbaa !5
  %809 = getelementptr inbounds %"class.HIR::GenericPath", ptr %808, i32 0, i32 1
  %810 = load ptr, ptr %11, align 8, !tbaa !5
  call void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution10can_unsizeERK4SpanRKNS1_7TypeRefESC_PS_IFvSA_EEPS_IFvSC_SC_EEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %63) #7
  %811 = invoke noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %80, ptr noundef nonnull align 8 dereferenceable(8) %805, ptr noundef nonnull align 8 dereferenceable(8) %807, ptr noundef nonnull align 8 dereferenceable(24) %809, ptr noundef nonnull align 8 dereferenceable(8) %810, ptr noundef %70, i1 noundef zeroext true)
          to label %812 unwind label %839

812:                                              ; preds = %804
  %813 = zext i1 %811 to i32
  %814 = load i8, ptr %52, align 1, !tbaa !37, !range !39, !noundef !40
  %815 = trunc i8 %814 to i1
  %816 = zext i1 %815 to i32
  %817 = and i32 %816, %813
  %818 = icmp ne i32 %817, 0
  %819 = zext i1 %818 to i8
  store i8 %819, ptr %52, align 1, !tbaa !37
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  store i32 0, ptr %21, align 4
  br label %820

820:                                              ; preds = %812, %797
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  %821 = load i32, ptr %21, align 4
  switch i32 %821, label %844 [
    i32 0, label %822
  ]

822:                                              ; preds = %820
  br label %823

823:                                              ; preds = %822
  %824 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %65) #7
  br label %790

825:                                              ; preds = %798
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %17, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %18, align 4
  br label %838

829:                                              ; preds = %802
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %17, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %18, align 4
  br label %837

833:                                              ; preds = %803
  %834 = landingpad { ptr, i32 }
          cleanup
  %835 = extractvalue { ptr, i32 } %834, 0
  store ptr %835, ptr %17, align 8
  %836 = extractvalue { ptr, i32 } %834, 1
  store i32 %836, ptr %18, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  br label %837

837:                                              ; preds = %833, %829
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #7
  br label %838

838:                                              ; preds = %837, %825
  call void @llvm.lifetime.end.p0(i64 32, ptr %68) #7
  br label %843

839:                                              ; preds = %804
  %840 = landingpad { ptr, i32 }
          cleanup
  %841 = extractvalue { ptr, i32 } %840, 0
  store ptr %841, ptr %17, align 8
  %842 = extractvalue { ptr, i32 } %840, 1
  store i32 %842, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #7
  br label %843

843:                                              ; preds = %839, %838
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %880

844:                                              ; preds = %820, %792
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  br label %845

845:                                              ; preds = %844
  %846 = load i8, ptr %52, align 1, !tbaa !37, !range !39, !noundef !40
  %847 = trunc i8 %846 to i1
  br i1 %847, label %848, label %878

848:                                              ; preds = %845
  %849 = load i32, ptr %53, align 4, !tbaa !33
  %850 = icmp eq i32 %849, 1
  br i1 %850, label %851, label %878

851:                                              ; preds = %848
  %852 = load ptr, ptr %12, align 8, !tbaa !5
  %853 = icmp ne ptr %852, null
  br i1 %853, label %854, label %878

854:                                              ; preds = %851
  %855 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR20TypeData_TraitObjectC2EOS0_(ptr noundef nonnull align 8 dereferenceable(172) %73, ptr noundef nonnull align 8 dereferenceable(172) %54)
          to label %856 unwind label %860

856:                                              ; preds = %854
  invoke void @_ZN3HIR8TypeDataC2ENS_20TypeData_TraitObjectE(ptr noundef nonnull align 8 dereferenceable(184) %72, ptr noundef %73)
          to label %857 unwind label %864

857:                                              ; preds = %856
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef %72)
          to label %858 unwind label %868

858:                                              ; preds = %857
  invoke void @_ZNKSt8functionIFvN3HIR7TypeRefEEEclES1_(ptr noundef nonnull align 8 dereferenceable(32) %855, ptr noundef %71)
          to label %859 unwind label %872

859:                                              ; preds = %858
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #7
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %72) #7
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %73) #7
  br label %878

860:                                              ; preds = %854
  %861 = landingpad { ptr, i32 }
          cleanup
  %862 = extractvalue { ptr, i32 } %861, 0
  store ptr %862, ptr %17, align 8
  %863 = extractvalue { ptr, i32 } %861, 1
  store i32 %863, ptr %18, align 4
  br label %880

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

868:                                              ; preds = %857
  %869 = landingpad { ptr, i32 }
          cleanup
  %870 = extractvalue { ptr, i32 } %869, 0
  store ptr %870, ptr %17, align 8
  %871 = extractvalue { ptr, i32 } %869, 1
  store i32 %871, ptr %18, align 4
  br label %876

872:                                              ; preds = %858
  %873 = landingpad { ptr, i32 }
          cleanup
  %874 = extractvalue { ptr, i32 } %873, 0
  store ptr %874, ptr %17, align 8
  %875 = extractvalue { ptr, i32 } %873, 1
  store i32 %875, ptr %18, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #7
  br label %876

876:                                              ; preds = %872, %868
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %72) #7
  br label %877

877:                                              ; preds = %876, %864
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %73) #7
  br label %880

878:                                              ; preds = %859, %851, %848, %845
  %879 = load i32, ptr %53, align 4, !tbaa !33
  store i32 %879, ptr %7, align 4
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %54) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  br label %884

880:                                              ; preds = %877, %860, %843
  call void @llvm.lifetime.end.p0(i64 16, ptr %63) #7
  br label %881

881:                                              ; preds = %880, %778, %740, %736, %735, %726, %717
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %54) #7
  br label %882

882:                                              ; preds = %881, %700
  call void @llvm.lifetime.end.p0(i64 176, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %52) #7
  br label %926

883:                                              ; preds = %540
  store i32 0, ptr %21, align 4
  br label %884

884:                                              ; preds = %883, %878, %664
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  %885 = load i32, ptr %21, align 4
  switch i32 %885, label %1006 [
    i32 0, label %886
  ]

886:                                              ; preds = %884
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %887 = load ptr, ptr %10, align 8, !tbaa !5
  %888 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %887)
          to label %889 unwind label %927

889:                                              ; preds = %886
  %890 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %888)
          to label %891 unwind label %927

891:                                              ; preds = %889
  store ptr %890, ptr %74, align 8, !tbaa !5
  %892 = load ptr, ptr %74, align 8, !tbaa !5
  %893 = icmp ne ptr %892, null
  br i1 %893, label %894, label %985

894:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  %895 = load ptr, ptr %11, align 8, !tbaa !5
  %896 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %895)
          to label %897 unwind label %931

897:                                              ; preds = %894
  %898 = invoke noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %896)
          to label %899 unwind label %931

899:                                              ; preds = %897
  store ptr %898, ptr %75, align 8, !tbaa !5
  %900 = load ptr, ptr %75, align 8, !tbaa !5
  %901 = icmp ne ptr %900, null
  br i1 %901, label %902, label %980

902:                                              ; preds = %899
  br label %903

903:                                              ; preds = %902
  %904 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %905 unwind label %931

905:                                              ; preds = %903
  br i1 %904, label %906, label %935

906:                                              ; preds = %905
  %907 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !77
  %908 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %907, ptr noundef @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %909 unwind label %931

909:                                              ; preds = %906
  %910 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %908, ptr noundef @.str.174)
          to label %911 unwind label %931

911:                                              ; preds = %909
  %912 = load ptr, ptr %74, align 8, !tbaa !5
  %913 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %912, i32 0, i32 0
  %914 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %910, ptr noundef nonnull align 8 dereferenceable(8) %913)
          to label %915 unwind label %931

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

917:                                              ; preds = %915
  %918 = load ptr, ptr %75, align 8, !tbaa !5
  %919 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %918, i32 0, i32 0
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %916, ptr noundef nonnull align 8 dereferenceable(8) %919)
          to label %921 unwind label %931

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

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

925:                                              ; preds = %923
  br label %935

926:                                              ; preds = %882, %699, %565
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %1008

927:                                              ; preds = %889, %886
  %928 = landingpad { ptr, i32 }
          cleanup
  %929 = extractvalue { ptr, i32 } %928, 0
  store ptr %929, ptr %17, align 8
  %930 = extractvalue { ptr, i32 } %928, 1
  store i32 %930, ptr %18, align 4
  br label %1002

931:                                              ; preds = %923, %921, %917, %915, %911, %909, %906, %903, %897, %894
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %17, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %18, align 4
  br label %984

935:                                              ; preds = %925, %905
  br label %936

936:                                              ; preds = %935
  br label %937

937:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 4, ptr %76) #7
  %938 = load ptr, ptr %74, align 8, !tbaa !5
  %939 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %938, i32 0, i32 0
  %940 = load ptr, ptr %9, align 8, !tbaa !5
  %941 = load ptr, ptr %75, align 8, !tbaa !5
  %942 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %941, i32 0, i32 0
  call void @llvm.lifetime.start.p0(i64 16, ptr %77) #7
  %943 = getelementptr inbounds %class.TraitResolution, ptr %80, i32 0, i32 2
  %944 = load ptr, ptr %943, align 8, !tbaa !9
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %77, ptr noundef nonnull align 8 dereferenceable(49) %944)
          to label %945 unwind label %960

945:                                              ; preds = %937
  %946 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %939, ptr noundef nonnull align 8 dereferenceable(8) %940, ptr noundef nonnull align 8 dereferenceable(8) %942, ptr noundef nonnull align 8 dereferenceable(8) %77)
          to label %947 unwind label %960

947:                                              ; preds = %945
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  store i32 %946, ptr %76, align 4, !tbaa !33
  %948 = load i32, ptr %76, align 4, !tbaa !33
  %949 = icmp eq i32 %948, 1
  br i1 %949, label %950, label %977

950:                                              ; preds = %947
  %951 = load ptr, ptr %12, align 8, !tbaa !5
  %952 = icmp ne ptr %951, null
  br i1 %952, label %953, label %977

953:                                              ; preds = %950
  %954 = load ptr, ptr %12, align 8, !tbaa !5
  %955 = load ptr, ptr %75, align 8, !tbaa !5
  %956 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %955, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %79, ptr noundef nonnull align 8 dereferenceable(8) %956)
          to label %957 unwind label %964

957:                                              ; preds = %953
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %78, ptr noundef %79)
          to label %958 unwind label %968

958:                                              ; preds = %957
  invoke void @_ZNKSt8functionIFvN3HIR7TypeRefEEEclES1_(ptr noundef nonnull align 8 dereferenceable(32) %954, ptr noundef %78)
          to label %959 unwind label %972

959:                                              ; preds = %958
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  br label %977

960:                                              ; preds = %945, %937
  %961 = landingpad { ptr, i32 }
          cleanup
  %962 = extractvalue { ptr, i32 } %961, 0
  store ptr %962, ptr %17, align 8
  %963 = extractvalue { ptr, i32 } %961, 1
  store i32 %963, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %77) #7
  br label %979

964:                                              ; preds = %953
  %965 = landingpad { ptr, i32 }
          cleanup
  %966 = extractvalue { ptr, i32 } %965, 0
  store ptr %966, ptr %17, align 8
  %967 = extractvalue { ptr, i32 } %965, 1
  store i32 %967, ptr %18, align 4
  br label %979

968:                                              ; preds = %957
  %969 = landingpad { ptr, i32 }
          cleanup
  %970 = extractvalue { ptr, i32 } %969, 0
  store ptr %970, ptr %17, align 8
  %971 = extractvalue { ptr, i32 } %969, 1
  store i32 %971, ptr %18, align 4
  br label %976

972:                                              ; preds = %958
  %973 = landingpad { ptr, i32 }
          cleanup
  %974 = extractvalue { ptr, i32 } %973, 0
  store ptr %974, ptr %17, align 8
  %975 = extractvalue { ptr, i32 } %973, 1
  store i32 %975, ptr %18, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #7
  br label %976

976:                                              ; preds = %972, %968
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  br label %979

977:                                              ; preds = %959, %950, %947
  %978 = load i32, ptr %76, align 4, !tbaa !33
  store i32 %978, ptr %7, align 4
  store i32 1, ptr %21, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %981

979:                                              ; preds = %976, %964, %960
  call void @llvm.lifetime.end.p0(i64 4, ptr %76) #7
  br label %984

980:                                              ; preds = %899
  store i32 0, ptr %21, align 4
  br label %981

981:                                              ; preds = %980, %977
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  %982 = load i32, ptr %21, align 4
  switch i32 %982, label %986 [
    i32 0, label %983
  ]

983:                                              ; preds = %981
  br label %985

984:                                              ; preds = %979, %931
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %1002

985:                                              ; preds = %983, %891
  store i32 0, ptr %21, align 4
  br label %986

986:                                              ; preds = %985, %981
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  %987 = load i32, ptr %21, align 4
  switch i32 %987, label %1006 [
    i32 0, label %988
  ]

988:                                              ; preds = %986
  br label %989

989:                                              ; preds = %988
  %990 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %991 unwind label %131

991:                                              ; preds = %989
  br i1 %990, label %992, label %1003

992:                                              ; preds = %991
  %993 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !77
  %994 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %993, ptr noundef @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %995 unwind label %131

995:                                              ; preds = %992
  %996 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %994, ptr noundef @.str.175)
          to label %997 unwind label %131

997:                                              ; preds = %995
  %998 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %996, ptr noundef @_ZSt3decRSt8ios_base)
          to label %999 unwind label %131

999:                                              ; preds = %997
  %1000 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %998, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1001 unwind label %131

1001:                                             ; preds = %999
  br label %1003

1002:                                             ; preds = %984, %927
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  br label %1008

1003:                                             ; preds = %1001, %991
  br label %1004

1004:                                             ; preds = %1003
  br label %1005

1005:                                             ; preds = %1004
  store i32 2, ptr %7, align 4
  store i32 1, ptr %21, align 4
  br label %1006

1006:                                             ; preds = %1005, %986, %884, %530, %235, %164, %135, %109
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #7
  %1007 = load i32, ptr %7, align 4
  ret i32 %1007

1008:                                             ; preds = %1002, %926, %534, %239, %162, %131, %104
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #7
  br label %1009

1009:                                             ; preds = %1008, %100
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #7
  br label %1010

1010:                                             ; preds = %1009
  %1011 = load ptr, ptr %17, align 8
  %1012 = load i32, ptr %18, align 4
  %1013 = insertvalue { ptr, i32 } poison, ptr %1011, 0
  %1014 = insertvalue { ptr, i32 } %1013, i32 %1012, 1
  resume { ptr, i32 } %1014

1015:                                             ; preds = %698
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef) #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 224}
!10 = !{!"_ZTS15TraitResolution", !11, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !29, i64 256}
!11 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !21, i64 72, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208}
!12 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !22, i64 0, !26, i64 24}
!22 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!27 = !{!"_ZTSN3HIR10SimplePathE", !28, i64 0}
!28 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!29 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!34, !34, i64 0}
!34 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!35 = !{!36, !6, i64 16}
!36 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!37 = !{!38, !38, i64 0}
!38 = !{!"bool", !7, i64 0}
!39 = !{i8 0, i8 2}
!40 = !{}
!41 = !{!42, !6, i64 0}
!42 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!43 = !{!44, !38, i64 200}
!44 = !{!"_ZTSN3HIR6StructE", !45, i64 0, !62, i64 96, !63, i64 104, !65, i64 136, !65, i64 140, !66, i64 144, !72, i64 200, !76, i64 248}
!45 = !{!"_ZTSN3HIR13GenericParamsE", !46, i64 0, !50, i64 24, !54, i64 48, !58, i64 72}
!46 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!62 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!63 = !{!"_ZTSN3HIR6Struct4DataE", !64, i64 0, !7, i64 8}
!64 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!65 = !{!"int", !7, i64 0}
!66 = !{!"_ZTSN3HIR13TraitMarkingsE", !38, i64 0, !38, i64 1, !38, i64 2, !67, i64 8}
!67 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !68, i64 0}
!68 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !69, i64 0}
!69 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !70, i64 0, !17, i64 8}
!70 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !71, i64 0}
!71 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!72 = !{!"_ZTSN3HIR14StructMarkingsE", !38, i64 0, !65, i64 4, !73, i64 8, !65, i64 12, !74, i64 16, !65, i64 20, !65, i64 24, !38, i64 28, !38, i64 29, !75, i64 32}
!73 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!74 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!75 = !{!"_ZTS4U128", !20, i64 0, !20, i64 8}
!76 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!77 = !{!65, !65, i64 0}
!78 = !{!44, !65, i64 204}
!79 = !{!80, !6, i64 32}
!80 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


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

%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.629 = type { ptr, ptr }
%"class.std::function.221" = type { %"class.std::_Function_base", ptr }
%class.anon.633 = type { ptr, ptr, ptr, 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.181" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.181" = type { %"struct.std::_Vector_base.182" }
%"struct.std::_Vector_base.182" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.229" = type { %"class.std::_Function_base", ptr }
%class.anon.634 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.635 = type { ptr, ptr, ptr }
%"class.std::function.489" = type { %"class.std::_Function_base", ptr }
%"class.__gnu_cxx::__normal_iterator.153" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.45", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr.29", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.40", ptr }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.40" = type { %"class.std::_Rb_tree.41" }
%"class.std::_Rb_tree.41" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.45" = type { %"struct.std::_Vector_base.46" }
%"struct.std::_Vector_base.46" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%struct.Span = type { ptr }
%class.anon.636 = type { ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.637 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.638 = type { ptr, ptr }
%"class.HIR::TypeData" = type { i32, %"union.HIR::TypeData::DataUnion" }
%"union.HIR::TypeData::DataUnion" = type { %"struct.HIR::TypeData_ErasedType", [16 x i8] }
%"struct.HIR::TypeData_ErasedType" = type { i8, %"class.std::vector.50", %"class.std::vector.55", %"class.HIR::TypeData_ErasedType_Inner" }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.55" = type { %"struct.std::_Vector_base.56" }
%"struct.std::_Vector_base.56" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeRef, std::allocator<HIR::LifetimeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeData_ErasedType_Inner" = type { i32, %"union.HIR::TypeData_ErasedType_Inner::DataUnion" }
%"union.HIR::TypeData_ErasedType_Inner::DataUnion" = type { %"struct.HIR::TypeData_ErasedType_Inner::Data_Alias", [56 x i8] }
%"struct.HIR::TypeData_ErasedType_Inner::Data_Alias" = type { %"struct.HIR::PathParams", %"class.std::shared_ptr" }
%"class.std::shared_ptr" = type { %"class.std::__shared_ptr" }
%"class.std::__shared_ptr" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }

@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.56 = external hidden unnamed_addr constant [5 x i8], align 1
@__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE = external hidden unnamed_addr constant [11 x i8], align 1
@.str.169 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.170 = external hidden unnamed_addr constant [51 x i8], align 1
@.str.171 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.172 = external hidden unnamed_addr constant [59 x i8], align 1
@.str.173 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.174 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.175 = external hidden unnamed_addr constant [31 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

declare void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #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 #6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind noalias writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8, ptr noundef nonnull align 8 dereferenceable(49)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef %4, ptr noundef %5) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.629, align 8
  %11 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %12 = alloca %"class.std::function.221", align 8
  %13 = alloca %class.anon.633, align 8
  %14 = alloca i32, align 4
  %15 = alloca %struct.MonomorphStatePtr, align 8
  %16 = alloca %"class.std::function.229", align 8
  %17 = alloca %class.anon.634, align 8
  %18 = alloca %class.anon.635, align 8
  %19 = alloca %"class.std::function.489", align 8
  %20 = alloca ptr, align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %22 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %23 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %27 = alloca %"class.HIR::GenericPath", align 8
  %28 = alloca %"struct.HIR::SimplePath", align 8
  %29 = alloca %"struct.HIR::SimplePath", align 8
  %30 = alloca %struct.Span, align 8
  %31 = alloca %"class.std::function", align 8
  %32 = alloca %class.anon.636, align 8
  %33 = alloca %"class.std::function.444", align 8
  %34 = alloca %class.anon.637, align 8
  %35 = alloca %class.anon.638, align 8
  %36 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %37 = alloca %"class.__gnu_cxx::__normal_iterator.153", align 8
  %38 = alloca %"class.HIR::GenericPath", align 8
  %39 = alloca %"struct.HIR::SimplePath", align 8
  %40 = alloca %"class.std::function.444", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.HIR::TypeData", align 8
  %43 = alloca %"struct.HIR::TypeData_TraitObject", align 8
  %44 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %45 = alloca %"class.HIR::TypeRef", align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  store ptr %4, ptr %7, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #7
  %47 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %48 = select i1 %47, ptr @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE, ptr null
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %10) #7
  store ptr %2, ptr %10, align 8, !tbaa !5
  %49 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %3, ptr %49, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefESB_PS_IFvS9_EEPS_IFvSB_SB_EEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(16) %10) #7
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %48, ptr noundef nonnull %9)
          to label %50 unwind label %56

50:                                               ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %10) #7
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #7
  %51 = getelementptr inbounds i8, ptr %0, i64 224
  %52 = load ptr, ptr %51, align 8, !tbaa !9
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %11, ptr noundef nonnull align 8 dereferenceable(49) %52)
          to label %53 unwind label %58

53:                                               ; preds = %50
  %54 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %11)
          to label %55 unwind label %58

55:                                               ; preds = %53
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  %.not = icmp eq i32 %54, 0
  br i1 %.not, label %.thread, label %60

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

58:                                               ; preds = %53, %50
  %59 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #7
  br label %496

60:                                               ; preds = %55
  %61 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %62 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %61)
  br i1 %62, label %66, label %63

63:                                               ; preds = %60
  %64 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %65 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %64)
  br i1 %65, label %66, label %70

66:                                               ; preds = %63, %60
  %.not259 = icmp eq ptr %5, null
  br i1 %.not259, label %.thread, label %67

67:                                               ; preds = %66
  invoke void @_ZNKSt8functionIFvRKN3HIR7TypeRefES3_EEclES3_S3_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %.thread unwind label %68

68:                                               ; preds = %494, %492, %490, %487, %484, %67
  %69 = landingpad { ptr, i32 }
          cleanup
  br label %496

70:                                               ; preds = %63
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %13) #7
  store ptr %2, ptr %13, align 8, !tbaa !5
  %71 = getelementptr inbounds i8, ptr %13, i64 8
  store ptr %1, ptr %71, align 8, !tbaa !5
  %72 = getelementptr inbounds i8, ptr %13, i64 16
  store ptr %0, ptr %72, align 8, !tbaa !33
  %73 = getelementptr inbounds i8, ptr %13, i64 24
  store ptr %3, ptr %73, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbN3HIR7CompareERKNS0_7TypeRefERKNS0_11GenericPathERKN18TraitResolveCommon11CachedBoundEEEC2IZNK15TraitResolution10can_unsizeERK4SpanS4_S4_PS_IFvS2_EEPS_IFvS4_S4_EEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 8 dereferenceable(32) %13)
          to label %74 unwind label %78

74:                                               ; preds = %70
  %75 = getelementptr inbounds i8, ptr %0, i64 136
  %76 = invoke noundef zeroext i1 @_ZNK15TraitResolution21iterate_bounds_traitsERK4SpanRKN3HIR7TypeRefERKNS3_10SimplePathESt8functionIFbNS3_7CompareES6_RKNS3_11GenericPathERKN18TraitResolveCommon11CachedBoundEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull %12)
          to label %77 unwind label %80

77:                                               ; preds = %74
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br i1 %76, label %.thread, label %83

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

80:                                               ; preds = %74
  %81 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #7
  br label %82

82:                                               ; preds = %80, %78
  %.pn = phi { ptr, i32 } [ %81, %80 ], [ %79, %78 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %13) #7
  br label %496

83:                                               ; preds = %77
  %84 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %85 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %84)
  br i1 %85, label %86, label %113

86:                                               ; preds = %83
  %87 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %88 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %87)
  %89 = call noundef zeroext i1 @_ZNK3HIR4Path4Data12is_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %88)
  br i1 %89, label %90, label %113

90:                                               ; preds = %86
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %14) #7
  store i32 0, ptr %14, align 4, !tbaa !35
  %91 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %92 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %91)
  %93 = call noundef nonnull align 8 dereferenceable(80) ptr @_ZNK3HIR4Path4Data12as_UfcsKnownEv(ptr noundef nonnull align 8 dereferenceable(88) %92)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %15) #7
  %94 = getelementptr inbounds i8, ptr %93, i64 16
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %15, ptr noundef nonnull %93, ptr noundef nonnull %94, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %95 unwind label %105

95:                                               ; preds = %90
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %17) #7
  store ptr %0, ptr %17, align 8, !tbaa !37
  %96 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %15, ptr %96, align 8, !tbaa !5
  %97 = getelementptr inbounds i8, ptr %17, i64 16
  store ptr %1, ptr %97, align 8, !tbaa !5
  %98 = getelementptr inbounds i8, ptr %17, i64 24
  store ptr %2, ptr %98, align 8, !tbaa !5
  %99 = getelementptr inbounds i8, ptr %17, i64 32
  store ptr %3, ptr %99, align 8, !tbaa !5
  %100 = getelementptr inbounds i8, ptr %17, i64 40
  store ptr %14, ptr %100, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitPathEEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKNS0_7TypeRefESD_PS_IFvSB_EEPS_IFvSD_SD_EEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(48) %17)
          to label %101 unwind label %107

101:                                              ; preds = %95
  %102 = invoke noundef zeroext i1 @_ZNK15TraitResolution18iterate_aty_boundsERK4SpanRKN3HIR4Path4Data14Data_UfcsKnownESt8functionIFbRKNS3_9TraitPathEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(80) %93, ptr noundef nonnull %16)
          to label %103 unwind label %109

103:                                              ; preds = %101
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #7
  %104 = load i32, ptr %14, align 4
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %15) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br i1 %102, label %.thread, label %113

105:                                              ; preds = %90
  %106 = landingpad { ptr, i32 }
          cleanup
  br label %112

107:                                              ; preds = %95
  %108 = landingpad { ptr, i32 }
          cleanup
  br label %111

109:                                              ; preds = %101
  %110 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #7
  br label %111

111:                                              ; preds = %109, %107
  %.pn215 = phi { ptr, i32 } [ %110, %109 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %17) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %15) #7
  br label %112

112:                                              ; preds = %111, %105
  %.pn215.pn = phi { ptr, i32 } [ %.pn215, %111 ], [ %106, %105 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %15) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %14) #7
  br label %496

113:                                              ; preds = %103, %86, %83
  %114 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %115 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %114)
  br i1 %115, label %116, label %263

116:                                              ; preds = %113
  %117 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %118 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %117)
  br i1 %118, label %119, label %263

119:                                              ; preds = %116
  %120 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %121 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %120)
  %122 = getelementptr inbounds i8, ptr %121, i64 88
  %123 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %122)
  br i1 %123, label %124, label %133

124:                                              ; preds = %119
  %125 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %126 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %125)
  %127 = getelementptr inbounds i8, ptr %126, i64 88
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %127)
  %129 = load ptr, ptr %128, align 8, !tbaa !5
  %130 = getelementptr inbounds i8, ptr %129, i64 200
  %131 = load i8, ptr %130, align 8, !tbaa !39, !range !74, !noundef !75
  %132 = trunc nuw i8 %131 to i1
  br label %133

133:                                              ; preds = %124, %119
  %134 = phi i1 [ false, %119 ], [ %132, %124 ]
  %135 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %136 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %135)
  %137 = getelementptr inbounds i8, ptr %136, i64 88
  %138 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %137)
  br i1 %138, label %139, label %148

139:                                              ; preds = %133
  %140 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %141 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %140)
  %142 = getelementptr inbounds i8, ptr %141, i64 88
  %143 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %142)
  %144 = load ptr, ptr %143, align 8, !tbaa !5
  %145 = getelementptr inbounds i8, ptr %144, i64 200
  %146 = load i8, ptr %145, align 8, !tbaa !39, !range !74, !noundef !75
  %147 = trunc nuw i8 %146 to i1
  br label %148

148:                                              ; preds = %139, %133
  %149 = phi i1 [ false, %133 ], [ %147, %139 ]
  %brmerge = select i1 %134, i1 true, i1 %149
  br i1 %brmerge, label %150, label %263

150:                                              ; preds = %148
  %151 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %152 unwind label %168

152:                                              ; preds = %150
  br i1 %151, label %153, label %170

153:                                              ; preds = %152
  %154 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %155 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %154, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %156 unwind label %168

156:                                              ; preds = %153
  %157 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %155, ptr noundef nonnull @.str.169)
          to label %158 unwind label %168

158:                                              ; preds = %156
  %159 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %157, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %160 unwind label %168

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

162:                                              ; preds = %160
  %163 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %161, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %164 unwind label %168

164:                                              ; preds = %162
  %165 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %163, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %166 unwind label %168

166:                                              ; preds = %164
  %167 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %165, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %170 unwind label %168

168:                                              ; preds = %166, %164, %162, %160, %158, %156, %153, %150
  %169 = landingpad { ptr, i32 }
          cleanup
  br label %496

170:                                              ; preds = %166, %152
  %171 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %172 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %171)
  %173 = getelementptr inbounds i8, ptr %172, i64 88
  %174 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %173)
  %175 = load ptr, ptr %174, align 8, !tbaa !5
  %176 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %177 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %176)
  %178 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %177)
  %179 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %180 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %179)
  %181 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %180)
  %182 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %178, ptr noundef nonnull align 8 dereferenceable(32) %181)
          to label %183 unwind label %190

183:                                              ; preds = %170
  br i1 %182, label %184, label %192

184:                                              ; preds = %183
  %185 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %186 unwind label %190

186:                                              ; preds = %184
  br i1 %185, label %187, label %.thread

187:                                              ; preds = %186
  %188 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %189 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %188, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %.invoke302 unwind label %190

190:                                              ; preds = %.invoke302, %.invoke301, %.invoke, %255, %252, %211, %209, %207, %205, %203, %201, %198, %195, %192, %187, %184, %170
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %496

192:                                              ; preds = %183
  %193 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %178, ptr noundef nonnull align 8 dereferenceable(8) %181)
          to label %194 unwind label %190

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

195:                                              ; preds = %194
  %196 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %197 unwind label %190

197:                                              ; preds = %195
  br i1 %196, label %198, label %213

198:                                              ; preds = %197
  %199 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %200 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %199, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %201 unwind label %190

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

203:                                              ; preds = %201
  %204 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(32) %178)
          to label %205 unwind label %190

205:                                              ; preds = %203
  %206 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %204, ptr noundef nonnull @.str.56)
          to label %207 unwind label %190

207:                                              ; preds = %205
  %208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %206, ptr noundef nonnull align 8 dereferenceable(32) %181)
          to label %209 unwind label %190

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

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

213:                                              ; preds = %211, %197
  %214 = load ptr, ptr %51, align 8, !tbaa !9
  %215 = getelementptr inbounds i8, ptr %178, i64 16
  %216 = getelementptr inbounds i8, ptr %175, i64 204
  %217 = load i32, ptr %216, align 4, !tbaa !77
  %218 = zext i32 %217 to i64
  %219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %215, i64 noundef %218)
          to label %220 unwind label %237

220:                                              ; preds = %213
  %221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %214, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %222 unwind label %237

222:                                              ; preds = %220
  %223 = load ptr, ptr %51, align 8, !tbaa !9
  %224 = getelementptr inbounds i8, ptr %181, i64 16
  %225 = load i32, ptr %216, align 4, !tbaa !77
  %226 = zext i32 %225 to i64
  %227 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %224, i64 noundef %226)
          to label %228 unwind label %239

228:                                              ; preds = %222
  %229 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %223, ptr noundef nonnull align 8 dereferenceable(8) %227)
          to label %230 unwind label %239

230:                                              ; preds = %228
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %18) #7
  store ptr %7, ptr %18, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %18, i64 8
  store ptr %178, ptr %231, align 8, !tbaa !5
  %232 = getelementptr inbounds i8, ptr %18, i64 16
  store ptr %175, ptr %232, align 8, !tbaa !5
  %.not218 = icmp eq ptr %4, null
  br i1 %.not218, label %246, label %233

233:                                              ; preds = %230
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %19) #7
  invoke void @"_ZNSt8functionIFvN3HIR7TypeRefEEEC2IRZNK15TraitResolution10can_unsizeERK4SpanRKS1_SA_PS3_PS_IFvSA_SA_EEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(24) %18)
          to label %234 unwind label %241

234:                                              ; preds = %233
  %235 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef nonnull %19, ptr noundef %5)
          to label %236 unwind label %243

236:                                              ; preds = %234
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %250

237:                                              ; preds = %220, %213
  %238 = landingpad { ptr, i32 }
          cleanup
  br label %496

239:                                              ; preds = %228, %222
  %240 = landingpad { ptr, i32 }
          cleanup
  br label %496

241:                                              ; preds = %233
  %242 = landingpad { ptr, i32 }
          cleanup
  br label %245

243:                                              ; preds = %234
  %244 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #7
  br label %245

245:                                              ; preds = %243, %241
  %.pn219 = phi { ptr, i32 } [ %244, %243 ], [ %242, %241 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %19) #7
  br label %251

246:                                              ; preds = %230
  %247 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %221, ptr noundef nonnull align 8 dereferenceable(8) %229, ptr noundef null, ptr noundef %5)
          to label %250 unwind label %248

248:                                              ; preds = %246
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %251

250:                                              ; preds = %246, %236
  %.4 = phi i32 [ %235, %236 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  br label %.thread

251:                                              ; preds = %248, %245
  %.pn219.pn = phi { ptr, i32 } [ %.pn219, %245 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %18) #7
  br label %496

252:                                              ; preds = %194
  %253 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %254 unwind label %190

254:                                              ; preds = %252
  br i1 %253, label %255, label %.thread

255:                                              ; preds = %254
  %256 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %256, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %.invoke302 unwind label %190

.invoke302:                                       ; preds = %187, %255
  %258 = phi ptr [ %257, %255 ], [ %189, %187 ]
  %259 = phi ptr [ @.str.172, %255 ], [ @.str.170, %187 ]
  %260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef nonnull %259)
          to label %.invoke301 unwind label %190

.invoke301:                                       ; preds = %.invoke302
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %260, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke unwind label %190

.invoke:                                          ; preds = %.invoke301
  %262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %261, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread unwind label %190

263:                                              ; preds = %148, %116, %113
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #7
  %264 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %265 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %264)
  store ptr %265, ptr %20, align 8, !tbaa !5
  %.not227 = icmp eq ptr %265, null
  br i1 %.not227, label %.thread273, label %268

.thread273:                                       ; preds = %263
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  %266 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %267 = call noundef ptr @_ZNK3HIR8TypeData9opt_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %266)
  %.not253 = icmp eq ptr %267, null
  br i1 %.not253, label %484, label %440

268:                                              ; preds = %263
  %269 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %270 unwind label %286

270:                                              ; preds = %268
  br i1 %269, label %271, label %288

271:                                              ; preds = %270
  %272 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %272, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %274 unwind label %286

274:                                              ; preds = %271
  %275 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull @.str.173)
          to label %276 unwind label %286

276:                                              ; preds = %274
  %277 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %275, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %278 unwind label %286

278:                                              ; preds = %276
  %279 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %277, ptr noundef nonnull @.str.56)
          to label %280 unwind label %286

280:                                              ; preds = %278
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %282 unwind label %286

282:                                              ; preds = %280
  %283 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %281, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %284 unwind label %286

284:                                              ; preds = %282
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %283, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %288 unwind label %286

286:                                              ; preds = %284, %282, %280, %278, %276, %274, %271, %268
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %461

288:                                              ; preds = %284, %270
  %289 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %290 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %289)
  %.not228 = icmp eq ptr %290, null
  br i1 %.not228, label %.thread266, label %291

291:                                              ; preds = %288
  %292 = load ptr, ptr %20, align 8, !tbaa !5
  %293 = invoke noundef zeroext i1 @_ZNK3HIR9TraitPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(144) %292, ptr noundef nonnull align 8 dereferenceable(144) %290)
          to label %294 unwind label %295

294:                                              ; preds = %291
  br i1 %293, label %.thread276, label %297

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

295:                                              ; preds = %291
  %296 = landingpad { ptr, i32 }
          cleanup
  br label %461

297:                                              ; preds = %294
  %298 = load ptr, ptr %20, align 8, !tbaa !5
  %299 = getelementptr inbounds i8, ptr %298, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #7
  %300 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %299) #7
  store ptr %300, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #7
  %301 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %299) #7
  store ptr %301, ptr %22, align 8
  %302 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br i1 %302, label %.lr.ph289, label %.loopexit

.lr.ph289:                                        ; preds = %297
  %303 = getelementptr inbounds i8, ptr %290, i64 144
  br label %304

304:                                              ; preds = %.lr.ph289, %317
  %305 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #7
  %306 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %303) #7
  store ptr %306, ptr %23, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #7
  %307 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %303) #7
  store ptr %307, ptr %24, align 8
  %308 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %308, label %.lr.ph, label %.critedge

.lr.ph:                                           ; preds = %304, %314
  %309 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %310 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %309, ptr noundef nonnull align 8 dereferenceable(32) %305)
          to label %311 unwind label %312

311:                                              ; preds = %.lr.ph
  br i1 %310, label %317, label %314

312:                                              ; preds = %.lr.ph
  %313 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %461

314:                                              ; preds = %311
  %315 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %23) #7
  %316 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #7
  br i1 %316, label %.lr.ph, label %.critedge

317:                                              ; preds = %311
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  %318 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #7
  %319 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  br i1 %319, label %304, label %.loopexit

.critedge:                                        ; preds = %304, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #7
  br label %.loopexit

.loopexit:                                        ; preds = %317, %297, %.critedge
  %spec.select = phi i32 [ 2, %.critedge ], [ 0, %297 ], [ 0, %317 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #7
  br label %439

.thread266:                                       ; preds = %288
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #7
  store i32 0, ptr %25, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 176, ptr nonnull %26) #7
  invoke void @_ZN3HIR20TypeData_TraitObjectC2Ev(ptr noundef nonnull align 8 dereferenceable(172) %26)
          to label %320 unwind label %342

320:                                              ; preds = %.thread266
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #7
  %321 = load ptr, ptr %20, align 8, !tbaa !5
  %322 = getelementptr inbounds i8, ptr %321, i64 8
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %323 unwind label %344

323:                                              ; preds = %320
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %27, ptr noundef nonnull %28)
          to label %324 unwind label %346

324:                                              ; preds = %323
  %325 = getelementptr inbounds i8, ptr %26, i64 8
  %326 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3HIR11GenericPathaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %325, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %327 unwind label %348

327:                                              ; preds = %324
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  %328 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #7
  invoke void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %329 unwind label %352

329:                                              ; preds = %327
  %330 = getelementptr inbounds i8, ptr %328, i64 8
  %331 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %332 unwind label %354

332:                                              ; preds = %329
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  %333 = load ptr, ptr %20, align 8, !tbaa !5
  br i1 %331, label %334, label %366

334:                                              ; preds = %332
  %335 = getelementptr inbounds i8, ptr %333, i64 144
  %336 = call noundef i64 @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %335) #7
  %.not238 = icmp eq i64 %336, 0
  br i1 %.not238, label %337, label %383

337:                                              ; preds = %334
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #7
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %338 unwind label %357

338:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %32) #7
  store ptr %2, ptr %32, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefESB_PS_IFvS9_EEPS_IFvSB_SB_EEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %31, ptr noundef nonnull align 8 dereferenceable(8) %32) #7
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull %31)
          to label %339 unwind label %359

339:                                              ; preds = %338
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  %340 = call ptr @__cxa_allocate_exception(i64 16) #7
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %340, ptr noundef nonnull @.str.8)
          to label %341 unwind label %362

341:                                              ; preds = %339
  invoke void @__cxa_throw(ptr nonnull %340, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #8
          to label %498 unwind label %364

342:                                              ; preds = %.thread266
  %343 = landingpad { ptr, i32 }
          cleanup
  br label %438

344:                                              ; preds = %320
  %345 = landingpad { ptr, i32 }
          cleanup
  br label %351

346:                                              ; preds = %323
  %347 = landingpad { ptr, i32 }
          cleanup
  br label %350

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

350:                                              ; preds = %348, %346
  %.pn231 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #7
  br label %351

351:                                              ; preds = %350, %344
  %.pn231.pn = phi { ptr, i32 } [ %.pn231, %350 ], [ %345, %344 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #7
  br label %437

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

354:                                              ; preds = %329
  %355 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #7
  br label %356

356:                                              ; preds = %354, %352
  %.pn234 = phi { ptr, i32 } [ %355, %354 ], [ %353, %352 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #7
  br label %437

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

359:                                              ; preds = %338
  %360 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %32) #7
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  br label %361

361:                                              ; preds = %359, %357
  %.pn239 = phi { ptr, i32 } [ %360, %359 ], [ %358, %357 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #7
  br label %437

362:                                              ; preds = %339
  %363 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %340) #7
  br label %437

364:                                              ; preds = %341
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %437

366:                                              ; preds = %332
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) #7
  store ptr %25, ptr %34, align 8, !tbaa !5
  %367 = getelementptr inbounds i8, ptr %34, i64 8
  store ptr %26, ptr %367, align 8, !tbaa !5
  %368 = getelementptr inbounds i8, ptr %34, i64 16
  store ptr %20, ptr %368, align 8, !tbaa !5
  %369 = getelementptr inbounds i8, ptr %34, i64 24
  store ptr %3, ptr %369, align 8, !tbaa !5
  %370 = getelementptr inbounds i8, ptr %34, i64 32
  store ptr %0, ptr %370, align 8, !tbaa !78
  %371 = getelementptr inbounds i8, ptr %34, i64 40
  store ptr %1, ptr %371, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution10can_unsizeERK4SpanRKNS1_7TypeRefESC_PS_IFvSA_EEPS_IFvSC_SC_EEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(48) %34)
          to label %372 unwind label %378

372:                                              ; preds = %366
  %373 = getelementptr inbounds i8, ptr %333, i64 8
  %374 = getelementptr inbounds i8, ptr %333, i64 16
  %375 = invoke noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %373, ptr noundef nonnull align 8 dereferenceable(24) %374, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %33, i1 noundef zeroext true)
          to label %376 unwind label %380

376:                                              ; preds = %372
  %377 = zext i1 %375 to i8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #7
  br label %383

378:                                              ; preds = %366
  %379 = landingpad { ptr, i32 }
          cleanup
  br label %382

380:                                              ; preds = %372
  %381 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #7
  br label %382

382:                                              ; preds = %380, %378
  %.pn236 = phi { ptr, i32 } [ %381, %380 ], [ %379, %378 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #7
  br label %437

383:                                              ; preds = %334, %376
  %.0205 = phi i8 [ %377, %376 ], [ 1, %334 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %35) #7
  store ptr %25, ptr %35, align 8, !tbaa !5
  %384 = getelementptr inbounds i8, ptr %35, i64 8
  store ptr %26, ptr %384, align 8, !tbaa !5
  %385 = load ptr, ptr %20, align 8, !tbaa !5
  %386 = getelementptr inbounds i8, ptr %385, i64 144
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #7
  %387 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #7
  store ptr %387, ptr %36, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #7
  %388 = call ptr @_ZNKSt6vectorIN3HIR11GenericPathESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %386) #7
  store ptr %388, ptr %37, align 8
  %389 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br i1 %389, label %.lr.ph293, label %._crit_edge

.lr.ph293:                                        ; preds = %383
  %390 = getelementptr inbounds i8, ptr %26, i64 144
  br label %391

391:                                              ; preds = %.lr.ph293, %400
  %.1206292 = phi i8 [ %.0205, %.lr.ph293 ], [ %401, %400 ]
  %392 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  %393 = trunc nuw i8 %.1206292 to i1
  br i1 %393, label %394, label %._crit_edge

394:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #7
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %392)
          to label %395 unwind label %404

395:                                              ; preds = %394
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull %39)
          to label %396 unwind label %406

396:                                              ; preds = %395
  invoke void @_ZNSt6vectorIN3HIR11GenericPathESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %390, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %397 unwind label %408

397:                                              ; preds = %396
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  %398 = getelementptr inbounds i8, ptr %392, i64 8
  call void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IRZNK15TraitResolution10can_unsizeERK4SpanRKNS1_7TypeRefESC_PS_IFvSA_EEPS_IFvSC_SC_EEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(16) %35) #7
  %399 = invoke noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %392, ptr noundef nonnull align 8 dereferenceable(24) %398, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull %40, i1 noundef zeroext true)
          to label %400 unwind label %412

400:                                              ; preds = %397
  %401 = zext i1 %399 to i8
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  %402 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #7
  %403 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR11GenericPathESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #7
  br i1 %403, label %391, label %._crit_edge

404:                                              ; preds = %394
  %405 = landingpad { ptr, i32 }
          cleanup
  br label %411

406:                                              ; preds = %395
  %407 = landingpad { ptr, i32 }
          cleanup
  br label %410

408:                                              ; preds = %396
  %409 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #7
  br label %410

410:                                              ; preds = %408, %406
  %.pn241 = phi { ptr, i32 } [ %409, %408 ], [ %407, %406 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #7
  br label %411

411:                                              ; preds = %410, %404
  %.pn241.pn = phi { ptr, i32 } [ %.pn241, %410 ], [ %405, %404 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #7
  br label %414

412:                                              ; preds = %397
  %413 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #7
  br label %414

414:                                              ; preds = %412, %411
  %.pn244 = phi { ptr, i32 } [ %413, %412 ], [ %.pn241.pn, %411 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  br label %436

._crit_edge:                                      ; preds = %400, %391, %383
  %.1206.lcssa = phi i8 [ %.0205, %383 ], [ %.1206292, %391 ], [ %401, %400 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #7
  %415 = trunc nuw i8 %.1206.lcssa to i1
  %416 = load i32, ptr %25, align 4
  %417 = icmp eq i32 %416, 1
  %or.cond15 = select i1 %415, i1 %417, i1 false
  %418 = icmp ne ptr %4, null
  %or.cond17 = and i1 %or.cond15, %418
  br i1 %or.cond17, label %419, label %434

419:                                              ; preds = %._crit_edge
  invoke void @_ZN3HIR20TypeData_TraitObjectC2EOS0_(ptr noundef nonnull align 8 dereferenceable(172) %43, ptr noundef nonnull align 8 dereferenceable(172) %26)
          to label %420 unwind label %424

420:                                              ; preds = %419
  invoke void @_ZN3HIR8TypeDataC2ENS_20TypeData_TraitObjectE(ptr noundef nonnull align 8 dereferenceable(184) %42, ptr noundef nonnull %43)
          to label %421 unwind label %426

421:                                              ; preds = %420
  invoke void @_ZN3HIR7TypeRefC2ENS_8TypeDataE(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull %42)
          to label %422 unwind label %428

422:                                              ; preds = %421
  invoke void @_ZNKSt8functionIFvN3HIR7TypeRefEEEclES1_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %41)
          to label %423 unwind label %430

423:                                              ; preds = %422
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #7
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %43) #7
  %.pre = load i32, ptr %25, align 4, !tbaa !35
  br label %434

424:                                              ; preds = %419
  %425 = landingpad { ptr, i32 }
          cleanup
  br label %436

426:                                              ; preds = %420
  %427 = landingpad { ptr, i32 }
          cleanup
  br label %433

428:                                              ; preds = %421
  %429 = landingpad { ptr, i32 }
          cleanup
  br label %432

430:                                              ; preds = %422
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #7
  br label %432

432:                                              ; preds = %430, %428
  %.pn246 = phi { ptr, i32 } [ %431, %430 ], [ %429, %428 ]
  call void @_ZN3HIR8TypeDataD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #7
  br label %433

433:                                              ; preds = %432, %426
  %.pn246.pn = phi { ptr, i32 } [ %.pn246, %432 ], [ %427, %426 ]
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %43) #7
  br label %436

434:                                              ; preds = %423, %._crit_edge
  %435 = phi i32 [ %.pre, %423 ], [ %416, %._crit_edge ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %26) #7
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  br label %439

436:                                              ; preds = %433, %424, %414
  %.pn246.pn.pn = phi { ptr, i32 } [ %.pn246.pn, %433 ], [ %425, %424 ], [ %.pn244, %414 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %35) #7
  br label %437

437:                                              ; preds = %436, %382, %364, %362, %361, %356, %351
  %.pn246.pn.pn.pn = phi { ptr, i32 } [ %.pn246.pn.pn, %436 ], [ %365, %364 ], [ %363, %362 ], [ %.pn239, %361 ], [ %.pn236, %382 ], [ %.pn234, %356 ], [ %.pn231.pn, %351 ]
  call void @_ZN3HIR20TypeData_TraitObjectD2Ev(ptr noundef nonnull align 8 dereferenceable(172) %26) #7
  br label %438

438:                                              ; preds = %437, %342
  %.pn246.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn246.pn.pn.pn, %437 ], [ %343, %342 ]
  call void @llvm.lifetime.end.p0(i64 176, ptr nonnull %26) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #7
  br label %461

439:                                              ; preds = %.loopexit, %434
  %.13 = phi i32 [ %435, %434 ], [ %spec.select, %.loopexit ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %.thread

440:                                              ; preds = %.thread273
  %441 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %442 = call noundef ptr @_ZNK3HIR8TypeData9opt_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %441)
  %.not254 = icmp eq ptr %442, null
  br i1 %.not254, label %484, label %443

443:                                              ; preds = %440
  %444 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %445 unwind label %462

445:                                              ; preds = %443
  br i1 %444, label %446, label %464

446:                                              ; preds = %445
  %447 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !76
  %448 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %447, ptr noundef nonnull @__func__._ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EE)
          to label %449 unwind label %462

449:                                              ; preds = %446
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %448, ptr noundef nonnull @.str.174)
          to label %451 unwind label %462

451:                                              ; preds = %449
  %452 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %450, ptr noundef nonnull align 8 dereferenceable(8) %267)
          to label %453 unwind label %462

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

455:                                              ; preds = %453
  %456 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %454, ptr noundef nonnull align 8 dereferenceable(8) %442)
          to label %457 unwind label %462

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

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

461:                                              ; preds = %295, %312, %438, %286
  %.pn246.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn246.pn.pn.pn.pn, %438 ], [ %287, %286 ], [ %313, %312 ], [ %296, %295 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #7
  br label %496

462:                                              ; preds = %459, %457, %455, %453, %451, %449, %446, %443
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %496

464:                                              ; preds = %459, %445
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %44) #7
  %465 = load ptr, ptr %51, align 8, !tbaa !9
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %44, ptr noundef nonnull align 8 dereferenceable(49) %465)
          to label %466 unwind label %475

466:                                              ; preds = %464
  %467 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull align 8 dereferenceable(8) %44)
          to label %468 unwind label %475

468:                                              ; preds = %466
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  %469 = icmp eq i32 %467, 1
  %470 = icmp ne ptr %4, null
  %or.cond19 = and i1 %469, %470
  br i1 %or.cond19, label %471, label %.thread

471:                                              ; preds = %468
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(8) %442)
          to label %472 unwind label %477

472:                                              ; preds = %471
  invoke void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %45, ptr noundef nonnull %46)
          to label %473 unwind label %479

473:                                              ; preds = %472
  invoke void @_ZNKSt8functionIFvN3HIR7TypeRefEEEclES1_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull %45)
          to label %474 unwind label %481

474:                                              ; preds = %473
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %.thread

475:                                              ; preds = %466, %464
  %476 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %44) #7
  br label %496

477:                                              ; preds = %471
  %478 = landingpad { ptr, i32 }
          cleanup
  br label %496

479:                                              ; preds = %472
  %480 = landingpad { ptr, i32 }
          cleanup
  br label %483

481:                                              ; preds = %473
  %482 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #7
  br label %483

483:                                              ; preds = %481, %479
  %.pn255 = phi { ptr, i32 } [ %482, %481 ], [ %480, %479 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #7
  br label %496

484:                                              ; preds = %.thread273, %440
  %485 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %486 unwind label %68

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

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

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

492:                                              ; preds = %490
  %493 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %491, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %494 unwind label %68

494:                                              ; preds = %492
  %495 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %493, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread unwind label %68

.thread:                                          ; preds = %.invoke, %439, %250, %186, %254, %468, %474, %.thread276, %486, %494, %66, %67, %103, %77, %55
  %.17 = phi i32 [ %.13, %439 ], [ %104, %103 ], [ 0, %77 ], [ 2, %55 ], [ 1, %67 ], [ 1, %66 ], [ 2, %494 ], [ 2, %486 ], [ 2, %.thread276 ], [ 1, %474 ], [ %467, %468 ], [ 2, %254 ], [ 2, %186 ], [ %.4, %250 ], [ 2, %.invoke ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #7
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #7
  ret i32 %.17

496:                                              ; preds = %462, %483, %477, %475, %168, %237, %251, %239, %190, %461, %112, %82, %68, %58
  %.pn260 = phi { ptr, i32 } [ %69, %68 ], [ %.pn246.pn.pn.pn.pn.pn, %461 ], [ %.pn215.pn, %112 ], [ %.pn, %82 ], [ %59, %58 ], [ %169, %168 ], [ %191, %190 ], [ %238, %237 ], [ %.pn219.pn, %251 ], [ %240, %239 ], [ %463, %462 ], [ %.pn255, %483 ], [ %478, %477 ], [ %476, %475 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #7
  br label %497

497:                                              ; preds = %496, %56
  %.pn260.pn = phi { ptr, i32 } [ %.pn260, %496 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #7
  resume { ptr, i32 } %.pn260.pn

498:                                              ; preds = %341
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef9new_sliceES0_(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef) local_unnamed_addr #2 align 2

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 224}
!10 = !{!"_ZTS15TraitResolution", !11, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !29, i64 256}
!11 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !12, i64 24, !21, i64 72, !27, i64 104, !27, i64 112, !27, i64 120, !27, i64 128, !27, i64 136, !27, i64 144, !27, i64 152, !27, i64 160, !27, i64 168, !27, i64 176, !27, i64 184, !27, i64 192, !27, i64 200, !27, i64 208}
!12 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !13, i64 0}
!13 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !14, i64 0}
!14 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !15, i64 0, !17, i64 8}
!15 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !16, i64 0}
!16 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!17 = !{!"_ZTSSt15_Rb_tree_header", !18, i64 0, !20, i64 32}
!18 = !{!"_ZTSSt18_Rb_tree_node_base", !19, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!19 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !22, i64 0, !26, i64 24}
!22 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!27 = !{!"_ZTSN3HIR10SimplePathE", !28, i64 0}
!28 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!29 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !30, i64 0}
!30 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !31, i64 0}
!31 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !32, i64 0}
!32 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!33 = !{!34, !6, i64 16}
!34 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_1", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!35 = !{!36, !36, i64 0}
!36 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!37 = !{!38, !6, i64 0}
!38 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}
!39 = !{!40, !63, i64 200}
!40 = !{!"_ZTSN3HIR6StructE", !41, i64 0, !58, i64 96, !59, i64 104, !61, i64 136, !61, i64 140, !62, i64 144, !69, i64 200, !73, i64 248}
!41 = !{!"_ZTSN3HIR13GenericParamsE", !42, i64 0, !46, i64 24, !50, i64 48, !54, i64 72}
!42 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !51, i64 0}
!51 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!54 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!58 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!59 = !{!"_ZTSN3HIR6Struct4DataE", !60, i64 0, !7, i64 8}
!60 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!61 = !{!"int", !7, i64 0}
!62 = !{!"_ZTSN3HIR13TraitMarkingsE", !63, i64 0, !63, i64 1, !63, i64 2, !64, i64 8}
!63 = !{!"bool", !7, i64 0}
!64 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !65, i64 0}
!65 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !66, i64 0}
!66 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !67, i64 0, !17, i64 8}
!67 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !68, i64 0}
!68 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!69 = !{!"_ZTSN3HIR14StructMarkingsE", !63, i64 0, !61, i64 4, !70, i64 8, !61, i64 12, !71, i64 16, !61, i64 20, !61, i64 24, !63, i64 28, !63, i64 29, !72, i64 32}
!70 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!71 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!72 = !{!"_ZTS4U128", !20, i64 0, !20, i64 8}
!73 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!74 = !{i8 0, i8 2}
!75 = !{}
!76 = !{!61, !61, i64 0}
!77 = !{!40, !61, i64 204}
!78 = !{!79, !6, i64 32}
!79 = !{!"_ZTSZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_PSt8functionIFvS4_EEPS7_IFvS6_S6_EEE3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


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