; 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::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::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.HIR::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 }
%"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.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.607 = type { ptr, ptr, ptr, ptr }
%class.anon.608 = type { ptr }
%class.GetParams = type { %"class.HIR::MatchGenerics", %struct.Span, ptr }
%"class.HIR::MatchGenerics" = type { ptr }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"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 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.143 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.143 = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%struct.Matcher = type { %"class.HIR::MatchGenerics", %class.Monomorphiser, %struct.Span, ptr, %class.RcString, ptr }
%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.anon.609 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.443" = type { ptr }
%"class.Monomorphiser::PopOnDrop" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.611 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.612 = type { ptr, ptr }
%class.anon.613 = type { i8 }
%class.anon.615 = type { i8 }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%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::GenericBound::Data_TraitBound" = type { %"class.std::unique_ptr.29", %"class.HIR::TypeRef", %"class.HIR::TraitPath" }
%"struct.std::pair.165" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.29" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypeData::Data_Infer" = type { i32, i32 }
%"struct.HIR::TypeParamDef" = type <{ %class.RcString, %"class.HIR::TypeRef", i8, [7 x i8] }>

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_ = external hidden unnamed_addr constant [18 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter = external hidden global i64, align 8
@.str.138 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_ = external hidden unnamed_addr constant [248 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params = external hidden global %"class.HIR::GenericParams", align 8
@_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params = external hidden global i64, align 8
@.str.148 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_12ConstGenericE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) #2

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

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

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

declare void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168)) #6 align 2

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

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

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

; Function Attrs: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

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

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

; Function Attrs: nounwind
declare void @__cxa_guard_release(ptr) #0

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

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

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

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #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) #4 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) #2

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #2

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

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

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

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

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

declare void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext) #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_(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 %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(96) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %8) #4 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca i32, align 4
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca ptr, align 8
  %20 = alloca %class.TraceLog, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.607, align 8
  %23 = alloca %"class.std::function", align 8
  %24 = alloca %class.anon.608, align 8
  %25 = alloca ptr, align 8
  %26 = alloca i32, align 4
  %27 = alloca %class.GetParams, align 8
  %28 = alloca %struct.Span, align 8
  %29 = alloca i32, align 4
  %30 = alloca i32, align 4
  %31 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %32 = alloca ptr, align 8
  %33 = alloca i32, align 4
  %34 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %35 = alloca i32, align 4
  %36 = alloca %"struct.HIR::PathParams", align 8
  %37 = alloca %class.RcString, align 8
  %38 = alloca i8, align 1
  %39 = alloca ptr, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca ptr, align 8
  %45 = alloca ptr, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.HIR::ConstGeneric", align 8
  %49 = alloca %class.RcString, align 8
  %50 = alloca %"class.std::__cxx11::basic_string", align 8
  %51 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %52 = alloca ptr, align 8
  %53 = alloca i32, align 4
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %class.RcString, align 8
  %57 = alloca i32, align 4
  %58 = alloca %"class.HIR::ConstGeneric", align 8
  %59 = alloca %"class.HIR::ConstGeneric", align 8
  %60 = alloca %"struct.HIR::GenericRef", align 8
  %61 = alloca %class.RcString, align 8
  %62 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %63 = alloca %struct.Matcher, align 8
  %64 = alloca %struct.Span, align 8
  %65 = alloca %class.RcString, align 8
  %66 = alloca i32, align 4
  %67 = alloca %"struct.HIR::PathParams", align 8
  %68 = alloca %struct.Span, align 8
  %69 = alloca %"class.std::function", align 8
  %70 = alloca %class.anon.609, align 1
  %71 = alloca %"struct.HIR::PathParams", align 8
  %72 = alloca ptr, align 8
  %73 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %74 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %75 = alloca ptr, align 8
  %76 = alloca i8, align 1
  %77 = alloca ptr, align 8
  %78 = alloca i8, align 1
  %79 = alloca ptr, align 8
  %80 = alloca i8, align 1
  %81 = alloca ptr, align 8
  %82 = alloca i8, align 1
  %83 = alloca ptr, align 8
  %84 = alloca %"class.Monomorphiser::PopOnDrop", align 8
  %85 = alloca %"class.HIR::TypeRef", align 8
  %86 = alloca %"class.HIR::TraitPath", align 8
  %87 = alloca %"class.HIR::TypeRef", align 8
  %88 = alloca %"class.HIR::TypeRef", align 8
  %89 = alloca ptr, align 8
  %90 = alloca ptr, align 8
  %91 = alloca ptr, align 8
  %92 = alloca ptr, align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::TypeRef", align 8
  %95 = alloca ptr, align 8
  %96 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %97 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %98 = alloca ptr, align 8
  %99 = alloca %"class.HIR::TypeRef", align 8
  %100 = alloca %"class.HIR::TypeRef", align 8
  %101 = alloca ptr, align 8
  %102 = alloca i8, align 1
  %103 = alloca %"struct.HIR::PathParams", align 8
  %104 = alloca %"struct.HIR::PathParams", align 8
  %105 = alloca i32, align 4
  %106 = alloca i8, align 1
  %107 = alloca i8, align 1
  %108 = alloca %"class.std::function.444", align 8
  %109 = alloca %class.anon.611, align 8
  %110 = alloca i8, align 1
  %111 = alloca ptr, align 8
  %112 = alloca ptr, align 8
  %113 = alloca %struct.Span, align 8
  %114 = alloca %"class.std::function", align 8
  %115 = alloca %class.anon.612, align 8
  %116 = alloca i64, align 8
  %117 = alloca %"class.HIR::TypeRef", align 8
  %118 = alloca %"class.HIR::TypeRef", align 8
  %119 = alloca %struct.Span, align 8
  %120 = alloca %"class.std::function", align 8
  %121 = alloca %class.anon.613, align 1
  %122 = alloca i64, align 8
  %123 = alloca %"class.HIR::ConstGeneric", align 8
  %124 = alloca %"class.HIR::ConstGeneric", align 8
  %125 = alloca %struct.Span, align 8
  %126 = alloca %"class.std::function", align 8
  %127 = alloca %class.anon.615, align 1
  %128 = alloca i64, align 8
  %129 = alloca %"class.HIR::TypeRef", align 8
  %130 = alloca i32, align 4
  store ptr %0, ptr %11, align 8, !tbaa !5
  store ptr %1, ptr %12, align 8, !tbaa !5
  store ptr %2, ptr %13, align 8, !tbaa !5
  store ptr %3, ptr %14, align 8, !tbaa !5
  store ptr %4, ptr %15, align 8, !tbaa !5
  store ptr %5, ptr %16, align 8, !tbaa !5
  store ptr %6, ptr %17, align 8, !tbaa !5
  store ptr %7, ptr %18, align 8, !tbaa !5
  store ptr %8, ptr %19, align 8, !tbaa !5
  %131 = load ptr, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr %20) #0
  %132 = call noundef zeroext i1 @_Z13debug_enabledv()
  %133 = zext i1 %132 to i64
  %134 = select i1 %132, ptr @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_, ptr null
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #0
  %135 = getelementptr inbounds %class.anon.607, ptr %22, i32 0, i32 0
  %136 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %136, ptr %135, align 8, !tbaa !5
  %137 = getelementptr inbounds %class.anon.607, ptr %22, i32 0, i32 1
  %138 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %138, ptr %137, align 8, !tbaa !5
  %139 = getelementptr inbounds %class.anon.607, ptr %22, i32 0, i32 2
  %140 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %140, ptr %139, align 8, !tbaa !5
  %141 = getelementptr inbounds %class.anon.607, ptr %22, i32 0, i32 3
  %142 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %142, ptr %141, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(32) %22)
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  %143 = getelementptr inbounds %class.anon.608, ptr %24, i32 0, i32 0
  %144 = load ptr, ptr %19, align 8, !tbaa !5
  store ptr %144, ptr %143, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %20, ptr noundef %134, ptr noundef %21, ptr noundef %23)
          to label %145 unwind label %226

145:                                              ; preds = %9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %27) #0
  %146 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %146)
          to label %147 unwind label %230

147:                                              ; preds = %145
  %148 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsC2ES0_SH_(ptr noundef nonnull align 8 dereferenceable(24) %27, ptr noundef %28, ptr noundef nonnull align 8 dereferenceable(24) %148)
          to label %149 unwind label %234

149:                                              ; preds = %147
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #0
  %150 = load ptr, ptr %19, align 8, !tbaa !5
  %151 = getelementptr inbounds %"struct.HIR::PathParams", ptr %150, i32 0, i32 0
  %152 = load ptr, ptr %16, align 8, !tbaa !5
  %153 = getelementptr inbounds %"class.HIR::GenericParams", ptr %152, i32 0, i32 1
  %154 = call noundef i64 @_ZNKSt6vectorIN3HIR11LifetimeDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %153) #0
  invoke void @_ZN10ThinVectorIN3HIR11LifetimeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %151, i64 noundef %154)
          to label %155 unwind label %238

155:                                              ; preds = %149
  %156 = load ptr, ptr %19, align 8, !tbaa !5
  %157 = getelementptr inbounds %"struct.HIR::PathParams", ptr %156, i32 0, i32 1
  %158 = load ptr, ptr %16, align 8, !tbaa !5
  %159 = getelementptr inbounds %"class.HIR::GenericParams", ptr %158, i32 0, i32 0
  %160 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %159) #0
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %157, i64 noundef %160)
          to label %161 unwind label %238

161:                                              ; preds = %155
  %162 = load ptr, ptr %19, align 8, !tbaa !5
  %163 = getelementptr inbounds %"struct.HIR::PathParams", ptr %162, i32 0, i32 2
  %164 = load ptr, ptr %16, align 8, !tbaa !5
  %165 = getelementptr inbounds %"class.HIR::GenericParams", ptr %164, i32 0, i32 2
  %166 = call noundef i64 @_ZNKSt6vectorIN3HIR13ValueParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %165) #0
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %163, i64 noundef %166)
          to label %167 unwind label %238

167:                                              ; preds = %161
  call void @llvm.lifetime.start.p0(i64 4, ptr %29) #0
  store i32 0, ptr %29, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #0
  %168 = load ptr, ptr %18, align 8, !tbaa !5
  %169 = load ptr, ptr %12, align 8, !tbaa !5
  %170 = load ptr, ptr %15, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %31) #0
  %171 = getelementptr inbounds %class.TraitResolution, ptr %131, i32 0, i32 2
  %172 = load ptr, ptr %171, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %31, ptr noundef nonnull align 8 dereferenceable(49) %172)
          to label %173 unwind label %242

173:                                              ; preds = %167
  %174 = invoke noundef i32 @_ZNK3HIR7TypeRef24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(8) %168, ptr noundef nonnull align 8 dereferenceable(8) %169, ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %175 unwind label %242

175:                                              ; preds = %173
  store i32 %174, ptr %30, align 4, !tbaa !9
  %176 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %30)
          to label %177 unwind label %242

177:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #0
  %178 = load ptr, ptr %14, align 8, !tbaa !5
  %179 = icmp ne ptr %178, null
  br i1 %179, label %180, label %262

180:                                              ; preds = %177
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #0
  %181 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %181, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %33) #0
  %182 = load ptr, ptr %17, align 8, !tbaa !5
  %183 = load ptr, ptr %12, align 8, !tbaa !5
  %184 = load ptr, ptr %32, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %34) #0
  %185 = getelementptr inbounds %class.TraitResolution, ptr %131, i32 0, i32 2
  %186 = load ptr, ptr %185, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %34, ptr noundef nonnull align 8 dereferenceable(49) %186)
          to label %187 unwind label %246

187:                                              ; preds = %180
  %188 = invoke noundef i32 @_ZNK3HIR10PathParams24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(24) %182, ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull align 8 dereferenceable(24) %184, ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %189 unwind label %246

189:                                              ; preds = %187
  store i32 %188, ptr %33, align 4, !tbaa !9
  %190 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %29, ptr noundef nonnull align 4 dereferenceable(4) %33)
          to label %191 unwind label %246

191:                                              ; preds = %189
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #0
  %192 = load i32, ptr %29, align 4, !tbaa !9
  %193 = icmp eq i32 %192, 2
  br i1 %193, label %194, label %257

194:                                              ; preds = %191
  br label %195

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

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

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

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 @.str.134)
          to label %203 unwind label %250

203:                                              ; preds = %201
  %204 = load ptr, ptr %17, align 8, !tbaa !5
  %205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %202, ptr noundef nonnull align 8 dereferenceable(24) %204)
          to label %206 unwind label %250

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

208:                                              ; preds = %206
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %207, ptr noundef nonnull align 8 dereferenceable(8) %209)
          to label %211 unwind label %250

211:                                              ; preds = %208
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef @.str.135)
          to label %213 unwind label %250

213:                                              ; preds = %211
  %214 = load ptr, ptr %32, align 8, !tbaa !5
  %215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %212, ptr noundef nonnull align 8 dereferenceable(24) %214)
          to label %216 unwind label %250

216:                                              ; preds = %213
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %215, ptr noundef @.str.36)
          to label %218 unwind label %250

218:                                              ; preds = %216
  %219 = load ptr, ptr %15, align 8, !tbaa !5
  %220 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %217, ptr noundef nonnull align 8 dereferenceable(8) %219)
          to label %221 unwind label %250

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

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

225:                                              ; preds = %223
  br label %254

226:                                              ; preds = %9
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %25, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #0
  br label %1861

230:                                              ; preds = %145
  %231 = landingpad { ptr, i32 }
          cleanup
  %232 = extractvalue { ptr, i32 } %231, 0
  store ptr %232, ptr %25, align 8
  %233 = extractvalue { ptr, i32 } %231, 1
  store i32 %233, ptr %26, align 4
  br label %1860

234:                                              ; preds = %147
  %235 = landingpad { ptr, i32 }
          cleanup
  %236 = extractvalue { ptr, i32 } %235, 0
  store ptr %236, ptr %25, align 8
  %237 = extractvalue { ptr, i32 } %235, 1
  store i32 %237, ptr %26, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #0
  br label %1860

238:                                              ; preds = %161, %155, %149
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %25, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %26, align 4
  br label %1859

242:                                              ; preds = %175, %173, %167
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %25, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #0
  br label %1858

246:                                              ; preds = %189, %187, %180
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %25, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %34) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %33) #0
  br label %261

250:                                              ; preds = %223, %221, %218, %216, %213, %211, %208, %206, %203, %201, %198, %195
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %25, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %26, align 4
  br label %261

254:                                              ; preds = %225, %197
  br label %255

255:                                              ; preds = %254
  br label %256

256:                                              ; preds = %255
  store i32 2, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %258

257:                                              ; preds = %191
  store i32 0, ptr %35, align 4
  br label %258

258:                                              ; preds = %257, %256
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  %259 = load i32, ptr %35, align 4
  switch i32 %259, label %1856 [
    i32 0, label %260
  ]

260:                                              ; preds = %258
  br label %295

261:                                              ; preds = %250, %246
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #0
  br label %1858

262:                                              ; preds = %177
  %263 = load i32, ptr %29, align 4, !tbaa !9
  %264 = icmp eq i32 %263, 2
  br i1 %264, label %265, label %294

265:                                              ; preds = %262
  br label %266

266:                                              ; preds = %265
  %267 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %268 unwind label %287

268:                                              ; preds = %266
  br i1 %267, label %269, label %291

269:                                              ; preds = %268
  %270 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %270, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %272 unwind label %287

272:                                              ; preds = %269
  %273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %271, ptr noundef @.str.136)
          to label %274 unwind label %287

274:                                              ; preds = %272
  %275 = load ptr, ptr %18, align 8, !tbaa !5
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %273, ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %277 unwind label %287

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

279:                                              ; preds = %277
  %280 = load ptr, ptr %15, align 8, !tbaa !5
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull align 8 dereferenceable(8) %280)
          to label %282 unwind label %287

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

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

286:                                              ; preds = %284
  br label %291

287:                                              ; preds = %309, %307, %304, %302, %299, %296, %284, %282, %279, %277, %274, %272, %269, %266
  %288 = landingpad { ptr, i32 }
          cleanup
  %289 = extractvalue { ptr, i32 } %288, 0
  store ptr %289, ptr %25, align 8
  %290 = extractvalue { ptr, i32 } %288, 1
  store i32 %290, ptr %26, align 4
  br label %1858

291:                                              ; preds = %286, %268
  br label %292

292:                                              ; preds = %291
  br label %293

293:                                              ; preds = %292
  store i32 2, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %1856

294:                                              ; preds = %262
  br label %295

295:                                              ; preds = %294, %260
  br label %296

296:                                              ; preds = %295
  %297 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %298 unwind label %287

298:                                              ; preds = %296
  br i1 %297, label %299, label %312

299:                                              ; preds = %298
  %300 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %300, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %302 unwind label %287

302:                                              ; preds = %299
  %303 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %301, ptr noundef @.str.137)
          to label %304 unwind label %287

304:                                              ; preds = %302
  %305 = load ptr, ptr %19, align 8, !tbaa !5
  %306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %303, ptr noundef nonnull align 8 dereferenceable(24) %305)
          to label %307 unwind label %287

307:                                              ; preds = %304
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %306, ptr noundef @_ZSt3decRSt8ios_base)
          to label %309 unwind label %287

309:                                              ; preds = %307
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %308, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %311 unwind label %287

311:                                              ; preds = %309
  br label %312

312:                                              ; preds = %311, %298
  br label %313

313:                                              ; preds = %312
  br label %314

314:                                              ; preds = %313
  call void @llvm.lifetime.start.p0(i64 24, ptr %36) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %315 unwind label %330

315:                                              ; preds = %314
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  invoke void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %316 unwind label %334

316:                                              ; preds = %315
  call void @llvm.lifetime.start.p0(i64 1, ptr %38) #0
  store i8 0, ptr %38, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %317 = load ptr, ptr %19, align 8, !tbaa !5
  %318 = getelementptr inbounds %"struct.HIR::PathParams", ptr %317, i32 0, i32 1
  store ptr %318, ptr %39, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #0
  %319 = load ptr, ptr %39, align 8, !tbaa !5
  %320 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %319)
          to label %321 unwind label %338

321:                                              ; preds = %316
  store ptr %320, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %322 = load ptr, ptr %39, align 8, !tbaa !5
  %323 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %322)
          to label %324 unwind label %342

324:                                              ; preds = %321
  store ptr %323, ptr %41, align 8, !tbaa !5
  br label %325

325:                                              ; preds = %363, %324
  %326 = load ptr, ptr %40, align 8, !tbaa !5
  %327 = load ptr, ptr %41, align 8, !tbaa !5
  %328 = icmp ne ptr %326, %327
  br i1 %328, label %346, label %329

329:                                              ; preds = %325
  store i32 8, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  br label %368

330:                                              ; preds = %314
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %25, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %26, align 4
  br label %1855

334:                                              ; preds = %315
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %25, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %26, align 4
  br label %1854

338:                                              ; preds = %316
  %339 = landingpad { ptr, i32 }
          cleanup
  %340 = extractvalue { ptr, i32 } %339, 0
  store ptr %340, ptr %25, align 8
  %341 = extractvalue { ptr, i32 } %339, 1
  store i32 %341, ptr %26, align 4
  br label %367

342:                                              ; preds = %321
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %25, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %26, align 4
  br label %366

346:                                              ; preds = %325
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #0
  %347 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %347, ptr %42, align 8, !tbaa !5
  %348 = load ptr, ptr %42, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %349 unwind label %353

349:                                              ; preds = %346
  %350 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %348, ptr noundef nonnull align 8 dereferenceable(8) %43)
          to label %351 unwind label %357

351:                                              ; preds = %349
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  br i1 %350, label %352, label %362

352:                                              ; preds = %351
  store i8 1, ptr %38, align 1, !tbaa !37
  br label %362

353:                                              ; preds = %346
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %25, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %26, align 4
  br label %361

357:                                              ; preds = %349
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %25, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #0
  br label %361

361:                                              ; preds = %357, %353
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  br label %366

362:                                              ; preds = %352, %351
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #0
  br label %363

363:                                              ; preds = %362
  %364 = load ptr, ptr %40, align 8, !tbaa !5
  %365 = getelementptr inbounds %"class.HIR::TypeRef", ptr %364, i32 1
  store ptr %365, ptr %40, align 8, !tbaa !5
  br label %325

366:                                              ; preds = %361, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  br label %367

367:                                              ; preds = %366, %338
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  br label %1853

368:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #0
  %369 = load ptr, ptr %19, align 8, !tbaa !5
  %370 = getelementptr inbounds %"struct.HIR::PathParams", ptr %369, i32 0, i32 2
  store ptr %370, ptr %44, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #0
  %371 = load ptr, ptr %44, align 8, !tbaa !5
  %372 = invoke noundef ptr @_ZN10ThinVectorIN3HIR12ConstGenericEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %371)
          to label %373 unwind label %382

373:                                              ; preds = %368
  store ptr %372, ptr %45, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #0
  %374 = load ptr, ptr %44, align 8, !tbaa !5
  %375 = invoke noundef ptr @_ZN10ThinVectorIN3HIR12ConstGenericEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %374)
          to label %376 unwind label %386

376:                                              ; preds = %373
  store ptr %375, ptr %46, align 8, !tbaa !5
  br label %377

377:                                              ; preds = %407, %376
  %378 = load ptr, ptr %45, align 8, !tbaa !5
  %379 = load ptr, ptr %46, align 8, !tbaa !5
  %380 = icmp ne ptr %378, %379
  br i1 %380, label %390, label %381

381:                                              ; preds = %377
  store i32 10, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %412

382:                                              ; preds = %368
  %383 = landingpad { ptr, i32 }
          cleanup
  %384 = extractvalue { ptr, i32 } %383, 0
  store ptr %384, ptr %25, align 8
  %385 = extractvalue { ptr, i32 } %383, 1
  store i32 %385, ptr %26, align 4
  br label %411

386:                                              ; preds = %373
  %387 = landingpad { ptr, i32 }
          cleanup
  %388 = extractvalue { ptr, i32 } %387, 0
  store ptr %388, ptr %25, align 8
  %389 = extractvalue { ptr, i32 } %387, 1
  store i32 %389, ptr %26, align 4
  br label %410

390:                                              ; preds = %377
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #0
  %391 = load ptr, ptr %45, align 8, !tbaa !5
  store ptr %391, ptr %47, align 8, !tbaa !5
  %392 = load ptr, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %48) #0
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %393 unwind label %397

393:                                              ; preds = %390
  %394 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %392, ptr noundef nonnull align 8 dereferenceable(24) %48)
          to label %395 unwind label %401

395:                                              ; preds = %393
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #0
  br i1 %394, label %396, label %406

396:                                              ; preds = %395
  store i8 1, ptr %38, align 1, !tbaa !37
  br label %406

397:                                              ; preds = %390
  %398 = landingpad { ptr, i32 }
          cleanup
  %399 = extractvalue { ptr, i32 } %398, 0
  store ptr %399, ptr %25, align 8
  %400 = extractvalue { ptr, i32 } %398, 1
  store i32 %400, ptr %26, align 4
  br label %405

401:                                              ; preds = %393
  %402 = landingpad { ptr, i32 }
          cleanup
  %403 = extractvalue { ptr, i32 } %402, 0
  store ptr %403, ptr %25, align 8
  %404 = extractvalue { ptr, i32 } %402, 1
  store i32 %404, ptr %26, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %48) #0
  br label %405

405:                                              ; preds = %401, %397
  call void @llvm.lifetime.end.p0(i64 24, ptr %48) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  br label %410

406:                                              ; preds = %396, %395
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #0
  br label %407

407:                                              ; preds = %406
  %408 = load ptr, ptr %45, align 8, !tbaa !5
  %409 = getelementptr inbounds %"class.HIR::ConstGeneric", ptr %408, i32 1
  store ptr %409, ptr %45, align 8, !tbaa !5
  br label %377

410:                                              ; preds = %405, %386
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #0
  br label %411

411:                                              ; preds = %410, %382
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #0
  br label %1853

412:                                              ; preds = %381
  %413 = load i8, ptr %38, align 1, !tbaa !37, !range !39, !noundef !40
  %414 = trunc i8 %413 to i1
  br i1 %414, label %415, label %696

415:                                              ; preds = %412
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #0
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #0
  call void @llvm.lifetime.start.p0(i64 376, ptr %51) #0
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %51)
          to label %416 unwind label %441

416:                                              ; preds = %415
  %417 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA4_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %51, ptr noundef nonnull align 1 dereferenceable(4) @.str.138)
          to label %418 unwind label %445

418:                                              ; preds = %416
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  %419 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %419, ptr %52, align 8, !tbaa !5
  %420 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKN3HIR13GenericParamsEEOT_SB_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %417, ptr noundef nonnull align 8 dereferenceable(8) %52)
          to label %421 unwind label %449

421:                                              ; preds = %418
  %422 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA2_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %420, ptr noundef nonnull align 1 dereferenceable(2) @.str.139)
          to label %423 unwind label %449

423:                                              ; preds = %421
  %424 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEmEOT_S7_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %422, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter)
          to label %425 unwind label %449

425:                                              ; preds = %423
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %50, ptr noundef nonnull align 8 dereferenceable(112) %424)
          to label %426 unwind label %449

426:                                              ; preds = %425
  invoke void @_ZN8RcStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %427 unwind label %453

427:                                              ; preds = %426
  %428 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %37, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %429 unwind label %457

429:                                              ; preds = %427
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #0
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %51) #0
  call void @llvm.lifetime.end.p0(i64 376, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  %430 = load i64, ptr @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter, align 8, !tbaa !41
  %431 = add i64 %430, 1
  store i64 %431, ptr @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter, align 8, !tbaa !41
  call void @llvm.lifetime.start.p0(i64 4, ptr %53) #0
  store i32 0, ptr %53, align 4, !tbaa !35
  br label %432

432:                                              ; preds = %555, %429
  %433 = load i32, ptr %53, align 4, !tbaa !35
  %434 = zext i32 %433 to i64
  %435 = load ptr, ptr %19, align 8, !tbaa !5
  %436 = getelementptr inbounds %"struct.HIR::PathParams", ptr %435, i32 0, i32 1
  %437 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %436)
          to label %438 unwind label %465

438:                                              ; preds = %432
  %439 = icmp ult i64 %434, %437
  br i1 %439, label %469, label %440

440:                                              ; preds = %438
  store i32 12, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #0
  br label %559

441:                                              ; preds = %415
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %25, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %26, align 4
  br label %464

445:                                              ; preds = %416
  %446 = landingpad { ptr, i32 }
          cleanup
  %447 = extractvalue { ptr, i32 } %446, 0
  store ptr %447, ptr %25, align 8
  %448 = extractvalue { ptr, i32 } %446, 1
  store i32 %448, ptr %26, align 4
  br label %463

449:                                              ; preds = %425, %423, %421, %418
  %450 = landingpad { ptr, i32 }
          cleanup
  %451 = extractvalue { ptr, i32 } %450, 0
  store ptr %451, ptr %25, align 8
  %452 = extractvalue { ptr, i32 } %450, 1
  store i32 %452, ptr %26, align 4
  br label %462

453:                                              ; preds = %426
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %25, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %26, align 4
  br label %461

457:                                              ; preds = %427
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %25, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %26, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #0
  br label %461

461:                                              ; preds = %457, %453
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #0
  br label %462

462:                                              ; preds = %461, %449
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %463

463:                                              ; preds = %462, %445
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %51) #0
  br label %464

464:                                              ; preds = %463, %441
  call void @llvm.lifetime.end.p0(i64 376, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #0
  br label %1853

465:                                              ; preds = %534, %532, %530, %525, %523, %520, %518, %515, %512, %489, %484, %479, %469, %432
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %25, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %26, align 4
  br label %558

469:                                              ; preds = %438
  %470 = load ptr, ptr %19, align 8, !tbaa !5
  %471 = getelementptr inbounds %"struct.HIR::PathParams", ptr %470, i32 0, i32 1
  %472 = load i32, ptr %53, align 4, !tbaa !35
  %473 = zext i32 %472 to i64
  %474 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %471, i64 noundef %473)
          to label %475 unwind label %465

475:                                              ; preds = %469
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %476 unwind label %491

476:                                              ; preds = %475
  %477 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %474, ptr noundef nonnull align 8 dereferenceable(8) %54)
          to label %478 unwind label %495

478:                                              ; preds = %476
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br i1 %477, label %479, label %554

479:                                              ; preds = %478
  %480 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 1
  %481 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %480)
          to label %482 unwind label %465

482:                                              ; preds = %479
  %483 = icmp eq i64 %481, 0
  br i1 %483, label %484, label %500

484:                                              ; preds = %482
  %485 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 1
  %486 = load ptr, ptr %19, align 8, !tbaa !5
  %487 = getelementptr inbounds %"struct.HIR::PathParams", ptr %486, i32 0, i32 1
  %488 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %487)
          to label %489 unwind label %465

489:                                              ; preds = %484
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %485, i64 noundef %488)
          to label %490 unwind label %465

490:                                              ; preds = %489
  br label %500

491:                                              ; preds = %475
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %25, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %26, align 4
  br label %499

495:                                              ; preds = %476
  %496 = landingpad { ptr, i32 }
          cleanup
  %497 = extractvalue { ptr, i32 } %496, 0
  store ptr %497, ptr %25, align 8
  %498 = extractvalue { ptr, i32 } %496, 1
  store i32 %498, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  br label %499

499:                                              ; preds = %495, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #0
  br label %558

500:                                              ; preds = %490, %482
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %56, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %501 unwind label %537

501:                                              ; preds = %500
  %502 = load i32, ptr %53, align 4, !tbaa !35
  %503 = add i32 512, %502
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef %56, i32 noundef %503)
          to label %504 unwind label %541

504:                                              ; preds = %501
  %505 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 1
  %506 = load i32, ptr %53, align 4, !tbaa !35
  %507 = zext i32 %506 to i64
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %505, i64 noundef %507)
          to label %509 unwind label %545

509:                                              ; preds = %504
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %511 unwind label %545

511:                                              ; preds = %509
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %512

512:                                              ; preds = %511
  %513 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %514 unwind label %465

514:                                              ; preds = %512
  br i1 %513, label %515, label %551

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

518:                                              ; preds = %515
  %519 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %517, ptr noundef @.str.140)
          to label %520 unwind label %465

520:                                              ; preds = %518
  %521 = load i32, ptr %53, align 4, !tbaa !35
  %522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %519, i32 noundef %521)
          to label %523 unwind label %465

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

525:                                              ; preds = %523
  %526 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 1
  %527 = load i32, ptr %53, align 4, !tbaa !35
  %528 = zext i32 %527 to i64
  %529 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %526, i64 noundef %528)
          to label %530 unwind label %465

530:                                              ; preds = %525
  %531 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull align 8 dereferenceable(8) %529)
          to label %532 unwind label %465

532:                                              ; preds = %530
  %533 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %531, ptr noundef @_ZSt3decRSt8ios_base)
          to label %534 unwind label %465

534:                                              ; preds = %532
  %535 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %533, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %536 unwind label %465

536:                                              ; preds = %534
  br label %551

537:                                              ; preds = %500
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %25, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %26, align 4
  br label %550

541:                                              ; preds = %501
  %542 = landingpad { ptr, i32 }
          cleanup
  %543 = extractvalue { ptr, i32 } %542, 0
  store ptr %543, ptr %25, align 8
  %544 = extractvalue { ptr, i32 } %542, 1
  store i32 %544, ptr %26, align 4
  br label %549

545:                                              ; preds = %509, %504
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %25, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #0
  br label %549

549:                                              ; preds = %545, %541
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  br label %550

550:                                              ; preds = %549, %537
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #0
  br label %558

551:                                              ; preds = %536, %514
  br label %552

552:                                              ; preds = %551
  br label %553

553:                                              ; preds = %552
  br label %554

554:                                              ; preds = %553, %478
  br label %555

555:                                              ; preds = %554
  %556 = load i32, ptr %53, align 4, !tbaa !35
  %557 = add i32 %556, 1
  store i32 %557, ptr %53, align 4, !tbaa !35
  br label %432, !llvm.loop !42

558:                                              ; preds = %550, %499, %465
  call void @llvm.lifetime.end.p0(i64 4, ptr %53) #0
  br label %1853

559:                                              ; preds = %440
  call void @llvm.lifetime.start.p0(i64 4, ptr %57) #0
  store i32 0, ptr %57, align 4, !tbaa !35
  br label %560

560:                                              ; preds = %665, %559
  %561 = load i32, ptr %57, align 4, !tbaa !35
  %562 = zext i32 %561 to i64
  %563 = load ptr, ptr %19, align 8, !tbaa !5
  %564 = getelementptr inbounds %"struct.HIR::PathParams", ptr %563, i32 0, i32 2
  %565 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %564)
          to label %566 unwind label %569

566:                                              ; preds = %560
  %567 = icmp ult i64 %562, %565
  br i1 %567, label %573, label %568

568:                                              ; preds = %566
  store i32 17, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #0
  br label %669

569:                                              ; preds = %639, %637, %635, %630, %628, %625, %623, %620, %617, %593, %588, %583, %573, %560
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %25, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %26, align 4
  br label %668

573:                                              ; preds = %566
  %574 = load ptr, ptr %19, align 8, !tbaa !5
  %575 = getelementptr inbounds %"struct.HIR::PathParams", ptr %574, i32 0, i32 2
  %576 = load i32, ptr %57, align 4, !tbaa !35
  %577 = zext i32 %576 to i64
  %578 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %575, i64 noundef %577)
          to label %579 unwind label %569

579:                                              ; preds = %573
  call void @llvm.lifetime.start.p0(i64 24, ptr %58) #0
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %580 unwind label %595

580:                                              ; preds = %579
  %581 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %578, ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %582 unwind label %599

582:                                              ; preds = %580
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #0
  br i1 %581, label %583, label %664

583:                                              ; preds = %582
  %584 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 2
  %585 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %584)
          to label %586 unwind label %569

586:                                              ; preds = %583
  %587 = icmp eq i64 %585, 0
  br i1 %587, label %588, label %604

588:                                              ; preds = %586
  %589 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 2
  %590 = load ptr, ptr %19, align 8, !tbaa !5
  %591 = getelementptr inbounds %"struct.HIR::PathParams", ptr %590, i32 0, i32 2
  %592 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %591)
          to label %593 unwind label %569

593:                                              ; preds = %588
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %589, i64 noundef %592)
          to label %594 unwind label %569

594:                                              ; preds = %593
  br label %604

595:                                              ; preds = %579
  %596 = landingpad { ptr, i32 }
          cleanup
  %597 = extractvalue { ptr, i32 } %596, 0
  store ptr %597, ptr %25, align 8
  %598 = extractvalue { ptr, i32 } %596, 1
  store i32 %598, ptr %26, align 4
  br label %603

599:                                              ; preds = %580
  %600 = landingpad { ptr, i32 }
          cleanup
  %601 = extractvalue { ptr, i32 } %600, 0
  store ptr %601, ptr %25, align 8
  %602 = extractvalue { ptr, i32 } %600, 1
  store i32 %602, ptr %26, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #0
  br label %603

603:                                              ; preds = %599, %595
  call void @llvm.lifetime.end.p0(i64 24, ptr %58) #0
  br label %668

604:                                              ; preds = %594, %586
  call void @llvm.lifetime.start.p0(i64 24, ptr %59) #0
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %61, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %605 unwind label %642

605:                                              ; preds = %604
  %606 = load i32, ptr %57, align 4, !tbaa !35
  %607 = add i32 512, %606
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %60, ptr noundef %61, i32 noundef %607)
          to label %608 unwind label %646

608:                                              ; preds = %605
  invoke void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24) %59, ptr noundef %60)
          to label %609 unwind label %650

609:                                              ; preds = %608
  %610 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 2
  %611 = load i32, ptr %57, align 4, !tbaa !35
  %612 = zext i32 %611 to i64
  %613 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %610, i64 noundef %612)
          to label %614 unwind label %654

614:                                              ; preds = %609
  %615 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %613, ptr noundef nonnull align 8 dereferenceable(24) %59)
          to label %616 unwind label %654

616:                                              ; preds = %614
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #0
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %60) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #0
  br label %617

617:                                              ; preds = %616
  %618 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %619 unwind label %569

619:                                              ; preds = %617
  br i1 %618, label %620, label %661

620:                                              ; preds = %619
  %621 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %621, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %623 unwind label %569

623:                                              ; preds = %620
  %624 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef @.str.141)
          to label %625 unwind label %569

625:                                              ; preds = %623
  %626 = load i32, ptr %57, align 4, !tbaa !35
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %624, i32 noundef %626)
          to label %628 unwind label %569

628:                                              ; preds = %625
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef @.str.1)
          to label %630 unwind label %569

630:                                              ; preds = %628
  %631 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 2
  %632 = load i32, ptr %57, align 4, !tbaa !35
  %633 = zext i32 %632 to i64
  %634 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %631, i64 noundef %633)
          to label %635 unwind label %569

635:                                              ; preds = %630
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_12ConstGenericE(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef nonnull align 8 dereferenceable(24) %634)
          to label %637 unwind label %569

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef @_ZSt3decRSt8ios_base)
          to label %639 unwind label %569

639:                                              ; preds = %637
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %641 unwind label %569

641:                                              ; preds = %639
  br label %661

642:                                              ; preds = %604
  %643 = landingpad { ptr, i32 }
          cleanup
  %644 = extractvalue { ptr, i32 } %643, 0
  store ptr %644, ptr %25, align 8
  %645 = extractvalue { ptr, i32 } %643, 1
  store i32 %645, ptr %26, align 4
  br label %660

646:                                              ; preds = %605
  %647 = landingpad { ptr, i32 }
          cleanup
  %648 = extractvalue { ptr, i32 } %647, 0
  store ptr %648, ptr %25, align 8
  %649 = extractvalue { ptr, i32 } %647, 1
  store i32 %649, ptr %26, align 4
  br label %659

650:                                              ; preds = %608
  %651 = landingpad { ptr, i32 }
          cleanup
  %652 = extractvalue { ptr, i32 } %651, 0
  store ptr %652, ptr %25, align 8
  %653 = extractvalue { ptr, i32 } %651, 1
  store i32 %653, ptr %26, align 4
  br label %658

654:                                              ; preds = %614, %609
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %25, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %26, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %59) #0
  br label %658

658:                                              ; preds = %654, %650
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %60) #0
  br label %659

659:                                              ; preds = %658, %646
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %61) #0
  br label %660

660:                                              ; preds = %659, %642
  call void @llvm.lifetime.end.p0(i64 24, ptr %59) #0
  br label %668

661:                                              ; preds = %641, %619
  br label %662

662:                                              ; preds = %661
  br label %663

663:                                              ; preds = %662
  br label %664

664:                                              ; preds = %663, %582
  br label %665

665:                                              ; preds = %664
  %666 = load i32, ptr %57, align 4, !tbaa !35
  %667 = add i32 %666, 1
  store i32 %667, ptr %57, align 4, !tbaa !35
  br label %560, !llvm.loop !44

668:                                              ; preds = %660, %603, %569
  call void @llvm.lifetime.end.p0(i64 4, ptr %57) #0
  br label %1853

669:                                              ; preds = %568
  br label %670

670:                                              ; preds = %669
  %671 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %672 unwind label %689

672:                                              ; preds = %670
  br i1 %671, label %673, label %693

673:                                              ; preds = %672
  %674 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %674, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %676 unwind label %689

676:                                              ; preds = %673
  %677 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef @.str.142)
          to label %678 unwind label %689

678:                                              ; preds = %676
  %679 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %677, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %680 unwind label %689

680:                                              ; preds = %678
  %681 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %679, ptr noundef @.str.143)
          to label %682 unwind label %689

682:                                              ; preds = %680
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %681, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %684 unwind label %689

684:                                              ; preds = %682
  %685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef @_ZSt3decRSt8ios_base)
          to label %686 unwind label %689

686:                                              ; preds = %684
  %687 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %685, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %688 unwind label %689

688:                                              ; preds = %686
  br label %693

689:                                              ; preds = %707, %705, %703, %700, %697, %686, %684, %682, %680, %678, %676, %673, %670
  %690 = landingpad { ptr, i32 }
          cleanup
  %691 = extractvalue { ptr, i32 } %690, 0
  store ptr %691, ptr %25, align 8
  %692 = extractvalue { ptr, i32 } %690, 1
  store i32 %692, ptr %26, align 4
  br label %1853

693:                                              ; preds = %688, %672
  br label %694

694:                                              ; preds = %693
  br label %695

695:                                              ; preds = %694
  br label %713

696:                                              ; preds = %412
  br label %697

697:                                              ; preds = %696
  %698 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %699 unwind label %689

699:                                              ; preds = %697
  br i1 %698, label %700, label %710

700:                                              ; preds = %699
  %701 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %702 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %701, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %703 unwind label %689

703:                                              ; preds = %700
  %704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %702, ptr noundef @.str.144)
          to label %705 unwind label %689

705:                                              ; preds = %703
  %706 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %704, ptr noundef @_ZSt3decRSt8ios_base)
          to label %707 unwind label %689

707:                                              ; preds = %705
  %708 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %706, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %709 unwind label %689

709:                                              ; preds = %707
  br label %710

710:                                              ; preds = %709, %699
  br label %711

711:                                              ; preds = %710
  br label %712

712:                                              ; preds = %711
  br label %713

713:                                              ; preds = %712, %695
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #0
  %714 = getelementptr inbounds %class.TraitResolution, ptr %131, i32 0, i32 2
  %715 = load ptr, ptr %714, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %62, ptr noundef nonnull align 8 dereferenceable(49) %715)
          to label %716 unwind label %740

716:                                              ; preds = %713
  call void @llvm.lifetime.start.p0(i64 136, ptr %63) #0
  %717 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %717)
          to label %718 unwind label %744

718:                                              ; preds = %716
  %719 = load ptr, ptr %19, align 8, !tbaa !5
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %37)
          to label %720 unwind label %748

720:                                              ; preds = %718
  invoke void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherC2ES0_SG_8RcStringSH_(ptr noundef nonnull align 8 dereferenceable(136) %63, ptr noundef %64, ptr noundef nonnull align 8 dereferenceable(24) %719, ptr noundef %65, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %721 unwind label %752

721:                                              ; preds = %720
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #0
  call void @llvm.lifetime.start.p0(i64 4, ptr %66) #0
  store i32 0, ptr %66, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 24, ptr %67) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %67)
          to label %722 unwind label %757

722:                                              ; preds = %721
  br label %723

723:                                              ; preds = %1576, %722
  br label %724

724:                                              ; preds = %723
  %725 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %726 unwind label %761

726:                                              ; preds = %724
  br i1 %725, label %727, label %765

727:                                              ; preds = %726
  %728 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %729 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %728, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %730 unwind label %761

730:                                              ; preds = %727
  %731 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %729, ptr noundef @.str.145)
          to label %732 unwind label %761

732:                                              ; preds = %730
  %733 = load i32, ptr %66, align 4, !tbaa !35
  %734 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %731, i32 noundef %733)
          to label %735 unwind label %761

735:                                              ; preds = %732
  %736 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %734, ptr noundef @_ZSt3decRSt8ios_base)
          to label %737 unwind label %761

737:                                              ; preds = %735
  %738 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %736, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %739 unwind label %761

739:                                              ; preds = %737
  br label %765

740:                                              ; preds = %713
  %741 = landingpad { ptr, i32 }
          cleanup
  %742 = extractvalue { ptr, i32 } %741, 0
  store ptr %742, ptr %25, align 8
  %743 = extractvalue { ptr, i32 } %741, 1
  store i32 %743, ptr %26, align 4
  br label %1852

744:                                              ; preds = %716
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %25, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %26, align 4
  br label %1851

748:                                              ; preds = %718
  %749 = landingpad { ptr, i32 }
          cleanup
  %750 = extractvalue { ptr, i32 } %749, 0
  store ptr %750, ptr %25, align 8
  %751 = extractvalue { ptr, i32 } %749, 1
  store i32 %751, ptr %26, align 4
  br label %756

752:                                              ; preds = %720
  %753 = landingpad { ptr, i32 }
          cleanup
  %754 = extractvalue { ptr, i32 } %753, 0
  store ptr %754, ptr %25, align 8
  %755 = extractvalue { ptr, i32 } %753, 1
  store i32 %755, ptr %26, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #0
  br label %756

756:                                              ; preds = %752, %748
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #0
  br label %1851

757:                                              ; preds = %721
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %25, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %26, align 4
  br label %1850

761:                                              ; preds = %1574, %776, %737, %735, %732, %730, %727, %724
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %25, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %26, align 4
  br label %1849

765:                                              ; preds = %739, %726
  br label %766

766:                                              ; preds = %765
  br label %767

767:                                              ; preds = %766
  br label %768

768:                                              ; preds = %767
  %769 = load i32, ptr %66, align 4, !tbaa !35
  %770 = icmp slt i32 %769, 4
  br i1 %770, label %790, label %771

771:                                              ; preds = %768
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  %772 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef nonnull align 8 dereferenceable(8) %772)
          to label %773 unwind label %777

773:                                              ; preds = %771
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 1 dereferenceable(1) %70) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef %69)
          to label %774 unwind label %781

774:                                              ; preds = %773
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  %775 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %775, ptr noundef @.str.8)
          to label %776 unwind label %786

776:                                              ; preds = %774
  invoke void @__cxa_throw(ptr %775, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1867 unwind label %761

777:                                              ; preds = %771
  %778 = landingpad { ptr, i32 }
          cleanup
  %779 = extractvalue { ptr, i32 } %778, 0
  store ptr %779, ptr %25, align 8
  %780 = extractvalue { ptr, i32 } %778, 1
  store i32 %780, ptr %26, align 4
  br label %785

781:                                              ; preds = %773
  %782 = landingpad { ptr, i32 }
          cleanup
  %783 = extractvalue { ptr, i32 } %782, 0
  store ptr %783, ptr %25, align 8
  %784 = extractvalue { ptr, i32 } %782, 1
  store i32 %784, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  br label %785

785:                                              ; preds = %781, %777
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %1849

786:                                              ; preds = %774
  %787 = landingpad { ptr, i32 }
          cleanup
  %788 = extractvalue { ptr, i32 } %787, 0
  store ptr %788, ptr %25, align 8
  %789 = extractvalue { ptr, i32 } %787, 1
  store i32 %789, ptr %26, align 4
  call void @__cxa_free_exception(ptr %775) #0
  br label %1849

790:                                              ; preds = %768
  br label %791

791:                                              ; preds = %790
  br label %792

792:                                              ; preds = %791
  %793 = load i32, ptr %66, align 4, !tbaa !35
  %794 = add nsw i32 %793, 1
  store i32 %794, ptr %66, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 24, ptr %71) #0
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %71, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %795 unwind label %809

795:                                              ; preds = %792
  %796 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %67, ptr noundef nonnull align 8 dereferenceable(24) %71)
          to label %797 unwind label %813

797:                                              ; preds = %795
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #0
  %798 = load ptr, ptr %16, align 8, !tbaa !5
  %799 = getelementptr inbounds %"class.HIR::GenericParams", ptr %798, i32 0, i32 3
  store ptr %799, ptr %72, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %73) #0
  %800 = load ptr, ptr %72, align 8, !tbaa !5
  %801 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %800) #0
  %802 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %73, i32 0, i32 0
  store ptr %801, ptr %802, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #0
  %803 = load ptr, ptr %72, align 8, !tbaa !5
  %804 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %803) #0
  %805 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.443", ptr %74, i32 0, i32 0
  store ptr %804, ptr %805, align 8
  br label %806

806:                                              ; preds = %1569, %797
  %807 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %73, ptr noundef nonnull align 8 dereferenceable(8) %74) #0
  br i1 %807, label %818, label %808

808:                                              ; preds = %806
  store i32 32, ptr %35, align 4
  br label %1571

809:                                              ; preds = %792
  %810 = landingpad { ptr, i32 }
          cleanup
  %811 = extractvalue { ptr, i32 } %810, 0
  store ptr %811, ptr %25, align 8
  %812 = extractvalue { ptr, i32 } %810, 1
  store i32 %812, ptr %26, align 4
  br label %817

813:                                              ; preds = %795
  %814 = landingpad { ptr, i32 }
          cleanup
  %815 = extractvalue { ptr, i32 } %814, 0
  store ptr %815, ptr %25, align 8
  %816 = extractvalue { ptr, i32 } %814, 1
  store i32 %816, ptr %26, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %71) #0
  br label %817

817:                                              ; preds = %813, %809
  call void @llvm.lifetime.end.p0(i64 24, ptr %71) #0
  br label %1849

818:                                              ; preds = %806
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #0
  %819 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #0
  store ptr %819, ptr %75, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %76) #0
  store i8 1, ptr %76, align 1, !tbaa !37
  br label %820

820:                                              ; preds = %1562, %818
  %821 = load i8, ptr %76, align 1, !tbaa !37, !range !39, !noundef !40
  %822 = trunc i8 %821 to i1
  br i1 %822, label %824, label %823

823:                                              ; preds = %820
  store i32 34, ptr %35, align 4
  br label %1563

824:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #0
  %825 = load ptr, ptr %75, align 8, !tbaa !5
  store ptr %825, ptr %77, align 8, !tbaa !5
  br label %826

826:                                              ; preds = %1557, %824
  %827 = load i8, ptr %76, align 1, !tbaa !37, !range !39, !noundef !40
  %828 = trunc i8 %827 to i1
  br i1 %828, label %830, label %829

829:                                              ; preds = %826
  store i32 37, ptr %35, align 4
  br label %1558

830:                                              ; preds = %826
  %831 = load ptr, ptr %77, align 8, !tbaa !5
  %832 = invoke noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %831)
          to label %833 unwind label %834

833:                                              ; preds = %830
  switch i32 %832, label %1556 [
    i32 0, label %838
    i32 1, label %839
    i32 2, label %862
    i32 3, label %885
    i32 4, label %1503
  ]

834:                                              ; preds = %830
  %835 = landingpad { ptr, i32 }
          cleanup
  %836 = extractvalue { ptr, i32 } %835, 0
  store ptr %836, ptr %25, align 8
  %837 = extractvalue { ptr, i32 } %835, 1
  store i32 %837, ptr %26, align 4
  br label %1560

838:                                              ; preds = %833
  call void @__assert_fail(ptr noundef @.str.13, ptr noundef @.str.7, i32 noundef 3629, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_) #10
  unreachable

839:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 1, ptr %78) #0
  store i8 1, ptr %78, align 1, !tbaa !37
  br label %840

840:                                              ; preds = %860, %839
  %841 = load i8, ptr %78, align 1, !tbaa !37, !range !39, !noundef !40
  %842 = trunc i8 %841 to i1
  br i1 %842, label %844, label %843

843:                                              ; preds = %840
  store i32 41, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #0
  br label %861

844:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #0
  %845 = load ptr, ptr %77, align 8, !tbaa !5
  %846 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR12GenericBound11as_LifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %845)
          to label %847 unwind label %853

847:                                              ; preds = %844
  store ptr %846, ptr %79, align 8, !tbaa !5
  br label %848

848:                                              ; preds = %858, %847
  %849 = load ptr, ptr %79, align 8, !tbaa !5
  %850 = load i8, ptr %78, align 1, !tbaa !37, !range !39, !noundef !40
  %851 = trunc i8 %850 to i1
  br i1 %851, label %857, label %852

852:                                              ; preds = %848
  store i32 44, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  br label %859

853:                                              ; preds = %844
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %25, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %78) #0
  br label %1560

857:                                              ; preds = %848
  br label %858

858:                                              ; preds = %857
  store i8 0, ptr %78, align 1, !tbaa !37
  br label %848, !llvm.loop !45

859:                                              ; preds = %852
  br label %860

860:                                              ; preds = %859
  store i8 0, ptr %78, align 1, !tbaa !37
  br label %840, !llvm.loop !46

861:                                              ; preds = %843
  br label %1556

862:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 1, ptr %80) #0
  store i8 1, ptr %80, align 1, !tbaa !37
  br label %863

863:                                              ; preds = %883, %862
  %864 = load i8, ptr %80, align 1, !tbaa !37, !range !39, !noundef !40
  %865 = trunc i8 %864 to i1
  br i1 %865, label %867, label %866

866:                                              ; preds = %863
  store i32 47, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #0
  br label %884

867:                                              ; preds = %863
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #0
  %868 = load ptr, ptr %77, align 8, !tbaa !5
  %869 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %868)
          to label %870 unwind label %876

870:                                              ; preds = %867
  store ptr %869, ptr %81, align 8, !tbaa !5
  br label %871

871:                                              ; preds = %881, %870
  %872 = load ptr, ptr %81, align 8, !tbaa !5
  %873 = load i8, ptr %80, align 1, !tbaa !37, !range !39, !noundef !40
  %874 = trunc i8 %873 to i1
  br i1 %874, label %880, label %875

875:                                              ; preds = %871
  store i32 50, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  br label %882

876:                                              ; preds = %867
  %877 = landingpad { ptr, i32 }
          cleanup
  %878 = extractvalue { ptr, i32 } %877, 0
  store ptr %878, ptr %25, align 8
  %879 = extractvalue { ptr, i32 } %877, 1
  store i32 %879, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %80) #0
  br label %1560

880:                                              ; preds = %871
  br label %881

881:                                              ; preds = %880
  store i8 0, ptr %80, align 1, !tbaa !37
  br label %871, !llvm.loop !47

882:                                              ; preds = %875
  br label %883

883:                                              ; preds = %882
  store i8 0, ptr %80, align 1, !tbaa !37
  br label %863, !llvm.loop !48

884:                                              ; preds = %866
  br label %1556

885:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 1, ptr %82) #0
  store i8 1, ptr %82, align 1, !tbaa !37
  br label %886

886:                                              ; preds = %1499, %885
  %887 = load i8, ptr %82, align 1, !tbaa !37, !range !39, !noundef !40
  %888 = trunc i8 %887 to i1
  br i1 %888, label %890, label %889

889:                                              ; preds = %886
  store i32 53, ptr %35, align 4
  br label %1500

890:                                              ; preds = %886
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #0
  %891 = load ptr, ptr %77, align 8, !tbaa !5
  %892 = invoke noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %891)
          to label %893 unwind label %899

893:                                              ; preds = %890
  store ptr %892, ptr %83, align 8, !tbaa !5
  br label %894

894:                                              ; preds = %1485, %893
  %895 = load ptr, ptr %83, align 8, !tbaa !5
  %896 = load i8, ptr %82, align 1, !tbaa !37, !range !39, !noundef !40
  %897 = trunc i8 %896 to i1
  br i1 %897, label %903, label %898

898:                                              ; preds = %894
  store i32 56, ptr %35, align 4
  br label %1495

899:                                              ; preds = %924, %922, %918, %916, %912, %910, %907, %904, %890
  %900 = landingpad { ptr, i32 }
          cleanup
  %901 = extractvalue { ptr, i32 } %900, 0
  store ptr %901, ptr %25, align 8
  %902 = extractvalue { ptr, i32 } %900, 1
  store i32 %902, ptr %26, align 4
  br label %1497

903:                                              ; preds = %894
  br label %904

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

906:                                              ; preds = %904
  br i1 %905, label %907, label %927

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

910:                                              ; preds = %907
  %911 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %909, ptr noundef @.str.146)
          to label %912 unwind label %899

912:                                              ; preds = %910
  %913 = load ptr, ptr %83, align 8, !tbaa !5
  %914 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %913, i32 0, i32 1
  %915 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %911, ptr noundef nonnull align 8 dereferenceable(8) %914)
          to label %916 unwind label %899

916:                                              ; preds = %912
  %917 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %915, ptr noundef @.str.147)
          to label %918 unwind label %899

918:                                              ; preds = %916
  %919 = load ptr, ptr %83, align 8, !tbaa !5
  %920 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %919, i32 0, i32 2
  %921 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %917, ptr noundef nonnull align 8 dereferenceable(144) %920)
          to label %922 unwind label %899

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

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

926:                                              ; preds = %924
  br label %927

927:                                              ; preds = %926, %906
  br label %928

928:                                              ; preds = %927
  br label %929

929:                                              ; preds = %928
  %930 = load atomic i8, ptr @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params acquire, align 8
  %931 = icmp eq i8 %930, 0
  br i1 %931, label %932, label %937, !prof !49

932:                                              ; preds = %929
  %933 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #0
  %934 = icmp ne i32 %933, 0
  br i1 %934, label %935, label %937

935:                                              ; preds = %932
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #0
  %936 = call i32 @__cxa_atexit(ptr @_ZN3HIR13GenericParamsD2Ev, ptr @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #0
  br label %937

937:                                              ; preds = %935, %932, %929
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #0
  %938 = getelementptr inbounds i8, ptr %63, i64 8
  %939 = load ptr, ptr %83, align 8, !tbaa !5
  %940 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %939, i32 0, i32 0
  %941 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %940) #0
  br i1 %941, label %942, label %946

942:                                              ; preds = %937
  %943 = load ptr, ptr %83, align 8, !tbaa !5
  %944 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %943, i32 0, i32 0
  %945 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %944) #0
  br label %947

946:                                              ; preds = %937
  br label %947

947:                                              ; preds = %946, %942
  %948 = phi ptr [ %945, %942 ], [ @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params, %946 ]
  invoke void @_ZNK13Monomorphiser8push_hrbERKN3HIR13GenericParamsE(ptr dead_on_unwind writable sret(%"class.Monomorphiser::PopOnDrop") align 8 %84, ptr noundef nonnull align 8 dereferenceable(96) %938, ptr noundef nonnull align 8 dereferenceable(96) %948)
          to label %949 unwind label %979

949:                                              ; preds = %947
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #0
  %950 = getelementptr inbounds i8, ptr %63, i64 8
  %951 = load ptr, ptr %12, align 8, !tbaa !5
  %952 = load ptr, ptr %83, align 8, !tbaa !5
  %953 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %952, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %85, ptr noundef nonnull align 8 dereferenceable(96) %950, ptr noundef nonnull align 8 dereferenceable(8) %951, ptr noundef nonnull align 8 dereferenceable(8) %953, i1 noundef zeroext false)
          to label %954 unwind label %983

954:                                              ; preds = %949
  call void @llvm.lifetime.start.p0(i64 144, ptr %86) #0
  %955 = getelementptr inbounds i8, ptr %63, i64 8
  %956 = load ptr, ptr %12, align 8, !tbaa !5
  %957 = load ptr, ptr %83, align 8, !tbaa !5
  %958 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %957, i32 0, i32 2
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %86, ptr noundef nonnull align 8 dereferenceable(96) %955, ptr noundef nonnull align 8 dereferenceable(8) %956, ptr noundef nonnull align 8 dereferenceable(144) %958, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %959 unwind label %987

959:                                              ; preds = %954
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  %960 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %88, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %961 unwind label %991

961:                                              ; preds = %959
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %87, ptr noundef nonnull align 8 dereferenceable(280) %131, ptr noundef nonnull align 8 dereferenceable(8) %960, ptr noundef %88)
          to label %962 unwind label %995

962:                                              ; preds = %961
  %963 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %964 unwind label %999

964:                                              ; preds = %962
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #0
  %965 = getelementptr inbounds %"class.HIR::TraitPath", ptr %86, i32 0, i32 1
  %966 = getelementptr inbounds %"class.HIR::GenericPath", ptr %965, i32 0, i32 1
  %967 = getelementptr inbounds %"struct.HIR::PathParams", ptr %966, i32 0, i32 1
  store ptr %967, ptr %89, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #0
  %968 = load ptr, ptr %89, align 8, !tbaa !5
  %969 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %968)
          to label %970 unwind label %1005

970:                                              ; preds = %964
  store ptr %969, ptr %90, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #0
  %971 = load ptr, ptr %89, align 8, !tbaa !5
  %972 = invoke noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %971)
          to label %973 unwind label %1009

973:                                              ; preds = %970
  store ptr %972, ptr %91, align 8, !tbaa !5
  br label %974

974:                                              ; preds = %1022, %973
  %975 = load ptr, ptr %90, align 8, !tbaa !5
  %976 = load ptr, ptr %91, align 8, !tbaa !5
  %977 = icmp ne ptr %975, %976
  br i1 %977, label %1013, label %978

978:                                              ; preds = %974
  store i32 61, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #0
  br label %1041

979:                                              ; preds = %947
  %980 = landingpad { ptr, i32 }
          cleanup
  %981 = extractvalue { ptr, i32 } %980, 0
  store ptr %981, ptr %25, align 8
  %982 = extractvalue { ptr, i32 } %980, 1
  store i32 %982, ptr %26, align 4
  br label %1494

983:                                              ; preds = %949
  %984 = landingpad { ptr, i32 }
          cleanup
  %985 = extractvalue { ptr, i32 } %984, 0
  store ptr %985, ptr %25, align 8
  %986 = extractvalue { ptr, i32 } %984, 1
  store i32 %986, ptr %26, align 4
  br label %1493

987:                                              ; preds = %954
  %988 = landingpad { ptr, i32 }
          cleanup
  %989 = extractvalue { ptr, i32 } %988, 0
  store ptr %989, ptr %25, align 8
  %990 = extractvalue { ptr, i32 } %988, 1
  store i32 %990, ptr %26, align 4
  br label %1492

991:                                              ; preds = %959
  %992 = landingpad { ptr, i32 }
          cleanup
  %993 = extractvalue { ptr, i32 } %992, 0
  store ptr %993, ptr %25, align 8
  %994 = extractvalue { ptr, i32 } %992, 1
  store i32 %994, ptr %26, align 4
  br label %1004

995:                                              ; preds = %961
  %996 = landingpad { ptr, i32 }
          cleanup
  %997 = extractvalue { ptr, i32 } %996, 0
  store ptr %997, ptr %25, align 8
  %998 = extractvalue { ptr, i32 } %996, 1
  store i32 %998, ptr %26, align 4
  br label %1003

999:                                              ; preds = %962
  %1000 = landingpad { ptr, i32 }
          cleanup
  %1001 = extractvalue { ptr, i32 } %1000, 0
  store ptr %1001, ptr %25, align 8
  %1002 = extractvalue { ptr, i32 } %1000, 1
  store i32 %1002, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  br label %1003

1003:                                             ; preds = %999, %995
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %88) #0
  br label %1004

1004:                                             ; preds = %1003, %991
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1491

1005:                                             ; preds = %964
  %1006 = landingpad { ptr, i32 }
          cleanup
  %1007 = extractvalue { ptr, i32 } %1006, 0
  store ptr %1007, ptr %25, align 8
  %1008 = extractvalue { ptr, i32 } %1006, 1
  store i32 %1008, ptr %26, align 4
  br label %1040

1009:                                             ; preds = %970
  %1010 = landingpad { ptr, i32 }
          cleanup
  %1011 = extractvalue { ptr, i32 } %1010, 0
  store ptr %1011, ptr %25, align 8
  %1012 = extractvalue { ptr, i32 } %1010, 1
  store i32 %1012, ptr %26, align 4
  br label %1039

1013:                                             ; preds = %974
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  %1014 = load ptr, ptr %90, align 8, !tbaa !5
  store ptr %1014, ptr %92, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  %1015 = load ptr, ptr %12, align 8, !tbaa !5
  %1016 = load ptr, ptr %92, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %1016)
          to label %1017 unwind label %1025

1017:                                             ; preds = %1013
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %93, ptr noundef nonnull align 8 dereferenceable(280) %131, ptr noundef nonnull align 8 dereferenceable(8) %1015, ptr noundef %94)
          to label %1018 unwind label %1029

1018:                                             ; preds = %1017
  %1019 = load ptr, ptr %92, align 8, !tbaa !5
  %1020 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1019, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %1021 unwind label %1033

1021:                                             ; preds = %1018
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %1022

1022:                                             ; preds = %1021
  %1023 = load ptr, ptr %90, align 8, !tbaa !5
  %1024 = getelementptr inbounds %"class.HIR::TypeRef", ptr %1023, i32 1
  store ptr %1024, ptr %90, align 8, !tbaa !5
  br label %974

1025:                                             ; preds = %1013
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %25, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %26, align 4
  br label %1038

1029:                                             ; preds = %1017
  %1030 = landingpad { ptr, i32 }
          cleanup
  %1031 = extractvalue { ptr, i32 } %1030, 0
  store ptr %1031, ptr %25, align 8
  %1032 = extractvalue { ptr, i32 } %1030, 1
  store i32 %1032, ptr %26, align 4
  br label %1037

1033:                                             ; preds = %1018
  %1034 = landingpad { ptr, i32 }
          cleanup
  %1035 = extractvalue { ptr, i32 } %1034, 0
  store ptr %1035, ptr %25, align 8
  %1036 = extractvalue { ptr, i32 } %1034, 1
  store i32 %1036, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  br label %1037

1037:                                             ; preds = %1033, %1029
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #0
  br label %1038

1038:                                             ; preds = %1037, %1025
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %1039

1039:                                             ; preds = %1038, %1009
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #0
  br label %1040

1040:                                             ; preds = %1039, %1005
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #0
  br label %1491

1041:                                             ; preds = %978
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #0
  %1042 = getelementptr inbounds %"class.HIR::TraitPath", ptr %86, i32 0, i32 2
  store ptr %1042, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #0
  %1043 = load ptr, ptr %95, align 8, !tbaa !5
  %1044 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %1043) #0
  %1045 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %96, i32 0, i32 0
  store ptr %1044, ptr %1045, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #0
  %1046 = load ptr, ptr %95, align 8, !tbaa !5
  %1047 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %1046) #0
  %1048 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %97, i32 0, i32 0
  store ptr %1047, ptr %1048, align 8
  br label %1049

1049:                                             ; preds = %1065, %1041
  %1050 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #0
  br i1 %1050, label %1052, label %1051

1051:                                             ; preds = %1049
  store i32 63, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  br label %1081

1052:                                             ; preds = %1049
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #0
  %1053 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  store ptr %1053, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #0
  %1054 = load ptr, ptr %12, align 8, !tbaa !5
  %1055 = load ptr, ptr %98, align 8, !tbaa !5
  %1056 = getelementptr inbounds %"struct.std::pair.165", ptr %1055, i32 0, i32 1
  %1057 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1056, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %100, ptr noundef nonnull align 8 dereferenceable(8) %1057)
          to label %1058 unwind label %1067

1058:                                             ; preds = %1052
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %99, ptr noundef nonnull align 8 dereferenceable(280) %131, ptr noundef nonnull align 8 dereferenceable(8) %1054, ptr noundef %100)
          to label %1059 unwind label %1071

1059:                                             ; preds = %1058
  %1060 = load ptr, ptr %98, align 8, !tbaa !5
  %1061 = getelementptr inbounds %"struct.std::pair.165", ptr %1060, i32 0, i32 1
  %1062 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %1061, i32 0, i32 1
  %1063 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1062, ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %1064 unwind label %1075

1064:                                             ; preds = %1059
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  br label %1065

1065:                                             ; preds = %1064
  %1066 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  br label %1049

1067:                                             ; preds = %1052
  %1068 = landingpad { ptr, i32 }
          cleanup
  %1069 = extractvalue { ptr, i32 } %1068, 0
  store ptr %1069, ptr %25, align 8
  %1070 = extractvalue { ptr, i32 } %1068, 1
  store i32 %1070, ptr %26, align 4
  br label %1080

1071:                                             ; preds = %1058
  %1072 = landingpad { ptr, i32 }
          cleanup
  %1073 = extractvalue { ptr, i32 } %1072, 0
  store ptr %1073, ptr %25, align 8
  %1074 = extractvalue { ptr, i32 } %1072, 1
  store i32 %1074, ptr %26, align 4
  br label %1079

1075:                                             ; preds = %1059
  %1076 = landingpad { ptr, i32 }
          cleanup
  %1077 = extractvalue { ptr, i32 } %1076, 0
  store ptr %1077, ptr %25, align 8
  %1078 = extractvalue { ptr, i32 } %1076, 1
  store i32 %1078, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #0
  br label %1079

1079:                                             ; preds = %1075, %1071
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #0
  br label %1080

1080:                                             ; preds = %1079, %1067
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #0
  br label %1491

1081:                                             ; preds = %1051
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #0
  %1082 = getelementptr inbounds %"class.HIR::TraitPath", ptr %86, i32 0, i32 1
  store ptr %1082, ptr %101, align 8, !tbaa !5
  br label %1083

1083:                                             ; preds = %1081
  %1084 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1085 unwind label %1102

1085:                                             ; preds = %1083
  br i1 %1084, label %1086, label %1106

1086:                                             ; preds = %1085
  %1087 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1088 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1087, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1089 unwind label %1102

1089:                                             ; preds = %1086
  %1090 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1088, ptr noundef @.str.148)
          to label %1091 unwind label %1102

1091:                                             ; preds = %1089
  %1092 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1090, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1093 unwind label %1102

1093:                                             ; preds = %1091
  %1094 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1092, ptr noundef @.str.147)
          to label %1095 unwind label %1102

1095:                                             ; preds = %1093
  %1096 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %1094, ptr noundef nonnull align 8 dereferenceable(144) %86)
          to label %1097 unwind label %1102

1097:                                             ; preds = %1095
  %1098 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1096, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1099 unwind label %1102

1099:                                             ; preds = %1097
  %1100 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1098, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1101 unwind label %1102

1101:                                             ; preds = %1099
  br label %1106

1102:                                             ; preds = %1099, %1097, %1095, %1093, %1091, %1089, %1086, %1083
  %1103 = landingpad { ptr, i32 }
          cleanup
  %1104 = extractvalue { ptr, i32 } %1103, 0
  store ptr %1104, ptr %25, align 8
  %1105 = extractvalue { ptr, i32 } %1103, 1
  store i32 %1105, ptr %26, align 4
  br label %1490

1106:                                             ; preds = %1101, %1085
  br label %1107

1107:                                             ; preds = %1106
  br label %1108

1108:                                             ; preds = %1107
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #0
  store i8 0, ptr %102, align 1, !tbaa !37
  %1109 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1110 unwind label %1135

1110:                                             ; preds = %1108
  %1111 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1109)
          to label %1112 unwind label %1135

1112:                                             ; preds = %1110
  br i1 %1111, label %1113, label %1142

1113:                                             ; preds = %1112
  %1114 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1115 unwind label %1135

1115:                                             ; preds = %1113
  %1116 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1114)
          to label %1117 unwind label %1135

1117:                                             ; preds = %1115
  %1118 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1116, i32 0, i32 1
  %1119 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %1118)
          to label %1120 unwind label %1135

1120:                                             ; preds = %1117
  br i1 %1119, label %1121, label %1142

1121:                                             ; preds = %1120
  br label %1122

1122:                                             ; preds = %1121
  %1123 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1124 unwind label %1135

1124:                                             ; preds = %1122
  br i1 %1123, label %1125, label %1139

1125:                                             ; preds = %1124
  %1126 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1126, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1128 unwind label %1135

1128:                                             ; preds = %1125
  %1129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1127, ptr noundef @.str.149)
          to label %1130 unwind label %1135

1130:                                             ; preds = %1128
  %1131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1129, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1132 unwind label %1135

1132:                                             ; preds = %1130
  %1133 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1131, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1134 unwind label %1135

1134:                                             ; preds = %1132
  br label %1139

1135:                                             ; preds = %1167, %1165, %1163, %1160, %1157, %1151, %1149, %1147, %1144, %1142, %1132, %1130, %1128, %1125, %1122, %1117, %1115, %1113, %1110, %1108
  %1136 = landingpad { ptr, i32 }
          cleanup
  %1137 = extractvalue { ptr, i32 } %1136, 0
  store ptr %1137, ptr %25, align 8
  %1138 = extractvalue { ptr, i32 } %1136, 1
  store i32 %1138, ptr %26, align 4
  br label %1489

1139:                                             ; preds = %1134, %1124
  br label %1140

1140:                                             ; preds = %1139
  br label %1141

1141:                                             ; preds = %1140
  store i8 1, ptr %102, align 1, !tbaa !37
  br label %1142

1142:                                             ; preds = %1141, %1120, %1112
  %1143 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1144 unwind label %1135

1144:                                             ; preds = %1142
  %1145 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %1143)
          to label %1146 unwind label %1135

1146:                                             ; preds = %1144
  br i1 %1145, label %1147, label %1173

1147:                                             ; preds = %1146
  %1148 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1149 unwind label %1135

1149:                                             ; preds = %1147
  %1150 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %1148)
          to label %1151 unwind label %1135

1151:                                             ; preds = %1149
  %1152 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %1150)
          to label %1153 unwind label %1135

1153:                                             ; preds = %1151
  %1154 = zext i1 %1152 to i32
  %1155 = icmp eq i32 %1154, 0
  br i1 %1155, label %1156, label %1173

1156:                                             ; preds = %1153
  br label %1157

1157:                                             ; preds = %1156
  %1158 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1159 unwind label %1135

1159:                                             ; preds = %1157
  br i1 %1158, label %1160, label %1170

1160:                                             ; preds = %1159
  %1161 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1162 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1161, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1163 unwind label %1135

1163:                                             ; preds = %1160
  %1164 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1162, ptr noundef @.str.150)
          to label %1165 unwind label %1135

1165:                                             ; preds = %1163
  %1166 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1164, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1167 unwind label %1135

1167:                                             ; preds = %1165
  %1168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1166, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1169 unwind label %1135

1169:                                             ; preds = %1167
  br label %1170

1170:                                             ; preds = %1169, %1159
  br label %1171

1171:                                             ; preds = %1170
  br label %1172

1172:                                             ; preds = %1171
  store i8 1, ptr %102, align 1, !tbaa !37
  br label %1173

1173:                                             ; preds = %1172, %1153, %1146
  call void @llvm.lifetime.start.p0(i64 24, ptr %103) #0
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %103, ptr noundef nonnull align 8 dereferenceable(24) %36)
          to label %1174 unwind label %1225

1174:                                             ; preds = %1173
  call void @llvm.lifetime.start.p0(i64 24, ptr %104) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1175 unwind label %1229

1175:                                             ; preds = %1174
  call void @llvm.lifetime.start.p0(i64 4, ptr %105) #0
  store i32 0, ptr %105, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #0
  store i8 1, ptr %106, align 1, !tbaa !37
  call void @llvm.lifetime.start.p0(i64 1, ptr %107) #0
  %1176 = load ptr, ptr %12, align 8, !tbaa !5
  %1177 = load ptr, ptr %101, align 8, !tbaa !5
  %1178 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1177, i32 0, i32 0
  %1179 = load ptr, ptr %101, align 8, !tbaa !5
  %1180 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1179, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 104, ptr %109) #0
  %1181 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 0
  store ptr %131, ptr %1181, align 8, !tbaa !50
  %1182 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 1
  %1183 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1183, ptr %1182, align 8, !tbaa !5
  %1184 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 2
  store ptr %85, ptr %1184, align 8, !tbaa !5
  %1185 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 3
  store ptr %62, ptr %1185, align 8, !tbaa !5
  %1186 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 4
  store ptr %63, ptr %1186, align 8, !tbaa !5
  %1187 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 5
  %1188 = load ptr, ptr %101, align 8, !tbaa !5
  store ptr %1188, ptr %1187, align 8, !tbaa !5
  %1189 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 6
  store ptr %86, ptr %1189, align 8, !tbaa !5
  %1190 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 7
  store ptr %102, ptr %1190, align 8, !tbaa !5
  %1191 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 8
  store ptr %105, ptr %1191, align 8, !tbaa !5
  %1192 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 9
  store ptr %104, ptr %1192, align 8, !tbaa !5
  %1193 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 10
  store ptr %36, ptr %1193, align 8, !tbaa !5
  %1194 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 11
  store ptr %106, ptr %1194, align 8, !tbaa !5
  %1195 = getelementptr inbounds %class.anon.611, ptr %109, i32 0, i32 12
  store ptr %103, ptr %1195, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKNS1_10SimplePathEPKNS1_10PathParamsERKNS1_7TypeRefERKNS1_13GenericParamsERSE_SI_RSD_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %108, ptr noundef nonnull align 8 dereferenceable(104) %109)
          to label %1196 unwind label %1233

1196:                                             ; preds = %1175
  %1197 = invoke noundef zeroext i1 @_ZNK15TraitResolution16find_trait_implsERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEb(ptr noundef nonnull align 8 dereferenceable(280) %131, ptr noundef nonnull align 8 dereferenceable(8) %1176, ptr noundef nonnull align 8 dereferenceable(8) %1178, ptr noundef nonnull align 8 dereferenceable(24) %1180, ptr noundef nonnull align 8 dereferenceable(8) %85, ptr noundef %108, i1 noundef zeroext true)
          to label %1198 unwind label %1237

1198:                                             ; preds = %1196
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #0
  call void @llvm.lifetime.end.p0(i64 104, ptr %109) #0
  %1199 = zext i1 %1197 to i8
  store i8 %1199, ptr %107, align 1, !tbaa !37
  %1200 = load i8, ptr %107, align 1, !tbaa !37, !range !39, !noundef !40
  %1201 = trunc i8 %1200 to i1
  br i1 %1201, label %1202, label %1249

1202:                                             ; preds = %1198
  br label %1203

1203:                                             ; preds = %1202
  %1204 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1205 unwind label %1242

1205:                                             ; preds = %1203
  br i1 %1204, label %1206, label %1246

1206:                                             ; preds = %1205
  %1207 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1208 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1207, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1209 unwind label %1242

1209:                                             ; preds = %1206
  %1210 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1208, ptr noundef @.str.151)
          to label %1211 unwind label %1242

1211:                                             ; preds = %1209
  %1212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1210, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1213 unwind label %1242

1213:                                             ; preds = %1211
  %1214 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1212, ptr noundef @.str.147)
          to label %1215 unwind label %1242

1215:                                             ; preds = %1213
  %1216 = load ptr, ptr %101, align 8, !tbaa !5
  %1217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1214, ptr noundef nonnull align 8 dereferenceable(32) %1216)
          to label %1218 unwind label %1242

1218:                                             ; preds = %1215
  %1219 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1217, ptr noundef @.str.152)
          to label %1220 unwind label %1242

1220:                                             ; preds = %1218
  %1221 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1219, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1222 unwind label %1242

1222:                                             ; preds = %1220
  %1223 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1221, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1224 unwind label %1242

1224:                                             ; preds = %1222
  br label %1246

1225:                                             ; preds = %1173
  %1226 = landingpad { ptr, i32 }
          cleanup
  %1227 = extractvalue { ptr, i32 } %1226, 0
  store ptr %1227, ptr %25, align 8
  %1228 = extractvalue { ptr, i32 } %1226, 1
  store i32 %1228, ptr %26, align 4
  br label %1488

1229:                                             ; preds = %1174
  %1230 = landingpad { ptr, i32 }
          cleanup
  %1231 = extractvalue { ptr, i32 } %1230, 0
  store ptr %1231, ptr %25, align 8
  %1232 = extractvalue { ptr, i32 } %1230, 1
  store i32 %1232, ptr %26, align 4
  br label %1487

1233:                                             ; preds = %1175
  %1234 = landingpad { ptr, i32 }
          cleanup
  %1235 = extractvalue { ptr, i32 } %1234, 0
  store ptr %1235, ptr %25, align 8
  %1236 = extractvalue { ptr, i32 } %1234, 1
  store i32 %1236, ptr %26, align 4
  br label %1241

1237:                                             ; preds = %1196
  %1238 = landingpad { ptr, i32 }
          cleanup
  %1239 = extractvalue { ptr, i32 } %1238, 0
  store ptr %1239, ptr %25, align 8
  %1240 = extractvalue { ptr, i32 } %1238, 1
  store i32 %1240, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %108) #0
  br label %1241

1241:                                             ; preds = %1237, %1233
  call void @llvm.lifetime.end.p0(i64 104, ptr %109) #0
  br label %1486

1242:                                             ; preds = %1472, %1470, %1468, %1465, %1463, %1461, %1459, %1456, %1453, %1446, %1444, %1442, %1439, %1437, %1435, %1433, %1430, %1427, %1423, %1421, %1419, %1416, %1414, %1408, %1406, %1404, %1401, %1399, %1397, %1395, %1392, %1389, %1382, %1380, %1377, %1375, %1366, %1364, %1362, %1359, %1357, %1354, %1351, %1347, %1342, %1340, %1338, %1336, %1333, %1331, %1328, %1325, %1318, %1313, %1311, %1309, %1307, %1304, %1301, %1291, %1289, %1287, %1284, %1281, %1272, %1270, %1268, %1265, %1263, %1261, %1259, %1256, %1253, %1222, %1220, %1218, %1215, %1213, %1211, %1209, %1206, %1203
  %1243 = landingpad { ptr, i32 }
          cleanup
  %1244 = extractvalue { ptr, i32 } %1243, 0
  store ptr %1244, ptr %25, align 8
  %1245 = extractvalue { ptr, i32 } %1243, 1
  store i32 %1245, ptr %26, align 4
  br label %1486

1246:                                             ; preds = %1224, %1205
  br label %1247

1247:                                             ; preds = %1246
  br label %1248

1248:                                             ; preds = %1247
  br label %1481

1249:                                             ; preds = %1198
  %1250 = load i8, ptr %102, align 1, !tbaa !37, !range !39, !noundef !40
  %1251 = trunc i8 %1250 to i1
  br i1 %1251, label %1252, label %1375

1252:                                             ; preds = %1249
  br label %1253

1253:                                             ; preds = %1252
  %1254 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1255 unwind label %1242

1255:                                             ; preds = %1253
  br i1 %1254, label %1256, label %1275

1256:                                             ; preds = %1255
  %1257 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1258 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1257, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1259 unwind label %1242

1259:                                             ; preds = %1256
  %1260 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1258, ptr noundef @.str.151)
          to label %1261 unwind label %1242

1261:                                             ; preds = %1259
  %1262 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1260, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1263 unwind label %1242

1263:                                             ; preds = %1261
  %1264 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1262, ptr noundef @.str.147)
          to label %1265 unwind label %1242

1265:                                             ; preds = %1263
  %1266 = load ptr, ptr %101, align 8, !tbaa !5
  %1267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1264, ptr noundef nonnull align 8 dereferenceable(32) %1266)
          to label %1268 unwind label %1242

1268:                                             ; preds = %1265
  %1269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1267, ptr noundef @.str.153)
          to label %1270 unwind label %1242

1270:                                             ; preds = %1268
  %1271 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1269, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1272 unwind label %1242

1272:                                             ; preds = %1270
  %1273 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1271, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1274 unwind label %1242

1274:                                             ; preds = %1272
  br label %1275

1275:                                             ; preds = %1274, %1255
  br label %1276

1276:                                             ; preds = %1275
  br label %1277

1277:                                             ; preds = %1276
  %1278 = load i32, ptr %105, align 4, !tbaa !35
  %1279 = icmp eq i32 %1278, 0
  br i1 %1279, label %1280, label %1297

1280:                                             ; preds = %1277
  br label %1281

1281:                                             ; preds = %1280
  %1282 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1283 unwind label %1242

1283:                                             ; preds = %1281
  br i1 %1282, label %1284, label %1294

1284:                                             ; preds = %1283
  %1285 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1286 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1285, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1287 unwind label %1242

1287:                                             ; preds = %1284
  %1288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1286, ptr noundef @.str.154)
          to label %1289 unwind label %1242

1289:                                             ; preds = %1287
  %1290 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1288, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1291 unwind label %1242

1291:                                             ; preds = %1289
  %1292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1290, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1293 unwind label %1242

1293:                                             ; preds = %1291
  br label %1294

1294:                                             ; preds = %1293, %1283
  br label %1295

1295:                                             ; preds = %1294
  br label %1296

1296:                                             ; preds = %1295
  br label %1374

1297:                                             ; preds = %1277
  %1298 = load i32, ptr %105, align 4, !tbaa !35
  %1299 = icmp eq i32 %1298, 1
  br i1 %1299, label %1300, label %1321

1300:                                             ; preds = %1297
  br label %1301

1301:                                             ; preds = %1300
  %1302 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1303 unwind label %1242

1303:                                             ; preds = %1301
  br i1 %1302, label %1304, label %1316

1304:                                             ; preds = %1303
  %1305 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1306 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1305, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1307 unwind label %1242

1307:                                             ; preds = %1304
  %1308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1306, ptr noundef @.str.155)
          to label %1309 unwind label %1242

1309:                                             ; preds = %1307
  %1310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1308, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1311 unwind label %1242

1311:                                             ; preds = %1309
  %1312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1310, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1313 unwind label %1242

1313:                                             ; preds = %1311
  %1314 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1312, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1315 unwind label %1242

1315:                                             ; preds = %1313
  br label %1316

1316:                                             ; preds = %1315, %1303
  br label %1317

1317:                                             ; preds = %1316
  br label %1318

1318:                                             ; preds = %1317
  %1319 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1320 unwind label %1242

1320:                                             ; preds = %1318
  br label %1373

1321:                                             ; preds = %1297
  %1322 = load i8, ptr %106, align 1, !tbaa !37, !range !39, !noundef !40
  %1323 = trunc i8 %1322 to i1
  br i1 %1323, label %1324, label %1350

1324:                                             ; preds = %1321
  br label %1325

1325:                                             ; preds = %1324
  %1326 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1327 unwind label %1242

1327:                                             ; preds = %1325
  br i1 %1326, label %1328, label %1345

1328:                                             ; preds = %1327
  %1329 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1329, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1331 unwind label %1242

1331:                                             ; preds = %1328
  %1332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1330, ptr noundef @.str.156)
          to label %1333 unwind label %1242

1333:                                             ; preds = %1331
  %1334 = load i32, ptr %105, align 4, !tbaa !35
  %1335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1332, i32 noundef %1334)
          to label %1336 unwind label %1242

1336:                                             ; preds = %1333
  %1337 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1335, ptr noundef @.str.157)
          to label %1338 unwind label %1242

1338:                                             ; preds = %1336
  %1339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1337, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1340 unwind label %1242

1340:                                             ; preds = %1338
  %1341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1339, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1342 unwind label %1242

1342:                                             ; preds = %1340
  %1343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1341, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1344 unwind label %1242

1344:                                             ; preds = %1342
  br label %1345

1345:                                             ; preds = %1344, %1327
  br label %1346

1346:                                             ; preds = %1345
  br label %1347

1347:                                             ; preds = %1346
  %1348 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %1349 unwind label %1242

1349:                                             ; preds = %1347
  br label %1372

1350:                                             ; preds = %1321
  br label %1351

1351:                                             ; preds = %1350
  %1352 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1353 unwind label %1242

1353:                                             ; preds = %1351
  br i1 %1352, label %1354, label %1369

1354:                                             ; preds = %1353
  %1355 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1356 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1355, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1357 unwind label %1242

1357:                                             ; preds = %1354
  %1358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1356, ptr noundef @.str.158)
          to label %1359 unwind label %1242

1359:                                             ; preds = %1357
  %1360 = load i32, ptr %105, align 4, !tbaa !35
  %1361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %1358, i32 noundef %1360)
          to label %1362 unwind label %1242

1362:                                             ; preds = %1359
  %1363 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1361, ptr noundef @.str.159)
          to label %1364 unwind label %1242

1364:                                             ; preds = %1362
  %1365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1363, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1366 unwind label %1242

1366:                                             ; preds = %1364
  %1367 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1365, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1368 unwind label %1242

1368:                                             ; preds = %1366
  br label %1369

1369:                                             ; preds = %1368, %1353
  br label %1370

1370:                                             ; preds = %1369
  br label %1371

1371:                                             ; preds = %1370
  br label %1372

1372:                                             ; preds = %1371, %1349
  br label %1373

1373:                                             ; preds = %1372, %1320
  br label %1374

1374:                                             ; preds = %1373, %1296
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1480

1375:                                             ; preds = %1249
  %1376 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1377 unwind label %1242

1377:                                             ; preds = %1375
  %1378 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %1376)
          to label %1379 unwind label %1242

1379:                                             ; preds = %1377
  br i1 %1378, label %1380, label %1414

1380:                                             ; preds = %1379
  %1381 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1382 unwind label %1242

1382:                                             ; preds = %1380
  %1383 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %1381)
          to label %1384 unwind label %1242

1384:                                             ; preds = %1382
  %1385 = getelementptr inbounds %"struct.HIR::TypeData::Data_Infer", ptr %1383, i32 0, i32 1
  %1386 = load i32, ptr %1385, align 4, !tbaa !52
  %1387 = icmp eq i32 %1386, 0
  br i1 %1387, label %1388, label %1414

1388:                                             ; preds = %1384
  br label %1389

1389:                                             ; preds = %1388
  %1390 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1391 unwind label %1242

1391:                                             ; preds = %1389
  br i1 %1390, label %1392, label %1411

1392:                                             ; preds = %1391
  %1393 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1394 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1393, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1395 unwind label %1242

1395:                                             ; preds = %1392
  %1396 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1394, ptr noundef @.str.151)
          to label %1397 unwind label %1242

1397:                                             ; preds = %1395
  %1398 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1396, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1399 unwind label %1242

1399:                                             ; preds = %1397
  %1400 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1398, ptr noundef @.str.147)
          to label %1401 unwind label %1242

1401:                                             ; preds = %1399
  %1402 = load ptr, ptr %101, align 8, !tbaa !5
  %1403 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1400, ptr noundef nonnull align 8 dereferenceable(32) %1402)
          to label %1404 unwind label %1242

1404:                                             ; preds = %1401
  %1405 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1403, ptr noundef @.str.160)
          to label %1406 unwind label %1242

1406:                                             ; preds = %1404
  %1407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1405, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1408 unwind label %1242

1408:                                             ; preds = %1406
  %1409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1407, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1410 unwind label %1242

1410:                                             ; preds = %1408
  br label %1411

1411:                                             ; preds = %1410, %1391
  br label %1412

1412:                                             ; preds = %1411
  br label %1413

1413:                                             ; preds = %1412
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1479

1414:                                             ; preds = %1384, %1379
  %1415 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1416 unwind label %1242

1416:                                             ; preds = %1414
  %1417 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1415)
          to label %1418 unwind label %1242

1418:                                             ; preds = %1416
  br i1 %1417, label %1419, label %1452

1419:                                             ; preds = %1418
  %1420 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1421 unwind label %1242

1421:                                             ; preds = %1419
  %1422 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1420)
          to label %1423 unwind label %1242

1423:                                             ; preds = %1421
  %1424 = invoke noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %1422)
          to label %1425 unwind label %1242

1425:                                             ; preds = %1423
  br i1 %1424, label %1426, label %1452

1426:                                             ; preds = %1425
  br label %1427

1427:                                             ; preds = %1426
  %1428 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1429 unwind label %1242

1429:                                             ; preds = %1427
  br i1 %1428, label %1430, label %1449

1430:                                             ; preds = %1429
  %1431 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1432 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1431, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1433 unwind label %1242

1433:                                             ; preds = %1430
  %1434 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1432, ptr noundef @.str.151)
          to label %1435 unwind label %1242

1435:                                             ; preds = %1433
  %1436 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1434, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1437 unwind label %1242

1437:                                             ; preds = %1435
  %1438 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1436, ptr noundef @.str.147)
          to label %1439 unwind label %1242

1439:                                             ; preds = %1437
  %1440 = load ptr, ptr %101, align 8, !tbaa !5
  %1441 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1438, ptr noundef nonnull align 8 dereferenceable(32) %1440)
          to label %1442 unwind label %1242

1442:                                             ; preds = %1439
  %1443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1441, ptr noundef @.str.161)
          to label %1444 unwind label %1242

1444:                                             ; preds = %1442
  %1445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1443, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1446 unwind label %1242

1446:                                             ; preds = %1444
  %1447 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1445, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1448 unwind label %1242

1448:                                             ; preds = %1446
  br label %1449

1449:                                             ; preds = %1448, %1429
  br label %1450

1450:                                             ; preds = %1449
  br label %1451

1451:                                             ; preds = %1450
  store i32 1, ptr %29, align 4, !tbaa !9
  br label %1478

1452:                                             ; preds = %1425, %1418
  br label %1453

1453:                                             ; preds = %1452
  %1454 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1455 unwind label %1242

1455:                                             ; preds = %1453
  br i1 %1454, label %1456, label %1475

1456:                                             ; preds = %1455
  %1457 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1458 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1457, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1459 unwind label %1242

1459:                                             ; preds = %1456
  %1460 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1458, ptr noundef @.str.151)
          to label %1461 unwind label %1242

1461:                                             ; preds = %1459
  %1462 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1460, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %1463 unwind label %1242

1463:                                             ; preds = %1461
  %1464 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1462, ptr noundef @.str.147)
          to label %1465 unwind label %1242

1465:                                             ; preds = %1463
  %1466 = load ptr, ptr %101, align 8, !tbaa !5
  %1467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1464, ptr noundef nonnull align 8 dereferenceable(32) %1466)
          to label %1468 unwind label %1242

1468:                                             ; preds = %1465
  %1469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1467, ptr noundef @.str.162)
          to label %1470 unwind label %1242

1470:                                             ; preds = %1468
  %1471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1469, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1472 unwind label %1242

1472:                                             ; preds = %1470
  %1473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1471, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1474 unwind label %1242

1474:                                             ; preds = %1472
  br label %1475

1475:                                             ; preds = %1474, %1455
  br label %1476

1476:                                             ; preds = %1475
  br label %1477

1477:                                             ; preds = %1476
  store i32 2, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %1482

1478:                                             ; preds = %1451
  br label %1479

1479:                                             ; preds = %1478, %1413
  br label %1480

1480:                                             ; preds = %1479, %1374
  br label %1481

1481:                                             ; preds = %1480, %1248
  store i32 0, ptr %35, align 4
  br label %1482

1482:                                             ; preds = %1481, %1477
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %103) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %86) #0
  call void @llvm.lifetime.end.p0(i64 144, ptr %86) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN13Monomorphiser9PopOnDropD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  %1483 = load i32, ptr %35, align 4
  switch i32 %1483, label %1495 [
    i32 0, label %1484
  ]

1484:                                             ; preds = %1482
  br label %1485

1485:                                             ; preds = %1484
  store i8 0, ptr %82, align 1, !tbaa !37
  br label %894, !llvm.loop !55

1486:                                             ; preds = %1242, %1241
  call void @llvm.lifetime.end.p0(i64 1, ptr %107) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %105) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #0
  br label %1487

1487:                                             ; preds = %1486, %1229
  call void @llvm.lifetime.end.p0(i64 24, ptr %104) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %103) #0
  br label %1488

1488:                                             ; preds = %1487, %1225
  call void @llvm.lifetime.end.p0(i64 24, ptr %103) #0
  br label %1489

1489:                                             ; preds = %1488, %1135
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #0
  br label %1490

1490:                                             ; preds = %1489, %1102
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %1491

1491:                                             ; preds = %1490, %1080, %1040, %1004
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %86) #0
  br label %1492

1492:                                             ; preds = %1491, %987
  call void @llvm.lifetime.end.p0(i64 144, ptr %86) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %85) #0
  br label %1493

1493:                                             ; preds = %1492, %983
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #0
  call void @_ZN13Monomorphiser9PopOnDropD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #0
  br label %1494

1494:                                             ; preds = %1493, %979
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #0
  br label %1497

1495:                                             ; preds = %1482, %898
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  %1496 = load i32, ptr %35, align 4
  switch i32 %1496, label %1500 [
    i32 56, label %1498
  ]

1497:                                             ; preds = %1494, %899
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #0
  br label %1560

1498:                                             ; preds = %1495
  br label %1499

1499:                                             ; preds = %1498
  store i8 0, ptr %82, align 1, !tbaa !37
  br label %886, !llvm.loop !56

1500:                                             ; preds = %1495, %889
  call void @llvm.lifetime.end.p0(i64 1, ptr %82) #0
  %1501 = load i32, ptr %35, align 4
  switch i32 %1501, label %1558 [
    i32 53, label %1502
  ]

1502:                                             ; preds = %1500
  br label %1556

1503:                                             ; preds = %833
  call void @llvm.lifetime.start.p0(i64 1, ptr %110) #0
  store i8 1, ptr %110, align 1, !tbaa !37
  br label %1504

1504:                                             ; preds = %1554, %1503
  %1505 = load i8, ptr %110, align 1, !tbaa !37, !range !39, !noundef !40
  %1506 = trunc i8 %1505 to i1
  br i1 %1506, label %1508, label %1507

1507:                                             ; preds = %1504
  store i32 89, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #0
  br label %1555

1508:                                             ; preds = %1504
  call void @llvm.lifetime.start.p0(i64 8, ptr %111) #0
  %1509 = load ptr, ptr %77, align 8, !tbaa !5
  %1510 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR12GenericBound15as_TypeEqualityEv(ptr noundef nonnull align 8 dereferenceable(168) %1509)
          to label %1511 unwind label %1517

1511:                                             ; preds = %1508
  store ptr %1510, ptr %111, align 8, !tbaa !5
  br label %1512

1512:                                             ; preds = %1551, %1511
  %1513 = load ptr, ptr %111, align 8, !tbaa !5
  %1514 = load i8, ptr %110, align 1, !tbaa !37, !range !39, !noundef !40
  %1515 = trunc i8 %1514 to i1
  br i1 %1515, label %1521, label %1516

1516:                                             ; preds = %1512
  store i32 92, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  br label %1553

1517:                                             ; preds = %1508
  %1518 = landingpad { ptr, i32 }
          cleanup
  %1519 = extractvalue { ptr, i32 } %1518, 0
  store ptr %1519, ptr %25, align 8
  %1520 = extractvalue { ptr, i32 } %1518, 1
  store i32 %1520, ptr %26, align 4
  br label %1552

1521:                                             ; preds = %1512
  br label %1522

1522:                                             ; preds = %1521
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #0
  store ptr @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_, ptr %112, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %113) #0
  %1523 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef nonnull align 8 dereferenceable(8) %1523)
          to label %1524 unwind label %1531

1524:                                             ; preds = %1522
  call void @llvm.lifetime.start.p0(i64 16, ptr %115) #0
  %1525 = getelementptr inbounds %class.anon.612, ptr %115, i32 0, i32 0
  store ptr %112, ptr %1525, align 8, !tbaa !5
  %1526 = getelementptr inbounds %class.anon.612, ptr %115, i32 0, i32 1
  %1527 = load ptr, ptr %111, align 8, !tbaa !5
  store ptr %1527, ptr %1526, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %114, ptr noundef nonnull align 8 dereferenceable(16) %115) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %113, ptr noundef %114)
          to label %1528 unwind label %1535

1528:                                             ; preds = %1524
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  %1529 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1529, ptr noundef @.str.70)
          to label %1530 unwind label %1540

1530:                                             ; preds = %1528
  invoke void @__cxa_throw(ptr %1529, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1867 unwind label %1544

1531:                                             ; preds = %1522
  %1532 = landingpad { ptr, i32 }
          cleanup
  %1533 = extractvalue { ptr, i32 } %1532, 0
  store ptr %1533, ptr %25, align 8
  %1534 = extractvalue { ptr, i32 } %1532, 1
  store i32 %1534, ptr %26, align 4
  br label %1539

1535:                                             ; preds = %1524
  %1536 = landingpad { ptr, i32 }
          cleanup
  %1537 = extractvalue { ptr, i32 } %1536, 0
  store ptr %1537, ptr %25, align 8
  %1538 = extractvalue { ptr, i32 } %1536, 1
  store i32 %1538, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %114) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %115) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %113) #0
  br label %1539

1539:                                             ; preds = %1535, %1531
  call void @llvm.lifetime.end.p0(i64 8, ptr %113) #0
  br label %1548

1540:                                             ; preds = %1528
  %1541 = landingpad { ptr, i32 }
          cleanup
  %1542 = extractvalue { ptr, i32 } %1541, 0
  store ptr %1542, ptr %25, align 8
  %1543 = extractvalue { ptr, i32 } %1541, 1
  store i32 %1543, ptr %26, align 4
  call void @__cxa_free_exception(ptr %1529) #0
  br label %1548

1544:                                             ; preds = %1530
  %1545 = landingpad { ptr, i32 }
          cleanup
  %1546 = extractvalue { ptr, i32 } %1545, 0
  store ptr %1546, ptr %25, align 8
  %1547 = extractvalue { ptr, i32 } %1545, 1
  store i32 %1547, ptr %26, align 4
  br label %1548

1548:                                             ; preds = %1544, %1540, %1539
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  br label %1552

1549:                                             ; No predecessors!
  br label %1550

1550:                                             ; preds = %1549
  br label %1551

1551:                                             ; preds = %1550
  store i8 0, ptr %110, align 1, !tbaa !37
  br label %1512, !llvm.loop !57

1552:                                             ; preds = %1548, %1517
  call void @llvm.lifetime.end.p0(i64 8, ptr %111) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %110) #0
  br label %1560

1553:                                             ; preds = %1516
  br label %1554

1554:                                             ; preds = %1553
  store i8 0, ptr %110, align 1, !tbaa !37
  br label %1504, !llvm.loop !58

1555:                                             ; preds = %1507
  br label %1556

1556:                                             ; preds = %1555, %1502, %884, %861, %833
  br label %1557

1557:                                             ; preds = %1556
  store i8 0, ptr %76, align 1, !tbaa !37
  br label %826, !llvm.loop !59

1558:                                             ; preds = %1500, %829
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  %1559 = load i32, ptr %35, align 4
  switch i32 %1559, label %1563 [
    i32 37, label %1561
  ]

1560:                                             ; preds = %1552, %1497, %876, %853, %834
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  br label %1849

1561:                                             ; preds = %1558
  br label %1562

1562:                                             ; preds = %1561
  store i8 0, ptr %76, align 1, !tbaa !37
  br label %820, !llvm.loop !60

1563:                                             ; preds = %1558, %823
  call void @llvm.lifetime.end.p0(i64 1, ptr %76) #0
  %1564 = load i32, ptr %35, align 4
  switch i32 %1564, label %1566 [
    i32 34, label %1565
  ]

1565:                                             ; preds = %1563
  store i32 0, ptr %35, align 4
  br label %1566

1566:                                             ; preds = %1565, %1563
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #0
  %1567 = load i32, ptr %35, align 4
  switch i32 %1567, label %1571 [
    i32 0, label %1568
  ]

1568:                                             ; preds = %1566
  br label %1569

1569:                                             ; preds = %1568
  %1570 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %73) #0
  br label %806

1571:                                             ; preds = %1566, %808
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %73) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #0
  %1572 = load i32, ptr %35, align 4
  switch i32 %1572, label %1848 [
    i32 32, label %1573
  ]

1573:                                             ; preds = %1571
  br label %1574

1574:                                             ; preds = %1573
  %1575 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %36, ptr noundef nonnull align 8 dereferenceable(24) %67)
          to label %1576 unwind label %761

1576:                                             ; preds = %1574
  br i1 %1575, label %723, label %1577, !llvm.loop !61

1577:                                             ; preds = %1576
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #0
  store i64 0, ptr %116, align 8, !tbaa !41
  br label %1578

1578:                                             ; preds = %1662, %1577
  %1579 = load i64, ptr %116, align 8, !tbaa !41
  %1580 = load ptr, ptr %19, align 8, !tbaa !5
  %1581 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1580, i32 0, i32 1
  %1582 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1581)
          to label %1583 unwind label %1586

1583:                                             ; preds = %1578
  %1584 = icmp ult i64 %1579, %1582
  br i1 %1584, label %1590, label %1585

1585:                                             ; preds = %1583
  store i32 97, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  br label %1666

1586:                                             ; preds = %1636, %1621, %1608, %1603, %1599, %1590, %1578
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %25, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %26, align 4
  br label %1665

1590:                                             ; preds = %1583
  %1591 = load ptr, ptr %19, align 8, !tbaa !5
  %1592 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1591, i32 0, i32 1
  %1593 = load i64, ptr %116, align 8, !tbaa !41
  %1594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1592, i64 noundef %1593)
          to label %1595 unwind label %1586

1595:                                             ; preds = %1590
  call void @llvm.lifetime.start.p0(i64 8, ptr %117) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1596 unwind label %1611

1596:                                             ; preds = %1595
  %1597 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1594, ptr noundef nonnull align 8 dereferenceable(8) %117)
          to label %1598 unwind label %1615

1598:                                             ; preds = %1596
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br i1 %1597, label %1599, label %1620

1599:                                             ; preds = %1598
  %1600 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 1
  %1601 = load i64, ptr %116, align 8, !tbaa !41
  %1602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1600, i64 noundef %1601)
          to label %1603 unwind label %1586

1603:                                             ; preds = %1599
  %1604 = load ptr, ptr %19, align 8, !tbaa !5
  %1605 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1604, i32 0, i32 1
  %1606 = load i64, ptr %116, align 8, !tbaa !41
  %1607 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1605, i64 noundef %1606)
          to label %1608 unwind label %1586

1608:                                             ; preds = %1603
  %1609 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1607, ptr noundef nonnull align 8 dereferenceable(8) %1602)
          to label %1610 unwind label %1586

1610:                                             ; preds = %1608
  br label %1620

1611:                                             ; preds = %1595
  %1612 = landingpad { ptr, i32 }
          cleanup
  %1613 = extractvalue { ptr, i32 } %1612, 0
  store ptr %1613, ptr %25, align 8
  %1614 = extractvalue { ptr, i32 } %1612, 1
  store i32 %1614, ptr %26, align 4
  br label %1619

1615:                                             ; preds = %1596
  %1616 = landingpad { ptr, i32 }
          cleanup
  %1617 = extractvalue { ptr, i32 } %1616, 0
  store ptr %1617, ptr %25, align 8
  %1618 = extractvalue { ptr, i32 } %1616, 1
  store i32 %1618, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %117) #0
  br label %1619

1619:                                             ; preds = %1615, %1611
  call void @llvm.lifetime.end.p0(i64 8, ptr %117) #0
  br label %1665

1620:                                             ; preds = %1610, %1598
  br label %1621

1621:                                             ; preds = %1620
  %1622 = load ptr, ptr %19, align 8, !tbaa !5
  %1623 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1622, i32 0, i32 1
  %1624 = load i64, ptr %116, align 8, !tbaa !41
  %1625 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1623, i64 noundef %1624)
          to label %1626 unwind label %1586

1626:                                             ; preds = %1621
  call void @llvm.lifetime.start.p0(i64 8, ptr %118) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %1627 unwind label %1637

1627:                                             ; preds = %1626
  %1628 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1625, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %1629 unwind label %1641

1629:                                             ; preds = %1627
  %1630 = xor i1 %1628, true
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  br i1 %1630, label %1631, label %1659

1631:                                             ; preds = %1629
  call void @llvm.lifetime.start.p0(i64 8, ptr %119) #0
  %1632 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(8) %1632)
          to label %1633 unwind label %1646

1633:                                             ; preds = %1631
  call void @llvm.lifetime.start.p0(i64 1, ptr %121) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %120, ptr noundef nonnull align 1 dereferenceable(1) %121) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef %120)
          to label %1634 unwind label %1650

1634:                                             ; preds = %1633
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  %1635 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1635, ptr noundef @.str.8)
          to label %1636 unwind label %1655

1636:                                             ; preds = %1634
  invoke void @__cxa_throw(ptr %1635, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1867 unwind label %1586

1637:                                             ; preds = %1626
  %1638 = landingpad { ptr, i32 }
          cleanup
  %1639 = extractvalue { ptr, i32 } %1638, 0
  store ptr %1639, ptr %25, align 8
  %1640 = extractvalue { ptr, i32 } %1638, 1
  store i32 %1640, ptr %26, align 4
  br label %1645

1641:                                             ; preds = %1627
  %1642 = landingpad { ptr, i32 }
          cleanup
  %1643 = extractvalue { ptr, i32 } %1642, 0
  store ptr %1643, ptr %25, align 8
  %1644 = extractvalue { ptr, i32 } %1642, 1
  store i32 %1644, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  br label %1645

1645:                                             ; preds = %1641, %1637
  call void @llvm.lifetime.end.p0(i64 8, ptr %118) #0
  br label %1665

1646:                                             ; preds = %1631
  %1647 = landingpad { ptr, i32 }
          cleanup
  %1648 = extractvalue { ptr, i32 } %1647, 0
  store ptr %1648, ptr %25, align 8
  %1649 = extractvalue { ptr, i32 } %1647, 1
  store i32 %1649, ptr %26, align 4
  br label %1654

1650:                                             ; preds = %1633
  %1651 = landingpad { ptr, i32 }
          cleanup
  %1652 = extractvalue { ptr, i32 } %1651, 0
  store ptr %1652, ptr %25, align 8
  %1653 = extractvalue { ptr, i32 } %1651, 1
  store i32 %1653, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %120) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %121) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %119) #0
  br label %1654

1654:                                             ; preds = %1650, %1646
  call void @llvm.lifetime.end.p0(i64 8, ptr %119) #0
  br label %1665

1655:                                             ; preds = %1634
  %1656 = landingpad { ptr, i32 }
          cleanup
  %1657 = extractvalue { ptr, i32 } %1656, 0
  store ptr %1657, ptr %25, align 8
  %1658 = extractvalue { ptr, i32 } %1656, 1
  store i32 %1658, ptr %26, align 4
  call void @__cxa_free_exception(ptr %1635) #0
  br label %1665

1659:                                             ; preds = %1629
  br label %1660

1660:                                             ; preds = %1659
  br label %1661

1661:                                             ; preds = %1660
  br label %1662

1662:                                             ; preds = %1661
  %1663 = load i64, ptr %116, align 8, !tbaa !41
  %1664 = add i64 %1663, 1
  store i64 %1664, ptr %116, align 8, !tbaa !41
  br label %1578, !llvm.loop !62

1665:                                             ; preds = %1655, %1654, %1645, %1619, %1586
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  br label %1849

1666:                                             ; preds = %1585
  call void @llvm.lifetime.start.p0(i64 8, ptr %122) #0
  store i64 0, ptr %122, align 8, !tbaa !41
  br label %1667

1667:                                             ; preds = %1751, %1666
  %1668 = load i64, ptr %122, align 8, !tbaa !41
  %1669 = load ptr, ptr %19, align 8, !tbaa !5
  %1670 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1669, i32 0, i32 2
  %1671 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1670)
          to label %1672 unwind label %1675

1672:                                             ; preds = %1667
  %1673 = icmp ult i64 %1668, %1671
  br i1 %1673, label %1679, label %1674

1674:                                             ; preds = %1672
  store i32 102, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  br label %1755

1675:                                             ; preds = %1725, %1710, %1697, %1692, %1688, %1679, %1667
  %1676 = landingpad { ptr, i32 }
          cleanup
  %1677 = extractvalue { ptr, i32 } %1676, 0
  store ptr %1677, ptr %25, align 8
  %1678 = extractvalue { ptr, i32 } %1676, 1
  store i32 %1678, ptr %26, align 4
  br label %1754

1679:                                             ; preds = %1672
  %1680 = load ptr, ptr %19, align 8, !tbaa !5
  %1681 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1680, i32 0, i32 2
  %1682 = load i64, ptr %122, align 8, !tbaa !41
  %1683 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1681, i64 noundef %1682)
          to label %1684 unwind label %1675

1684:                                             ; preds = %1679
  call void @llvm.lifetime.start.p0(i64 24, ptr %123) #0
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123)
          to label %1685 unwind label %1700

1685:                                             ; preds = %1684
  %1686 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %1683, ptr noundef nonnull align 8 dereferenceable(24) %123)
          to label %1687 unwind label %1704

1687:                                             ; preds = %1685
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %123) #0
  br i1 %1686, label %1688, label %1709

1688:                                             ; preds = %1687
  %1689 = getelementptr inbounds %"struct.HIR::PathParams", ptr %36, i32 0, i32 2
  %1690 = load i64, ptr %122, align 8, !tbaa !41
  %1691 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1689, i64 noundef %1690)
          to label %1692 unwind label %1675

1692:                                             ; preds = %1688
  %1693 = load ptr, ptr %19, align 8, !tbaa !5
  %1694 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1693, i32 0, i32 2
  %1695 = load i64, ptr %122, align 8, !tbaa !41
  %1696 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1694, i64 noundef %1695)
          to label %1697 unwind label %1675

1697:                                             ; preds = %1692
  %1698 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %1696, ptr noundef nonnull align 8 dereferenceable(24) %1691)
          to label %1699 unwind label %1675

1699:                                             ; preds = %1697
  br label %1709

1700:                                             ; preds = %1684
  %1701 = landingpad { ptr, i32 }
          cleanup
  %1702 = extractvalue { ptr, i32 } %1701, 0
  store ptr %1702, ptr %25, align 8
  %1703 = extractvalue { ptr, i32 } %1701, 1
  store i32 %1703, ptr %26, align 4
  br label %1708

1704:                                             ; preds = %1685
  %1705 = landingpad { ptr, i32 }
          cleanup
  %1706 = extractvalue { ptr, i32 } %1705, 0
  store ptr %1706, ptr %25, align 8
  %1707 = extractvalue { ptr, i32 } %1705, 1
  store i32 %1707, ptr %26, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #0
  br label %1708

1708:                                             ; preds = %1704, %1700
  call void @llvm.lifetime.end.p0(i64 24, ptr %123) #0
  br label %1754

1709:                                             ; preds = %1699, %1687
  br label %1710

1710:                                             ; preds = %1709
  %1711 = load ptr, ptr %19, align 8, !tbaa !5
  %1712 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1711, i32 0, i32 2
  %1713 = load i64, ptr %122, align 8, !tbaa !41
  %1714 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1712, i64 noundef %1713)
          to label %1715 unwind label %1675

1715:                                             ; preds = %1710
  call void @llvm.lifetime.start.p0(i64 24, ptr %124) #0
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %1716 unwind label %1726

1716:                                             ; preds = %1715
  %1717 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %1714, ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %1718 unwind label %1730

1718:                                             ; preds = %1716
  %1719 = xor i1 %1717, true
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #0
  br i1 %1719, label %1720, label %1748

1720:                                             ; preds = %1718
  call void @llvm.lifetime.start.p0(i64 8, ptr %125) #0
  %1721 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef nonnull align 8 dereferenceable(8) %1721)
          to label %1722 unwind label %1735

1722:                                             ; preds = %1720
  call void @llvm.lifetime.start.p0(i64 1, ptr %127) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %126, ptr noundef nonnull align 1 dereferenceable(1) %127) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %125, ptr noundef %126)
          to label %1723 unwind label %1739

1723:                                             ; preds = %1722
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  %1724 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1724, ptr noundef @.str.8)
          to label %1725 unwind label %1744

1725:                                             ; preds = %1723
  invoke void @__cxa_throw(ptr %1724, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %1867 unwind label %1675

1726:                                             ; preds = %1715
  %1727 = landingpad { ptr, i32 }
          cleanup
  %1728 = extractvalue { ptr, i32 } %1727, 0
  store ptr %1728, ptr %25, align 8
  %1729 = extractvalue { ptr, i32 } %1727, 1
  store i32 %1729, ptr %26, align 4
  br label %1734

1730:                                             ; preds = %1716
  %1731 = landingpad { ptr, i32 }
          cleanup
  %1732 = extractvalue { ptr, i32 } %1731, 0
  store ptr %1732, ptr %25, align 8
  %1733 = extractvalue { ptr, i32 } %1731, 1
  store i32 %1733, ptr %26, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %124) #0
  br label %1734

1734:                                             ; preds = %1730, %1726
  call void @llvm.lifetime.end.p0(i64 24, ptr %124) #0
  br label %1754

1735:                                             ; preds = %1720
  %1736 = landingpad { ptr, i32 }
          cleanup
  %1737 = extractvalue { ptr, i32 } %1736, 0
  store ptr %1737, ptr %25, align 8
  %1738 = extractvalue { ptr, i32 } %1736, 1
  store i32 %1738, ptr %26, align 4
  br label %1743

1739:                                             ; preds = %1722
  %1740 = landingpad { ptr, i32 }
          cleanup
  %1741 = extractvalue { ptr, i32 } %1740, 0
  store ptr %1741, ptr %25, align 8
  %1742 = extractvalue { ptr, i32 } %1740, 1
  store i32 %1742, ptr %26, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %126) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %127) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #0
  br label %1743

1743:                                             ; preds = %1739, %1735
  call void @llvm.lifetime.end.p0(i64 8, ptr %125) #0
  br label %1754

1744:                                             ; preds = %1723
  %1745 = landingpad { ptr, i32 }
          cleanup
  %1746 = extractvalue { ptr, i32 } %1745, 0
  store ptr %1746, ptr %25, align 8
  %1747 = extractvalue { ptr, i32 } %1745, 1
  store i32 %1747, ptr %26, align 4
  call void @__cxa_free_exception(ptr %1724) #0
  br label %1754

1748:                                             ; preds = %1718
  br label %1749

1749:                                             ; preds = %1748
  br label %1750

1750:                                             ; preds = %1749
  br label %1751

1751:                                             ; preds = %1750
  %1752 = load i64, ptr %122, align 8, !tbaa !41
  %1753 = add i64 %1752, 1
  store i64 %1753, ptr %122, align 8, !tbaa !41
  br label %1667, !llvm.loop !63

1754:                                             ; preds = %1744, %1743, %1734, %1708, %1675
  call void @llvm.lifetime.end.p0(i64 8, ptr %122) #0
  br label %1849

1755:                                             ; preds = %1674
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #0
  store i64 0, ptr %128, align 8, !tbaa !41
  br label %1756

1756:                                             ; preds = %1840, %1755
  %1757 = load i64, ptr %128, align 8, !tbaa !41
  %1758 = load ptr, ptr %16, align 8, !tbaa !5
  %1759 = getelementptr inbounds %"class.HIR::GenericParams", ptr %1758, i32 0, i32 0
  %1760 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1759) #0
  %1761 = icmp ult i64 %1757, %1760
  br i1 %1761, label %1763, label %1762

1762:                                             ; preds = %1756
  store i32 107, ptr %35, align 4
  br label %1843

1763:                                             ; preds = %1756
  %1764 = load ptr, ptr %16, align 8, !tbaa !5
  %1765 = getelementptr inbounds %"class.HIR::GenericParams", ptr %1764, i32 0, i32 0
  %1766 = load i64, ptr %128, align 8, !tbaa !41
  %1767 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1765, i64 noundef %1766)
          to label %1768 unwind label %1813

1768:                                             ; preds = %1763
  %1769 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %1767, i32 0, i32 2
  %1770 = load i8, ptr %1769, align 8, !tbaa !64, !range !39, !noundef !40
  %1771 = trunc i8 %1770 to i1
  br i1 %1771, label %1772, label %1839

1772:                                             ; preds = %1768
  %1773 = load ptr, ptr %19, align 8, !tbaa !5
  %1774 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1773, i32 0, i32 1
  %1775 = load i64, ptr %128, align 8, !tbaa !41
  %1776 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1774, i64 noundef %1775)
          to label %1777 unwind label %1813

1777:                                             ; preds = %1772
  call void @llvm.lifetime.start.p0(i64 8, ptr %129) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1778 unwind label %1817

1778:                                             ; preds = %1777
  %1779 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1776, ptr noundef nonnull align 8 dereferenceable(8) %129)
          to label %1780 unwind label %1821

1780:                                             ; preds = %1778
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  br i1 %1779, label %1781, label %1837

1781:                                             ; preds = %1780
  call void @llvm.lifetime.start.p0(i64 4, ptr %130) #0
  %1782 = load ptr, ptr %12, align 8, !tbaa !5
  %1783 = load ptr, ptr %19, align 8, !tbaa !5
  %1784 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1783, i32 0, i32 1
  %1785 = load i64, ptr %128, align 8, !tbaa !41
  %1786 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1784, i64 noundef %1785)
          to label %1787 unwind label %1826

1787:                                             ; preds = %1781
  %1788 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %131, ptr noundef nonnull align 8 dereferenceable(8) %1782, ptr noundef nonnull align 8 dereferenceable(8) %1786)
          to label %1789 unwind label %1826

1789:                                             ; preds = %1787
  store i32 %1788, ptr %130, align 4, !tbaa !9
  %1790 = load i32, ptr %130, align 4, !tbaa !9
  %1791 = icmp eq i32 %1790, 2
  br i1 %1791, label %1792, label %1833

1792:                                             ; preds = %1789
  br label %1793

1793:                                             ; preds = %1792
  %1794 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1795 unwind label %1826

1795:                                             ; preds = %1793
  br i1 %1794, label %1796, label %1830

1796:                                             ; preds = %1795
  %1797 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %1798 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1797, ptr noundef @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %1799 unwind label %1826

1799:                                             ; preds = %1796
  %1800 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1798, ptr noundef @.str.163)
          to label %1801 unwind label %1826

1801:                                             ; preds = %1799
  %1802 = load ptr, ptr %19, align 8, !tbaa !5
  %1803 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1802, i32 0, i32 1
  %1804 = load i64, ptr %128, align 8, !tbaa !41
  %1805 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1803, i64 noundef %1804)
          to label %1806 unwind label %1826

1806:                                             ; preds = %1801
  %1807 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1800, ptr noundef nonnull align 8 dereferenceable(8) %1805)
          to label %1808 unwind label %1826

1808:                                             ; preds = %1806
  %1809 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1807, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1810 unwind label %1826

1810:                                             ; preds = %1808
  %1811 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1809, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1812 unwind label %1826

1812:                                             ; preds = %1810
  br label %1830

1813:                                             ; preds = %1772, %1763
  %1814 = landingpad { ptr, i32 }
          cleanup
  %1815 = extractvalue { ptr, i32 } %1814, 0
  store ptr %1815, ptr %25, align 8
  %1816 = extractvalue { ptr, i32 } %1814, 1
  store i32 %1816, ptr %26, align 4
  br label %1845

1817:                                             ; preds = %1777
  %1818 = landingpad { ptr, i32 }
          cleanup
  %1819 = extractvalue { ptr, i32 } %1818, 0
  store ptr %1819, ptr %25, align 8
  %1820 = extractvalue { ptr, i32 } %1818, 1
  store i32 %1820, ptr %26, align 4
  br label %1825

1821:                                             ; preds = %1778
  %1822 = landingpad { ptr, i32 }
          cleanup
  %1823 = extractvalue { ptr, i32 } %1822, 0
  store ptr %1823, ptr %25, align 8
  %1824 = extractvalue { ptr, i32 } %1822, 1
  store i32 %1824, ptr %26, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  br label %1825

1825:                                             ; preds = %1821, %1817
  call void @llvm.lifetime.end.p0(i64 8, ptr %129) #0
  br label %1845

1826:                                             ; preds = %1810, %1808, %1806, %1801, %1799, %1796, %1793, %1787, %1781
  %1827 = landingpad { ptr, i32 }
          cleanup
  %1828 = extractvalue { ptr, i32 } %1827, 0
  store ptr %1828, ptr %25, align 8
  %1829 = extractvalue { ptr, i32 } %1827, 1
  store i32 %1829, ptr %26, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #0
  br label %1845

1830:                                             ; preds = %1812, %1795
  br label %1831

1831:                                             ; preds = %1830
  br label %1832

1832:                                             ; preds = %1831
  store i32 2, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %1834

1833:                                             ; preds = %1789
  store i32 0, ptr %35, align 4
  br label %1834

1834:                                             ; preds = %1833, %1832
  call void @llvm.lifetime.end.p0(i64 4, ptr %130) #0
  %1835 = load i32, ptr %35, align 4
  switch i32 %1835, label %1843 [
    i32 0, label %1836
  ]

1836:                                             ; preds = %1834
  br label %1838

1837:                                             ; preds = %1780
  br label %1838

1838:                                             ; preds = %1837, %1836
  br label %1839

1839:                                             ; preds = %1838, %1768
  br label %1840

1840:                                             ; preds = %1839
  %1841 = load i64, ptr %128, align 8, !tbaa !41
  %1842 = add i64 %1841, 1
  store i64 %1842, ptr %128, align 8, !tbaa !41
  br label %1756, !llvm.loop !68

1843:                                             ; preds = %1834, %1762
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  %1844 = load i32, ptr %35, align 4
  switch i32 %1844, label %1848 [
    i32 107, label %1846
  ]

1845:                                             ; preds = %1826, %1825, %1813
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #0
  br label %1849

1846:                                             ; preds = %1843
  %1847 = load i32, ptr %29, align 4, !tbaa !9
  store i32 %1847, ptr %10, align 4
  store i32 1, ptr %35, align 4
  br label %1848

1848:                                             ; preds = %1846, %1843, %1571
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #0
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %63) #0
  call void @llvm.lifetime.end.p0(i64 136, ptr %63) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #0
  br label %1856

1849:                                             ; preds = %1845, %1754, %1665, %1560, %817, %786, %785, %761
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %67) #0
  br label %1850

1850:                                             ; preds = %1849, %757
  call void @llvm.lifetime.end.p0(i64 24, ptr %67) #0
  call void @llvm.lifetime.end.p0(i64 4, ptr %66) #0
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %63) #0
  br label %1851

1851:                                             ; preds = %1850, %756, %744
  call void @llvm.lifetime.end.p0(i64 136, ptr %63) #0
  br label %1852

1852:                                             ; preds = %1851, %740
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #0
  br label %1853

1853:                                             ; preds = %1852, %689, %668, %558, %464, %411, %367
  call void @llvm.lifetime.end.p0(i64 1, ptr %38) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  br label %1854

1854:                                             ; preds = %1853, %334
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %36) #0
  br label %1855

1855:                                             ; preds = %1854, %330
  call void @llvm.lifetime.end.p0(i64 24, ptr %36) #0
  br label %1858

1856:                                             ; preds = %1848, %293, %258
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #0
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #0
  %1857 = load i32, ptr %10, align 4
  ret i32 %1857

1858:                                             ; preds = %1855, %287, %261, %242
  call void @llvm.lifetime.end.p0(i64 4, ptr %29) #0
  br label %1859

1859:                                             ; preds = %1858, %238
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %27) #0
  br label %1860

1860:                                             ; preds = %1859, %234, %230
  call void @llvm.lifetime.end.p0(i64 24, ptr %27) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %20) #0
  br label %1861

1861:                                             ; preds = %1860, %226
  call void @llvm.lifetime.end.p0(i64 40, ptr %20) #0
  br label %1862

1862:                                             ; preds = %1861
  %1863 = load ptr, ptr %25, align 8
  %1864 = load i32, ptr %26, align 4
  %1865 = insertvalue { ptr, i32 } poison, ptr %1863, 0
  %1866 = insertvalue { ptr, i32 } %1865, i32 %1864, 1
  resume { ptr, i32 } %1866

1867:                                             ; preds = %1725, %1636, %1530, %776
  unreachable
}

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

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

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

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

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

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

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

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

declare noundef i32 @_ZNK3HIR7TypeRef24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(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), ptr noundef nonnull align 8 dereferenceable(8)) #2

declare noundef i32 @_ZNK3HIR10PathParams24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA2_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(2)) #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA4_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(4)) #3

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef, i32 noundef) unnamed_addr #4 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168)) #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13Monomorphiser8push_hrbERKN3HIR13GenericParamsE(ptr dead_on_unwind noalias writable sret(%"class.Monomorphiser::PopOnDrop") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


; 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::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::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.HIR::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 }
%"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.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.607 = type { ptr, ptr, ptr, ptr }
%class.anon.608 = type { ptr }
%class.GetParams = type { %"class.HIR::MatchGenerics", %struct.Span, ptr }
%"class.HIR::MatchGenerics" = type { ptr }
%struct.Span = type { ptr }
%class.RcString = type { ptr }
%"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 }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.143 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.143 = type { i64, [8 x i8] }
%"class.std::__cxx11::basic_ostringstream" = type { %"class.std::basic_ostream.base", %"class.std::__cxx11::basic_stringbuf", %"class.std::basic_ios" }
%"class.std::basic_ostream.base" = type { ptr }
%"class.std::__cxx11::basic_stringbuf" = type { %"class.std::basic_streambuf", i32, %"class.std::__cxx11::basic_string" }
%"class.std::basic_streambuf" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, %"class.std::locale" }
%"class.std::locale" = type { ptr }
%"class.std::basic_ios" = type { %"class.std::ios_base", ptr, i8, i8, ptr, ptr, ptr, ptr }
%"class.std::ios_base" = type { ptr, i64, i64, i32, i32, i32, ptr, %"struct.std::ios_base::_Words", [8 x %"struct.std::ios_base::_Words"], i32, ptr, %"class.std::locale" }
%"struct.std::ios_base::_Words" = type { ptr, i64 }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%struct.Matcher = type { %"class.HIR::MatchGenerics", %class.Monomorphiser, %struct.Span, ptr, %class.RcString, ptr }
%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.anon.609 = type { i8 }
%"class.__gnu_cxx::__normal_iterator.443" = type { ptr }
%"class.Monomorphiser::PopOnDrop" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.611 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.612 = type { ptr, ptr }
%class.anon.613 = type { i8 }
%class.anon.615 = type { i8 }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.1 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.13 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_ = external hidden unnamed_addr constant [18 x i8], align 1
@.str.134 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.135 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.136 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.137 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter = external hidden global i64, align 8
@.str.138 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.139 = external hidden unnamed_addr constant [2 x i8], align 1
@.str.140 = external hidden unnamed_addr constant [29 x i8], align 1
@.str.141 = external hidden unnamed_addr constant [30 x i8], align 1
@.str.142 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.143 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.144 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.145 = external hidden unnamed_addr constant [9 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_ = external hidden unnamed_addr constant [248 x i8], align 1
@.str.146 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.147 = external hidden unnamed_addr constant [4 x i8], align 1
@_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params = external hidden global %"class.HIR::GenericParams", align 8
@_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params = external hidden global i64, align 8
@.str.148 = external hidden unnamed_addr constant [14 x i8], align 1
@.str.149 = external hidden unnamed_addr constant [53 x i8], align 1
@.str.150 = external hidden unnamed_addr constant [48 x i8], align 1
@.str.151 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.152 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.153 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.154 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.155 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.156 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.157 = external hidden unnamed_addr constant [18 x i8], align 1
@.str.158 = external hidden unnamed_addr constant [31 x i8], align 1
@.str.159 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.160 = external hidden unnamed_addr constant [37 x i8], align 1
@.str.161 = external hidden unnamed_addr constant [33 x i8], align 1
@.str.162 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.163 = external hidden unnamed_addr constant [26 x i8], align 1

; Function Attrs: nofree nounwind
declare i32 @__cxa_atexit(ptr, ptr, ptr) local_unnamed_addr #0

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_12ConstGenericE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

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

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

declare void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), i1 noundef zeroext) unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #6 align 2

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

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

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

; Function Attrs: nofree nounwind
declare i32 @__cxa_guard_acquire(ptr) local_unnamed_addr #0

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

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_release(ptr) local_unnamed_addr #0

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

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

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

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #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 #4 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

declare void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef) unnamed_addr #2

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

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

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

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

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

declare void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144), i1 noundef zeroext, i1 noundef zeroext) local_unnamed_addr #2

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_(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 %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(96) %5, ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(24) %8) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca %class.TraceLog, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.607, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.608, align 8
  %15 = alloca %class.GetParams, align 8
  %16 = alloca %struct.Span, align 8
  %17 = alloca i32, align 4
  %18 = alloca i32, align 4
  %19 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %20 = alloca i32, align 4
  %21 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %22 = alloca %"struct.HIR::PathParams", align 8
  %23 = alloca %class.RcString, align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"class.HIR::ConstGeneric", align 8
  %26 = alloca %class.RcString, align 8
  %27 = alloca %"class.std::__cxx11::basic_string", align 8
  %28 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.HIR::TypeRef", align 8
  %32 = alloca %class.RcString, align 8
  %33 = alloca %"class.HIR::ConstGeneric", align 8
  %34 = alloca %"class.HIR::ConstGeneric", align 8
  %35 = alloca %"struct.HIR::GenericRef", align 8
  %36 = alloca %class.RcString, align 8
  %37 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %38 = alloca %struct.Matcher, align 8
  %39 = alloca %struct.Span, align 8
  %40 = alloca %class.RcString, align 8
  %41 = alloca %"struct.HIR::PathParams", align 8
  %42 = alloca %struct.Span, align 8
  %43 = alloca %"class.std::function", align 8
  %44 = alloca %class.anon.609, align 1
  %45 = alloca %"struct.HIR::PathParams", align 8
  %46 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %47 = alloca %"class.__gnu_cxx::__normal_iterator.443", align 8
  %48 = alloca %"class.Monomorphiser::PopOnDrop", align 8
  %49 = alloca %"class.HIR::TypeRef", align 8
  %50 = alloca %"class.HIR::TraitPath", align 8
  %51 = alloca %"class.HIR::TypeRef", align 8
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca %"class.HIR::TypeRef", align 8
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %56 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %57 = alloca %"class.HIR::TypeRef", align 8
  %58 = alloca %"class.HIR::TypeRef", align 8
  %59 = alloca i8, align 1
  %60 = alloca %"struct.HIR::PathParams", align 8
  %61 = alloca %"struct.HIR::PathParams", align 8
  %62 = alloca i32, align 4
  %63 = alloca i8, align 1
  %64 = alloca %"class.std::function.444", align 8
  %65 = alloca %class.anon.611, align 8
  %66 = alloca ptr, align 8
  %67 = alloca %struct.Span, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.612, align 8
  %70 = alloca %"class.HIR::TypeRef", align 8
  %71 = alloca %"class.HIR::TypeRef", align 8
  %72 = alloca %struct.Span, align 8
  %73 = alloca %"class.std::function", align 8
  %74 = alloca %class.anon.613, align 1
  %75 = alloca %"class.HIR::ConstGeneric", align 8
  %76 = alloca %"class.HIR::ConstGeneric", align 8
  %77 = alloca %struct.Span, align 8
  %78 = alloca %"class.std::function", align 8
  %79 = alloca %class.anon.615, align 1
  %80 = alloca %"class.HIR::TypeRef", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %10) #9
  %81 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %82 = select i1 %81, ptr @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_, ptr null
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %12) #9
  store ptr %5, ptr %12, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %12, i64 8
  store ptr %2, ptr %83, align 8, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %12, i64 16
  store ptr %6, ptr %84, align 8, !tbaa !5
  %85 = getelementptr inbounds i8, ptr %12, i64 24
  store ptr %7, ptr %85, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(32) %12)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  store ptr %8, ptr %14, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEES5_(ptr noundef nonnull align 8 dereferenceable(40) %10, ptr noundef %82, ptr noundef nonnull %11, ptr noundef nonnull %13)
          to label %86 unwind label %138

86:                                               ; preds = %9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %87 unwind label %140

87:                                               ; preds = %86
  invoke void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsC2ES0_SH_(ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull %16, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %88 unwind label %142

88:                                               ; preds = %87
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  %89 = getelementptr inbounds i8, ptr %5, i64 24
  %90 = call noundef i64 @_ZNKSt6vectorIN3HIR11LifetimeDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %89) #9
  invoke void @_ZN10ThinVectorIN3HIR11LifetimeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %8, i64 noundef %90)
          to label %91 unwind label %144

91:                                               ; preds = %88
  %92 = getelementptr inbounds i8, ptr %8, i64 8
  %93 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %93)
          to label %94 unwind label %144

94:                                               ; preds = %91
  %95 = getelementptr inbounds i8, ptr %8, i64 16
  %96 = getelementptr inbounds i8, ptr %5, i64 48
  %97 = call noundef i64 @_ZNKSt6vectorIN3HIR13ValueParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #9
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %97)
          to label %98 unwind label %144

98:                                               ; preds = %94
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %17) #9
  store i32 0, ptr %17, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %18) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %19) #9
  %99 = getelementptr inbounds i8, ptr %0, i64 224
  %100 = load ptr, ptr %99, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %19, ptr noundef nonnull align 8 dereferenceable(49) %100)
          to label %101 unwind label %146

101:                                              ; preds = %98
  %102 = invoke noundef i32 @_ZNK3HIR7TypeRef24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %19, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %103 unwind label %146

103:                                              ; preds = %101
  store i32 %102, ptr %18, align 4, !tbaa !9
  %104 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %18)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  %.not = icmp eq ptr %3, null
  br i1 %.not, label %152, label %105

105:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %20) #9
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %21) #9
  %106 = load ptr, ptr %99, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %21, ptr noundef nonnull align 8 dereferenceable(49) %106)
          to label %107 unwind label %148

107:                                              ; preds = %105
  %108 = invoke noundef i32 @_ZNK3HIR10PathParams24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(24) %6, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %109 unwind label %148

109:                                              ; preds = %107
  store i32 %108, ptr %20, align 4, !tbaa !9
  %110 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %17, ptr noundef nonnull align 4 dereferenceable(4) %20)
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #9
  %111 = load i32, ptr %17, align 4, !tbaa !9
  %.not293 = icmp eq i32 %111, 2
  br i1 %.not293, label %112, label %.critedge

112:                                              ; preds = %109
  %113 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %114 unwind label %150

114:                                              ; preds = %112
  br i1 %113, label %115, label %938

115:                                              ; preds = %114
  %116 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %117 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %116, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %118 unwind label %150

118:                                              ; preds = %115
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %117, ptr noundef nonnull @.str.134)
          to label %120 unwind label %150

120:                                              ; preds = %118
  %121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %119, ptr noundef nonnull align 8 dereferenceable(24) %6)
          to label %122 unwind label %150

122:                                              ; preds = %120
  %123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %121, ptr noundef nonnull @.str.36)
          to label %124 unwind label %150

124:                                              ; preds = %122
  %125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %123, ptr noundef nonnull align 8 dereferenceable(8) %7)
          to label %126 unwind label %150

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

128:                                              ; preds = %126
  %129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %127, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %130 unwind label %150

130:                                              ; preds = %128
  %131 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull @.str.36)
          to label %132 unwind label %150

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

134:                                              ; preds = %132
  %135 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %133, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %136 unwind label %150

136:                                              ; preds = %134
  %137 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %135, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %938 unwind label %150

138:                                              ; preds = %9
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %12) #9
  br label %942

140:                                              ; preds = %86
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %941

142:                                              ; preds = %87
  %143 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #9
  br label %941

144:                                              ; preds = %94, %91, %88
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %940

146:                                              ; preds = %101, %98
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %19) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %18) #9
  br label %939

148:                                              ; preds = %107, %105
  %149 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %21) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %20) #9
  br label %939

150:                                              ; preds = %136, %134, %132, %130, %128, %126, %124, %122, %120, %118, %115, %112
  %151 = landingpad { ptr, i32 }
          cleanup
  br label %939

152:                                              ; preds = %103
  %153 = load i32, ptr %17, align 4, !tbaa !9
  %154 = icmp eq i32 %153, 2
  br i1 %154, label %155, label %.critedge

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

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

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

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

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

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

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

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

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

173:                                              ; preds = %186, %184, %182, %180, %177, %.critedge, %171, %169, %167, %165, %163, %161, %158, %155
  %174 = landingpad { ptr, i32 }
          cleanup
  br label %939

.critedge:                                        ; preds = %109, %152
  %175 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %176 unwind label %173

176:                                              ; preds = %.critedge
  br i1 %175, label %177, label %188

177:                                              ; preds = %176
  %178 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %178, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %180 unwind label %173

180:                                              ; preds = %177
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @.str.137)
          to label %182 unwind label %173

182:                                              ; preds = %180
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull align 8 dereferenceable(24) %8)
          to label %184 unwind label %173

184:                                              ; preds = %182
  %185 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %183, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %186 unwind label %173

186:                                              ; preds = %184
  %187 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %185, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %188 unwind label %173

188:                                              ; preds = %186, %176
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %189 unwind label %194

189:                                              ; preds = %188
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  call void @_ZN8RcStringC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23)
  %190 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %191 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %.not294461 = icmp eq ptr %190, %191
  br i1 %.not294461, label %._crit_edge, label %.lr.ph

._crit_edge:                                      ; preds = %198, %189
  %.0271.lcssa = phi i1 [ false, %189 ], [ %spec.select, %198 ]
  %192 = call noundef ptr @_ZN10ThinVectorIN3HIR12ConstGenericEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
  %193 = invoke noundef ptr @_ZN10ThinVectorIN3HIR12ConstGenericEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %.preheader414 unwind label %205

.preheader414:                                    ; preds = %._crit_edge
  %.not295464 = icmp eq ptr %192, %193
  br i1 %.not295464, label %._crit_edge468, label %.lr.ph467

194:                                              ; preds = %188
  %195 = landingpad { ptr, i32 }
          cleanup
  br label %937

.lr.ph:                                           ; preds = %189, %198
  %.0271463 = phi i1 [ %spec.select, %198 ], [ false, %189 ]
  %.0275462 = phi ptr [ %199, %198 ], [ %190, %189 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %196 unwind label %200

196:                                              ; preds = %.lr.ph
  %197 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %.0275462, ptr noundef nonnull align 8 dereferenceable(8) %24)
          to label %198 unwind label %202

198:                                              ; preds = %196
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  %spec.select = select i1 %197, i1 true, i1 %.0271463
  %199 = getelementptr inbounds i8, ptr %.0275462, i64 8
  %.not294 = icmp eq ptr %199, %191
  br i1 %.not294, label %._crit_edge, label %.lr.ph

200:                                              ; preds = %.lr.ph
  %201 = landingpad { ptr, i32 }
          cleanup
  br label %204

202:                                              ; preds = %196
  %203 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %204

204:                                              ; preds = %202, %200
  %.pn365 = phi { ptr, i32 } [ %203, %202 ], [ %201, %200 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %936

._crit_edge468:                                   ; preds = %209, %.preheader414
  %.2273.lcssa = phi i1 [ %.0271.lcssa, %.preheader414 ], [ %spec.select373, %209 ]
  br i1 %.2273.lcssa, label %216, label %368

205:                                              ; preds = %._crit_edge
  %206 = landingpad { ptr, i32 }
          cleanup
  br label %936

.lr.ph467:                                        ; preds = %.preheader414, %209
  %.2273466 = phi i1 [ %spec.select373, %209 ], [ %.0271.lcssa, %.preheader414 ]
  %.0276465 = phi ptr [ %210, %209 ], [ %192, %.preheader414 ]
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %25) #9
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %207 unwind label %211

207:                                              ; preds = %.lr.ph467
  %208 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %.0276465, ptr noundef nonnull align 8 dereferenceable(24) %25)
          to label %209 unwind label %213

209:                                              ; preds = %207
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #9
  %spec.select373 = select i1 %208, i1 true, i1 %.2273466
  %210 = getelementptr inbounds i8, ptr %.0276465, i64 24
  %.not295 = icmp eq ptr %210, %193
  br i1 %.not295, label %._crit_edge468, label %.lr.ph467

211:                                              ; preds = %.lr.ph467
  %212 = landingpad { ptr, i32 }
          cleanup
  br label %215

213:                                              ; preds = %207
  %214 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #9
  br label %215

215:                                              ; preds = %213, %211
  %.pn362 = phi { ptr, i32 } [ %214, %213 ], [ %212, %211 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %25) #9
  br label %936

216:                                              ; preds = %._crit_edge468
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %28) #9
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %28)
          to label %217 unwind label %234

217:                                              ; preds = %216
  %218 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA4_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %28, ptr noundef nonnull align 1 dereferenceable(4) @.str.138)
          to label %219 unwind label %236

219:                                              ; preds = %217
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #9
  store ptr %5, ptr %29, align 8, !tbaa !5
  %220 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKN3HIR13GenericParamsEEOT_SB_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %218, ptr noundef nonnull align 8 dereferenceable(8) %29)
          to label %221 unwind label %238

221:                                              ; preds = %219
  %222 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA2_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %220, ptr noundef nonnull align 1 dereferenceable(2) @.str.139)
          to label %223 unwind label %238

223:                                              ; preds = %221
  %224 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEmEOT_S7_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %222, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter)
          to label %225 unwind label %238

225:                                              ; preds = %223
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %27, ptr noundef nonnull align 8 dereferenceable(112) %224)
          to label %226 unwind label %238

226:                                              ; preds = %225
  invoke void @_ZN8RcStringC2ERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(32) %27)
          to label %227 unwind label %240

227:                                              ; preds = %226
  %228 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN8RcStringaSEOS_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %26)
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %28) #9
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  %229 = load i64, ptr @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter, align 8, !tbaa !37
  %230 = add i64 %229, 1
  store i64 %230, ptr @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12s_ph_counter, align 8, !tbaa !37
  %231 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %.not531 = icmp eq i64 %231, 0
  br i1 %.not531, label %.preheader413, label %.lr.ph472

.lr.ph472:                                        ; preds = %227
  %232 = getelementptr inbounds i8, ptr %22, i64 8
  br label %247

.preheader413:                                    ; preds = %288, %227
  %233 = getelementptr inbounds i8, ptr %22, i64 16
  br label %293

234:                                              ; preds = %216
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %244

236:                                              ; preds = %217
  %237 = landingpad { ptr, i32 }
          cleanup
  br label %243

238:                                              ; preds = %225, %223, %221, %219
  %239 = landingpad { ptr, i32 }
          cleanup
  br label %242

240:                                              ; preds = %226
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %27) #9
  br label %242

242:                                              ; preds = %240, %238
  %.pn296 = phi { ptr, i32 } [ %241, %240 ], [ %239, %238 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #9
  br label %243

243:                                              ; preds = %242, %236
  %.pn296.pn = phi { ptr, i32 } [ %.pn296, %242 ], [ %237, %236 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %28) #9
  br label %244

244:                                              ; preds = %243, %234
  %.pn296.pn.pn = phi { ptr, i32 } [ %.pn296.pn, %243 ], [ %235, %234 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %28) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %936

245:                                              ; preds = %284, %282, %279, %277, %275, %273, %270, %265, %256
  %246 = landingpad { ptr, i32 }
          cleanup
  br label %936

247:                                              ; preds = %.lr.ph472, %288
  %248 = phi i64 [ 0, %.lr.ph472 ], [ %290, %288 ]
  %.0277470 = phi i32 [ 0, %.lr.ph472 ], [ %289, %288 ]
  %249 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %248)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %250 unwind label %258

250:                                              ; preds = %247
  %251 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %249, ptr noundef nonnull align 8 dereferenceable(8) %30)
          to label %252 unwind label %260

252:                                              ; preds = %250
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br i1 %251, label %253, label %288

253:                                              ; preds = %252
  %254 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %232)
  %255 = icmp eq i64 %254, 0
  br i1 %255, label %256, label %263

256:                                              ; preds = %253
  %257 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %232, i64 noundef %257)
          to label %263 unwind label %245

258:                                              ; preds = %247
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %262

260:                                              ; preds = %250
  %261 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  br label %262

262:                                              ; preds = %260, %258
  %.pn358 = phi { ptr, i32 } [ %261, %260 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #9
  br label %936

263:                                              ; preds = %256, %253
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %31) #9
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %23)
  %264 = add i32 %.0277470, 512
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %31, ptr noundef nonnull %32, i32 noundef %264)
          to label %265 unwind label %286

265:                                              ; preds = %263
  %266 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %232, i64 noundef %248)
  %267 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 8 dereferenceable(8) %31)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  %268 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %269 unwind label %245

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

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

273:                                              ; preds = %270
  %274 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %272, ptr noundef nonnull @.str.140)
          to label %275 unwind label %245

275:                                              ; preds = %273
  %276 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %274, i32 noundef %.0277470)
          to label %277 unwind label %245

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

279:                                              ; preds = %277
  %280 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %232, i64 noundef %248)
  %281 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %278, ptr noundef nonnull align 8 dereferenceable(8) %280)
          to label %282 unwind label %245

282:                                              ; preds = %279
  %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 %245

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 %245

286:                                              ; preds = %263
  %287 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %31) #9
  br label %936

288:                                              ; preds = %252, %284, %269
  %289 = add i32 %.0277470, 1
  %290 = zext i32 %289 to i64
  %291 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %292 = icmp ugt i64 %291, %290
  br i1 %292, label %247, label %.preheader413, !llvm.loop !38

293:                                              ; preds = %.preheader413, %352
  %.0279 = phi i32 [ %353, %352 ], [ 0, %.preheader413 ]
  %294 = zext i32 %.0279 to i64
  %295 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %296 unwind label %300

296:                                              ; preds = %293
  %297 = icmp ugt i64 %295, %294
  br i1 %297, label %302, label %298

298:                                              ; preds = %296
  %299 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %354 unwind label %366

300:                                              ; preds = %342, %340, %337, %335, %333, %331, %328, %325, %313, %311, %307, %293
  %301 = landingpad { ptr, i32 }
          cleanup
  br label %936

302:                                              ; preds = %296
  %303 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %294)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %33) #9
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %304 unwind label %314

304:                                              ; preds = %302
  %305 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %303, ptr noundef nonnull align 8 dereferenceable(24) %33)
          to label %306 unwind label %316

306:                                              ; preds = %304
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #9
  br i1 %305, label %307, label %352

307:                                              ; preds = %306
  %308 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %309 unwind label %300

309:                                              ; preds = %307
  %310 = icmp eq i64 %308, 0
  br i1 %310, label %311, label %319

311:                                              ; preds = %309
  %312 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %313 unwind label %300

313:                                              ; preds = %311
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %233, i64 noundef %312)
          to label %319 unwind label %300

314:                                              ; preds = %302
  %315 = landingpad { ptr, i32 }
          cleanup
  br label %318

316:                                              ; preds = %304
  %317 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  br label %318

318:                                              ; preds = %316, %314
  %.pn351 = phi { ptr, i32 } [ %317, %316 ], [ %315, %314 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %33) #9
  br label %936

319:                                              ; preds = %313, %309
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %34) #9
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %23)
  %320 = add i32 %.0279, 512
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %35, ptr noundef nonnull %36, i32 noundef %320)
          to label %321 unwind label %344

321:                                              ; preds = %319
  invoke void @_ZN3HIR12ConstGenericC2ENS_10GenericRefE(ptr noundef nonnull align 8 dereferenceable(24) %34, ptr noundef nonnull %35)
          to label %322 unwind label %346

322:                                              ; preds = %321
  %323 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %233, i64 noundef %294)
  %324 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %323, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %325 unwind label %348

325:                                              ; preds = %322
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %35) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #9
  %326 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %327 unwind label %300

327:                                              ; preds = %325
  br i1 %326, label %328, label %352

328:                                              ; preds = %327
  %329 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %330 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %329, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %331 unwind label %300

331:                                              ; preds = %328
  %332 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull @.str.141)
          to label %333 unwind label %300

333:                                              ; preds = %331
  %334 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %332, i32 noundef %.0279)
          to label %335 unwind label %300

335:                                              ; preds = %333
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %334, ptr noundef nonnull @.str.1)
          to label %337 unwind label %300

337:                                              ; preds = %335
  %338 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %233, i64 noundef %294)
  %339 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_12ConstGenericE(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull align 8 dereferenceable(24) %338)
          to label %340 unwind label %300

340:                                              ; preds = %337
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %339, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %342 unwind label %300

342:                                              ; preds = %340
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %352 unwind label %300

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

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

348:                                              ; preds = %322
  %349 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %34) #9
  br label %350

350:                                              ; preds = %348, %346
  %.pn353 = phi { ptr, i32 } [ %349, %348 ], [ %347, %346 ]
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %35) #9
  br label %351

351:                                              ; preds = %350, %344
  %.pn353.pn = phi { ptr, i32 } [ %.pn353, %350 ], [ %345, %344 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %34) #9
  br label %936

352:                                              ; preds = %306, %342, %327
  %353 = add i32 %.0279, 1
  br label %293, !llvm.loop !40

354:                                              ; preds = %298
  br i1 %299, label %355, label %379

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

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

360:                                              ; preds = %358
  %361 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %359, ptr noundef nonnull align 8 dereferenceable(8) %23)
          to label %362 unwind label %366

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

364:                                              ; preds = %362
  %365 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %363, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %.invoke604 unwind label %366

366:                                              ; preds = %.invoke604, %.invoke, %374, %371, %368, %364, %362, %360, %358, %355, %298
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %936

368:                                              ; preds = %._crit_edge468
  %369 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %370 unwind label %366

370:                                              ; preds = %368
  br i1 %369, label %371, label %379

371:                                              ; preds = %370
  %372 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %373 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %372, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %374 unwind label %366

374:                                              ; preds = %371
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %373, ptr noundef nonnull @.str.144)
          to label %.invoke604 unwind label %366

.invoke604:                                       ; preds = %364, %374
  %376 = phi ptr [ %375, %374 ], [ %365, %364 ]
  %377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %376, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke unwind label %366

.invoke:                                          ; preds = %.invoke604
  %378 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %379 unwind label %366

379:                                              ; preds = %.invoke, %370, %354
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #9
  %380 = load ptr, ptr %99, align 8, !tbaa !11
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %37, ptr noundef nonnull align 8 dereferenceable(49) %380)
          to label %381 unwind label %416

381:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 136, ptr nonnull %38) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %382 unwind label %418

382:                                              ; preds = %381
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %23)
  invoke void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherC2ES0_SG_8RcStringSH_(ptr noundef nonnull align 8 dereferenceable(136) %38, ptr noundef nonnull %39, ptr noundef nonnull align 8 dereferenceable(24) %8, ptr noundef nonnull %40, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %383 unwind label %420

383:                                              ; preds = %382
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %41) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %.preheader407.split unwind label %422

.preheader407.split:                              ; preds = %383
  %384 = getelementptr inbounds i8, ptr %5, i64 72
  %385 = getelementptr inbounds i8, ptr %38, i64 8
  %386 = getelementptr inbounds i8, ptr %50, i64 8
  %387 = getelementptr inbounds i8, ptr %50, i64 16
  %388 = getelementptr inbounds i8, ptr %50, i64 24
  %389 = getelementptr inbounds i8, ptr %50, i64 40
  %390 = getelementptr inbounds i8, ptr %65, i64 8
  %391 = getelementptr inbounds i8, ptr %65, i64 16
  %392 = getelementptr inbounds i8, ptr %65, i64 24
  %393 = getelementptr inbounds i8, ptr %65, i64 32
  %394 = getelementptr inbounds i8, ptr %65, i64 40
  %395 = getelementptr inbounds i8, ptr %65, i64 48
  %396 = getelementptr inbounds i8, ptr %65, i64 56
  %397 = getelementptr inbounds i8, ptr %65, i64 64
  %398 = getelementptr inbounds i8, ptr %65, i64 72
  %399 = getelementptr inbounds i8, ptr %65, i64 80
  %400 = getelementptr inbounds i8, ptr %65, i64 88
  %401 = getelementptr inbounds i8, ptr %65, i64 96
  br label %402

402:                                              ; preds = %.preheader407.split, %804
  %.0280 = phi i32 [ %438, %804 ], [ 0, %.preheader407.split ]
  %403 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %404 unwind label %.loopexit408

404:                                              ; preds = %402
  br i1 %403, label %405, label %424

405:                                              ; preds = %404
  %406 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %407 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %406, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %408 unwind label %.loopexit408

408:                                              ; preds = %405
  %409 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %407, ptr noundef nonnull @.str.145)
          to label %410 unwind label %.loopexit408

410:                                              ; preds = %408
  %411 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8) %409, i32 noundef %.0280)
          to label %412 unwind label %.loopexit408

412:                                              ; preds = %410
  %413 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %411, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %414 unwind label %.loopexit408

414:                                              ; preds = %412
  %415 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %413, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %424 unwind label %.loopexit408

416:                                              ; preds = %379
  %417 = landingpad { ptr, i32 }
          cleanup
  br label %935

418:                                              ; preds = %381
  %419 = landingpad { ptr, i32 }
          cleanup
  br label %934

420:                                              ; preds = %382
  %421 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #9
  br label %934

422:                                              ; preds = %383
  %423 = landingpad { ptr, i32 }
          cleanup
  br label %933

.loopexit408:                                     ; preds = %402, %405, %408, %410, %412, %414, %._crit_edge523
  %lpad.loopexit410 = landingpad { ptr, i32 }
          cleanup
  br label %932

.loopexit.split-lp409:                            ; preds = %429
  %lpad.loopexit.split-lp411 = landingpad { ptr, i32 }
          cleanup
  br label %932

424:                                              ; preds = %404, %414
  %exitcond.not = icmp eq i32 %.0280, 4
  br i1 %exitcond.not, label %425, label %437

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

426:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %44) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 1 dereferenceable(1) %44) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull %43)
          to label %427 unwind label %432

427:                                              ; preds = %426
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  %428 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %428, ptr noundef nonnull @.str.8)
          to label %429 unwind label %435

429:                                              ; preds = %427
  invoke void @__cxa_throw(ptr nonnull %428, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %943 unwind label %.loopexit.split-lp409

430:                                              ; preds = %425
  %431 = landingpad { ptr, i32 }
          cleanup
  br label %434

432:                                              ; preds = %426
  %433 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %44) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #9
  br label %434

434:                                              ; preds = %432, %430
  %.pn300 = phi { ptr, i32 } [ %433, %432 ], [ %431, %430 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #9
  br label %932

435:                                              ; preds = %427
  %436 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %428) #9
  br label %932

437:                                              ; preds = %424
  %438 = add nuw nsw i32 %.0280, 1
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %45) #9
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %45, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %439 unwind label %444

439:                                              ; preds = %437
  %440 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %41, ptr noundef nonnull align 8 dereferenceable(24) %45)
          to label %.split522 unwind label %446

.split522:                                        ; preds = %439
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #9
  %441 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %384) #9
  store ptr %441, ptr %46, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  %442 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %384) #9
  store ptr %442, ptr %47, align 8
  %443 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br i1 %443, label %.lr.ph520, label %._crit_edge523

444:                                              ; preds = %437
  %445 = landingpad { ptr, i32 }
          cleanup
  br label %448

446:                                              ; preds = %439
  %447 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %45) #9
  br label %448

448:                                              ; preds = %446, %444
  %.pn302 = phi { ptr, i32 } [ %447, %446 ], [ %445, %444 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %45) #9
  br label %932

.lr.ph520:                                        ; preds = %.split522, %.thread382
  %449 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  %450 = call noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168) %449)
  switch i32 %450, label %.thread382 [
    i32 0, label %453
    i32 1, label %.preheader401
    i32 2, label %.preheader402
    i32 3, label %.critedge390.preheader
    i32 4, label %782
  ]

.preheader402:                                    ; preds = %.lr.ph520
  %451 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %449)
  br label %.thread382

.preheader401:                                    ; preds = %.lr.ph520
  %452 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR12GenericBound11as_LifetimeEv(ptr noundef nonnull align 8 dereferenceable(168) %449)
  br label %.thread382

453:                                              ; preds = %.lr.ph520
  call void @__assert_fail(ptr noundef nonnull @.str.13, ptr noundef nonnull @.str.7, i32 noundef 3629, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_) #11
  unreachable

.critedge390.preheader:                           ; preds = %.lr.ph520
  %454 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR12GenericBound13as_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %449)
  %455 = getelementptr inbounds i8, ptr %454, i64 8
  %456 = getelementptr inbounds i8, ptr %454, i64 16
  %457 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %460 unwind label %458

458:                                              ; preds = %474, %472, %470, %468, %466, %464, %461, %.critedge390.preheader
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %799

460:                                              ; preds = %.critedge390.preheader
  br i1 %457, label %461, label %476

461:                                              ; preds = %460
  %462 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %463 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %462, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %464 unwind label %458

464:                                              ; preds = %461
  %465 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull @.str.146)
          to label %466 unwind label %458

466:                                              ; preds = %464
  %467 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %465, ptr noundef nonnull align 8 dereferenceable(8) %455)
          to label %468 unwind label %458

468:                                              ; preds = %466
  %469 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %467, ptr noundef nonnull @.str.147)
          to label %470 unwind label %458

470:                                              ; preds = %468
  %471 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %469, ptr noundef nonnull align 8 dereferenceable(144) %456)
          to label %472 unwind label %458

472:                                              ; preds = %470
  %473 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %471, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %474 unwind label %458

474:                                              ; preds = %472
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %473, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %476 unwind label %458

476:                                              ; preds = %474, %460
  %477 = load atomic i8, ptr @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params acquire, align 8
  %478 = icmp eq i8 %477, 0
  br i1 %478, label %479, label %483, !prof !41

479:                                              ; preds = %476
  %480 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #9
  %.not308 = icmp eq i32 %480, 0
  br i1 %.not308, label %483, label %481

481:                                              ; preds = %479
  call void @_ZN3HIR13GenericParamsC2Ev(ptr noundef nonnull align 8 dereferenceable(96) @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #9
  %482 = call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR13GenericParamsD2Ev, ptr nonnull @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params, ptr nonnull @__dso_handle) #9
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params) #9
  br label %483

483:                                              ; preds = %481, %479, %476
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  %484 = call noundef zeroext i1 @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEcvbEv(ptr noundef nonnull align 8 dereferenceable(8) %454) #9
  br i1 %484, label %485, label %487

485:                                              ; preds = %483
  %486 = call noundef nonnull align 8 dereferenceable(96) ptr @_ZNKSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %454) #9
  br label %487

487:                                              ; preds = %483, %485
  %488 = phi ptr [ %486, %485 ], [ @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E12empty_params, %483 ]
  invoke void @_ZNK13Monomorphiser8push_hrbERKN3HIR13GenericParamsE(ptr dead_on_unwind nonnull writable sret(%"class.Monomorphiser::PopOnDrop") align 8 %48, ptr noundef nonnull align 8 dereferenceable(96) %385, ptr noundef nonnull align 8 dereferenceable(96) %488)
          to label %489 unwind label %499

489:                                              ; preds = %487
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #9
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %49, ptr noundef nonnull align 8 dereferenceable(96) %385, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %455, i1 noundef zeroext false)
          to label %490 unwind label %501

490:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %50) #9
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %50, ptr noundef nonnull align 8 dereferenceable(96) %385, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %456, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %491 unwind label %503

491:                                              ; preds = %490
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %51) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %49)
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %51, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %52)
          to label %492 unwind label %505

492:                                              ; preds = %491
  %493 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %51)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  %494 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %388)
  %495 = call noundef ptr @_ZN10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %388)
  %.not309473 = icmp eq ptr %494, %495
  br i1 %.not309473, label %._crit_edge477, label %.lr.ph476

._crit_edge477:                                   ; preds = %507, %492
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %55) #9
  %496 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %389) #9
  store ptr %496, ptr %55, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %56) #9
  %497 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %389) #9
  store ptr %497, ptr %56, align 8
  %498 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %498, label %.lr.ph479, label %._crit_edge480

499:                                              ; preds = %487
  %500 = landingpad { ptr, i32 }
          cleanup
  br label %781

501:                                              ; preds = %489
  %502 = landingpad { ptr, i32 }
          cleanup
  br label %780

503:                                              ; preds = %490
  %504 = landingpad { ptr, i32 }
          cleanup
  br label %779

505:                                              ; preds = %491
  %506 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %51) #9
  br label %778

.lr.ph476:                                        ; preds = %492, %507
  %.0278474 = phi ptr [ %509, %507 ], [ %494, %492 ]
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %53) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %.0278474)
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %53, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %54)
          to label %507 unwind label %510

507:                                              ; preds = %.lr.ph476
  %508 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %.0278474, ptr noundef nonnull align 8 dereferenceable(8) %53)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  %509 = getelementptr inbounds i8, ptr %.0278474, i64 8
  %.not309 = icmp eq ptr %509, %495
  br i1 %.not309, label %._crit_edge477, label %.lr.ph476

510:                                              ; preds = %.lr.ph476
  %511 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %53) #9
  br label %778

._crit_edge480:                                   ; preds = %515, %._crit_edge477
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  %512 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %521 unwind label %537

.lr.ph479:                                        ; preds = %._crit_edge477, %515
  %513 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %57) #9
  %514 = getelementptr inbounds i8, ptr %513, i64 40
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %514)
  invoke void @_ZNK15TraitResolution23expand_associated_typesERK4SpanN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %57, ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull %58)
          to label %515 unwind label %519

515:                                              ; preds = %.lr.ph479
  %516 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %514, ptr noundef nonnull align 8 dereferenceable(8) %57)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  %517 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  %518 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %55, ptr noundef nonnull align 8 dereferenceable(8) %56) #9
  br i1 %518, label %.lr.ph479, label %._crit_edge480

519:                                              ; preds = %.lr.ph479
  %520 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %57) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %56) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %55) #9
  br label %778

521:                                              ; preds = %._crit_edge480
  br i1 %512, label %522, label %539

522:                                              ; preds = %521
  %523 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %524 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %523, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %525 unwind label %537

525:                                              ; preds = %522
  %526 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %524, ptr noundef nonnull @.str.148)
          to label %527 unwind label %537

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

529:                                              ; preds = %527
  %530 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %528, ptr noundef nonnull @.str.147)
          to label %531 unwind label %537

531:                                              ; preds = %529
  %532 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %530, ptr noundef nonnull align 8 dereferenceable(144) %50)
          to label %533 unwind label %537

533:                                              ; preds = %531
  %534 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %532, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %535 unwind label %537

535:                                              ; preds = %533
  %536 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %534, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %539 unwind label %537

537:                                              ; preds = %535, %533, %531, %529, %527, %525, %522, %._crit_edge480
  %538 = landingpad { ptr, i32 }
          cleanup
  br label %778

539:                                              ; preds = %535, %521
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %59) #9
  store i8 0, ptr %59, align 1, !tbaa !42
  %540 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %541 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %540)
  br i1 %541, label %542, label %562

542:                                              ; preds = %539
  %543 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %544 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %543)
  %545 = getelementptr inbounds i8, ptr %544, i64 88
  %546 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %545)
  br i1 %546, label %547, label %562

547:                                              ; preds = %542
  %548 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %549 unwind label %559

549:                                              ; preds = %547
  br i1 %548, label %550, label %561

550:                                              ; preds = %549
  %551 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %551, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %553 unwind label %559

553:                                              ; preds = %550
  %554 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %552, ptr noundef nonnull @.str.149)
          to label %555 unwind label %559

555:                                              ; preds = %553
  %556 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %554, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %557 unwind label %559

557:                                              ; preds = %555
  %558 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %556, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %561 unwind label %559

559:                                              ; preds = %580, %578, %576, %573, %570, %565, %557, %555, %553, %550, %547
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %777

561:                                              ; preds = %557, %549
  store i8 1, ptr %59, align 1, !tbaa !42
  br label %562

562:                                              ; preds = %561, %542, %539
  %563 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %564 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %563)
  br i1 %564, label %565, label %583

565:                                              ; preds = %562
  %566 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %567 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %566)
  %568 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %567)
          to label %569 unwind label %559

569:                                              ; preds = %565
  br i1 %568, label %583, label %570

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

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

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

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

578:                                              ; preds = %576
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %580 unwind label %559

580:                                              ; preds = %578
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %582 unwind label %559

582:                                              ; preds = %580, %572
  store i8 1, ptr %59, align 1, !tbaa !42
  br label %583

583:                                              ; preds = %582, %569, %562
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %60) #9
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %60, ptr noundef nonnull align 8 dereferenceable(24) %22)
          to label %584 unwind label %609

584:                                              ; preds = %583
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %61) #9
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %585 unwind label %611

585:                                              ; preds = %584
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %62) #9
  store i32 0, ptr %62, align 4, !tbaa !35
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %63) #9
  store i8 1, ptr %63, align 1, !tbaa !42
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %65) #9
  store ptr %0, ptr %65, align 8, !tbaa !44
  store ptr %1, ptr %390, align 8, !tbaa !5
  store ptr %49, ptr %391, align 8, !tbaa !5
  store ptr %37, ptr %392, align 8, !tbaa !5
  store ptr %38, ptr %393, align 8, !tbaa !5
  store ptr %386, ptr %394, align 8, !tbaa !5
  store ptr %50, ptr %395, align 8, !tbaa !5
  store ptr %59, ptr %396, align 8, !tbaa !5
  store ptr %62, ptr %397, align 8, !tbaa !5
  store ptr %61, ptr %398, align 8, !tbaa !5
  store ptr %22, ptr %399, align 8, !tbaa !5
  store ptr %63, ptr %400, align 8, !tbaa !5
  store ptr %60, ptr %401, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKNS1_10SimplePathEPKNS1_10PathParamsERKNS1_7TypeRefERKNS1_13GenericParamsERSE_SI_RSD_E3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %64, ptr noundef nonnull align 8 dereferenceable(104) %65)
          to label %586 unwind label %613

586:                                              ; preds = %585
  %587 = 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) %386, ptr noundef nonnull align 8 dereferenceable(24) %387, ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull %64, i1 noundef zeroext true)
          to label %588 unwind label %615

588:                                              ; preds = %586
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %65) #9
  br i1 %587, label %589, label %620

589:                                              ; preds = %588
  %590 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %591 unwind label %618

591:                                              ; preds = %589
  br i1 %590, label %592, label %773

592:                                              ; preds = %591
  %593 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %594 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %593, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %595 unwind label %618

595:                                              ; preds = %592
  %596 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %594, ptr noundef nonnull @.str.151)
          to label %597 unwind label %618

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

599:                                              ; preds = %597
  %600 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %598, ptr noundef nonnull @.str.147)
          to label %601 unwind label %618

601:                                              ; preds = %599
  %602 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %600, ptr noundef nonnull align 8 dereferenceable(32) %386)
          to label %603 unwind label %618

603:                                              ; preds = %601
  %604 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %602, ptr noundef nonnull @.str.152)
          to label %605 unwind label %618

605:                                              ; preds = %603
  %606 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %604, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %607 unwind label %618

607:                                              ; preds = %605
  %608 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %606, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %773 unwind label %618

609:                                              ; preds = %583
  %610 = landingpad { ptr, i32 }
          cleanup
  br label %776

611:                                              ; preds = %584
  %612 = landingpad { ptr, i32 }
          cleanup
  br label %775

613:                                              ; preds = %585
  %614 = landingpad { ptr, i32 }
          cleanup
  br label %617

615:                                              ; preds = %586
  %616 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  br label %617

617:                                              ; preds = %615, %613
  %.pn310 = phi { ptr, i32 } [ %616, %615 ], [ %614, %613 ]
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %65) #9
  br label %774

618:                                              ; preds = %.invoke610, %.invoke609, %.invoke608, %.invoke607, %.invoke606, %.invoke605, %.invoke603, %.invoke602, %771, %769, %767, %765, %763, %761, %759, %756, %753, %750, %748, %746, %744, %742, %740, %738, %735, %732, %722, %720, %718, %716, %714, %712, %710, %707, %704, %686, %684, %681, %678, %668, %666, %663, %660, %654, %651, %648, %645, %641, %639, %637, %635, %633, %631, %629, %626, %623, %607, %605, %603, %601, %599, %597, %595, %592, %589
  %619 = landingpad { ptr, i32 }
          cleanup
  br label %774

620:                                              ; preds = %588
  %621 = load i8, ptr %59, align 1, !tbaa !42, !range !46, !noundef !47
  %622 = trunc nuw i8 %621 to i1
  br i1 %622, label %623, label %695

623:                                              ; preds = %620
  %624 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %625 unwind label %618

625:                                              ; preds = %623
  br i1 %624, label %626, label %643

626:                                              ; preds = %625
  %627 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %628 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %627, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %629 unwind label %618

629:                                              ; preds = %626
  %630 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %628, ptr noundef nonnull @.str.151)
          to label %631 unwind label %618

631:                                              ; preds = %629
  %632 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %630, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %633 unwind label %618

633:                                              ; preds = %631
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %632, ptr noundef nonnull @.str.147)
          to label %635 unwind label %618

635:                                              ; preds = %633
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef nonnull align 8 dereferenceable(32) %386)
          to label %637 unwind label %618

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef nonnull @.str.153)
          to label %639 unwind label %618

639:                                              ; preds = %637
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %641 unwind label %618

641:                                              ; preds = %639
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %643 unwind label %618

643:                                              ; preds = %641, %625
  %644 = load i32, ptr %62, align 4, !tbaa !35
  switch i32 %644, label %657 [
    i32 0, label %645
    i32 1, label %651
  ]

645:                                              ; preds = %643
  %646 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %647 unwind label %618

647:                                              ; preds = %645
  br i1 %646, label %648, label %694

648:                                              ; preds = %647
  %649 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %650 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %649, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %.invoke607 unwind label %618

651:                                              ; preds = %643
  %652 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %653 unwind label %618

653:                                              ; preds = %651
  br i1 %652, label %654, label %.invoke603

654:                                              ; preds = %653
  %655 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %655, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %.invoke610 unwind label %618

657:                                              ; preds = %643
  %658 = load i8, ptr %63, align 1, !tbaa !42, !range !46, !noundef !47
  %659 = trunc nuw i8 %658 to i1
  br i1 %659, label %660, label %678

660:                                              ; preds = %657
  %661 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %662 unwind label %618

662:                                              ; preds = %660
  br i1 %661, label %663, label %.invoke603

663:                                              ; preds = %662
  %664 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %665 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %664, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %666 unwind label %618

666:                                              ; preds = %663
  %667 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %665, ptr noundef nonnull @.str.156)
          to label %668 unwind label %618

668:                                              ; preds = %666
  %669 = load i32, ptr %62, align 4, !tbaa !35
  %670 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %667, i32 noundef %669)
          to label %.invoke610 unwind label %618

.invoke610:                                       ; preds = %668, %654
  %671 = phi ptr [ %656, %654 ], [ %670, %668 ]
  %672 = phi ptr [ @.str.155, %654 ], [ @.str.157, %668 ]
  %673 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %671, ptr noundef nonnull %672)
          to label %.invoke609 unwind label %618

.invoke609:                                       ; preds = %.invoke610
  %674 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %673, ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %.invoke608 unwind label %618

.invoke608:                                       ; preds = %.invoke609
  %675 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %674, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke606 unwind label %618

.invoke606:                                       ; preds = %.invoke608
  %676 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %675, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.invoke603 unwind label %618

.invoke603:                                       ; preds = %.invoke606, %662, %653
  %677 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR10PathParamsaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %694 unwind label %618

678:                                              ; preds = %657
  %679 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %680 unwind label %618

680:                                              ; preds = %678
  br i1 %679, label %681, label %694

681:                                              ; preds = %680
  %682 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %683 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %682, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %684 unwind label %618

684:                                              ; preds = %681
  %685 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %683, ptr noundef nonnull @.str.158)
          to label %686 unwind label %618

686:                                              ; preds = %684
  %687 = load i32, ptr %62, align 4, !tbaa !35
  %688 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %685, i32 noundef %687)
          to label %.invoke607 unwind label %618

.invoke607:                                       ; preds = %686, %648
  %689 = phi ptr [ %650, %648 ], [ %688, %686 ]
  %690 = phi ptr [ @.str.154, %648 ], [ @.str.159, %686 ]
  %691 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %689, ptr noundef nonnull %690)
          to label %.invoke605 unwind label %618

.invoke605:                                       ; preds = %.invoke607
  %692 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %691, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %.invoke602 unwind label %618

.invoke602:                                       ; preds = %.invoke605
  %693 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %692, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %694 unwind label %618

694:                                              ; preds = %.invoke603, %.invoke602, %680, %647
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %773

695:                                              ; preds = %620
  %696 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %697 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %696)
  br i1 %697, label %698, label %725

698:                                              ; preds = %695
  %699 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %700 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %699)
  %701 = getelementptr inbounds i8, ptr %700, i64 4
  %702 = load i32, ptr %701, align 4, !tbaa !48
  %703 = icmp eq i32 %702, 0
  br i1 %703, label %704, label %725

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

706:                                              ; preds = %704
  br i1 %705, label %707, label %724

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

710:                                              ; preds = %707
  %711 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %709, ptr noundef nonnull @.str.151)
          to label %712 unwind label %618

712:                                              ; preds = %710
  %713 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %711, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %714 unwind label %618

714:                                              ; preds = %712
  %715 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %713, ptr noundef nonnull @.str.147)
          to label %716 unwind label %618

716:                                              ; preds = %714
  %717 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %715, ptr noundef nonnull align 8 dereferenceable(32) %386)
          to label %718 unwind label %618

718:                                              ; preds = %716
  %719 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %717, ptr noundef nonnull @.str.160)
          to label %720 unwind label %618

720:                                              ; preds = %718
  %721 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %719, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %722 unwind label %618

722:                                              ; preds = %720
  %723 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %721, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %724 unwind label %618

724:                                              ; preds = %722, %706
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %773

725:                                              ; preds = %698, %695
  %726 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %727 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %726)
  br i1 %727, label %728, label %753

728:                                              ; preds = %725
  %729 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %49)
  %730 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %729)
  %731 = call noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %730)
  br i1 %731, label %732, label %753

732:                                              ; preds = %728
  %733 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %734 unwind label %618

734:                                              ; preds = %732
  br i1 %733, label %735, label %752

735:                                              ; preds = %734
  %736 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %737 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %736, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %738 unwind label %618

738:                                              ; preds = %735
  %739 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %737, ptr noundef nonnull @.str.151)
          to label %740 unwind label %618

740:                                              ; preds = %738
  %741 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %739, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %742 unwind label %618

742:                                              ; preds = %740
  %743 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %741, ptr noundef nonnull @.str.147)
          to label %744 unwind label %618

744:                                              ; preds = %742
  %745 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %743, ptr noundef nonnull align 8 dereferenceable(32) %386)
          to label %746 unwind label %618

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

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

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

752:                                              ; preds = %750, %734
  store i32 1, ptr %17, align 4, !tbaa !9
  br label %773

753:                                              ; preds = %725, %728
  %754 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %755 unwind label %618

755:                                              ; preds = %753
  br i1 %754, label %756, label %773

756:                                              ; preds = %755
  %757 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %758 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %757, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %759 unwind label %618

759:                                              ; preds = %756
  %760 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %758, ptr noundef nonnull @.str.151)
          to label %761 unwind label %618

761:                                              ; preds = %759
  %762 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %760, ptr noundef nonnull align 8 dereferenceable(8) %49)
          to label %763 unwind label %618

763:                                              ; preds = %761
  %764 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %762, ptr noundef nonnull @.str.147)
          to label %765 unwind label %618

765:                                              ; preds = %763
  %766 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %764, ptr noundef nonnull align 8 dereferenceable(32) %386)
          to label %767 unwind label %618

767:                                              ; preds = %765
  %768 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %766, ptr noundef nonnull @.str.162)
          to label %769 unwind label %618

769:                                              ; preds = %767
  %770 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %768, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %771 unwind label %618

771:                                              ; preds = %769
  %772 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %770, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %773 unwind label %618

773:                                              ; preds = %607, %591, %724, %752, %694, %755, %771
  %cond8 = phi i1 [ false, %771 ], [ false, %755 ], [ true, %694 ], [ true, %752 ], [ true, %724 ], [ true, %591 ], [ true, %607 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %60) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %50) #9
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %50) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  call void @_ZN13Monomorphiser9PopOnDropD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br i1 %cond8, label %.thread382, label %802, !llvm.loop !51

774:                                              ; preds = %618, %617
  %.pn312 = phi { ptr, i32 } [ %619, %618 ], [ %.pn310, %617 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %63) #9
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %62) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #9
  br label %775

775:                                              ; preds = %774, %611
  %.pn312.pn = phi { ptr, i32 } [ %.pn312, %774 ], [ %612, %611 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %61) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %60) #9
  br label %776

776:                                              ; preds = %775, %609
  %.pn312.pn.pn = phi { ptr, i32 } [ %.pn312.pn, %775 ], [ %610, %609 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %60) #9
  br label %777

777:                                              ; preds = %776, %559
  %.pn312.pn.pn.pn = phi { ptr, i32 } [ %.pn312.pn.pn, %776 ], [ %560, %559 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %59) #9
  br label %778

778:                                              ; preds = %537, %777, %519, %510, %505
  %.pn340 = phi { ptr, i32 } [ %511, %510 ], [ %520, %519 ], [ %506, %505 ], [ %.pn312.pn.pn.pn, %777 ], [ %538, %537 ]
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %50) #9
  br label %779

779:                                              ; preds = %778, %503
  %.pn340.pn = phi { ptr, i32 } [ %.pn340, %778 ], [ %504, %503 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %50) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #9
  br label %780

780:                                              ; preds = %779, %501
  %.pn340.pn.pn = phi { ptr, i32 } [ %.pn340.pn, %779 ], [ %502, %501 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #9
  call void @_ZN13Monomorphiser9PopOnDropD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %781

781:                                              ; preds = %780, %499
  %.pn340.pn.pn.pn = phi { ptr, i32 } [ %.pn340.pn.pn, %780 ], [ %500, %499 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  br label %799

782:                                              ; preds = %.lr.ph520
  %783 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR12GenericBound15as_TypeEqualityEv(ptr noundef nonnull align 8 dereferenceable(168) %449)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %66) #9
  store ptr @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_, ptr %66, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %67) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %784 unwind label %789

784:                                              ; preds = %782
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %69) #9
  store ptr %66, ptr %69, align 8, !tbaa !5
  %785 = getelementptr inbounds i8, ptr %69, i64 8
  store ptr %783, ptr %785, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(16) %69) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %67, ptr noundef nonnull %68)
          to label %786 unwind label %791

786:                                              ; preds = %784
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  %787 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %787, ptr noundef nonnull @.str.70)
          to label %788 unwind label %794

788:                                              ; preds = %786
  invoke void @__cxa_throw(ptr nonnull %787, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %943 unwind label %796

789:                                              ; preds = %782
  %790 = landingpad { ptr, i32 }
          cleanup
  br label %793

791:                                              ; preds = %784
  %792 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %69) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %67) #9
  br label %793

793:                                              ; preds = %791, %789
  %.pn304 = phi { ptr, i32 } [ %792, %791 ], [ %790, %789 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %67) #9
  br label %798

794:                                              ; preds = %786
  %795 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %787) #9
  br label %798

796:                                              ; preds = %788
  %797 = landingpad { ptr, i32 }
          cleanup
  br label %798

798:                                              ; preds = %796, %794, %793
  %.pn306 = phi { ptr, i32 } [ %797, %796 ], [ %795, %794 ], [ %.pn304, %793 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %66) #9
  br label %799

799:                                              ; preds = %458, %781, %798
  %.pn306.pn = phi { ptr, i32 } [ %.pn306, %798 ], [ %.pn340.pn.pn.pn, %781 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %932

.thread382:                                       ; preds = %773, %.preheader402, %.preheader401, %.lr.ph520
  %800 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  %801 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br i1 %801, label %.lr.ph520, label %._crit_edge523

802:                                              ; preds = %773
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  br label %931

._crit_edge523:                                   ; preds = %.thread382, %.split522
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #9
  %803 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(24) %41)
          to label %804 unwind label %.loopexit408

804:                                              ; preds = %._crit_edge523
  br i1 %803, label %402, label %.preheader398, !llvm.loop !52

.preheader398:                                    ; preds = %804
  %805 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %.not532 = icmp eq i64 %805, 0
  br i1 %.not532, label %.preheader392, label %.lr.ph525

.lr.ph525:                                        ; preds = %.preheader398
  %806 = getelementptr inbounds i8, ptr %22, i64 8
  br label %814

807:                                              ; preds = %832
  %808 = add nuw i64 %.0190524, 1
  %809 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %810 = icmp ult i64 %808, %809
  br i1 %810, label %814, label %.preheader392, !llvm.loop !53

.preheader392:                                    ; preds = %807, %.preheader398
  %811 = getelementptr inbounds i8, ptr %22, i64 16
  br label %850

812:                                              ; preds = %837
  %813 = landingpad { ptr, i32 }
          cleanup
  br label %932

814:                                              ; preds = %.lr.ph525, %807
  %.0190524 = phi i64 [ 0, %.lr.ph525 ], [ %808, %807 ]
  %815 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0190524)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %70) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %816 unwind label %823

816:                                              ; preds = %814
  %817 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %815, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %818 unwind label %825

818:                                              ; preds = %816
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  br i1 %817, label %819, label %828

819:                                              ; preds = %818
  %820 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %806, i64 noundef %.0190524)
  %821 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0190524)
  %822 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %821, ptr noundef nonnull align 8 dereferenceable(8) %820)
  br label %828

823:                                              ; preds = %814
  %824 = landingpad { ptr, i32 }
          cleanup
  br label %827

825:                                              ; preds = %816
  %826 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  br label %827

827:                                              ; preds = %825, %823
  %.pn332 = phi { ptr, i32 } [ %826, %825 ], [ %824, %823 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %70) #9
  br label %932

828:                                              ; preds = %818, %819
  %829 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0190524)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %71) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %830 unwind label %838

830:                                              ; preds = %828
  %831 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %829, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %832 unwind label %840

832:                                              ; preds = %830
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  br i1 %831, label %807, label %833

833:                                              ; preds = %832
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %72) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %834 unwind label %843

834:                                              ; preds = %833
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %74) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 1 dereferenceable(1) %74) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull %73)
          to label %835 unwind label %845

835:                                              ; preds = %834
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  %836 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %836, ptr noundef nonnull @.str.8)
          to label %837 unwind label %848

837:                                              ; preds = %835
  invoke void @__cxa_throw(ptr nonnull %836, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %943 unwind label %812

838:                                              ; preds = %828
  %839 = landingpad { ptr, i32 }
          cleanup
  br label %842

840:                                              ; preds = %830
  %841 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #9
  br label %842

842:                                              ; preds = %840, %838
  %.pn334 = phi { ptr, i32 } [ %841, %840 ], [ %839, %838 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %71) #9
  br label %932

843:                                              ; preds = %833
  %844 = landingpad { ptr, i32 }
          cleanup
  br label %847

845:                                              ; preds = %834
  %846 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %74) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #9
  br label %847

847:                                              ; preds = %845, %843
  %.pn336 = phi { ptr, i32 } [ %846, %845 ], [ %844, %843 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %72) #9
  br label %932

848:                                              ; preds = %835
  %849 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %836) #9
  br label %932

850:                                              ; preds = %873, %.preheader392
  %.0189 = phi i64 [ %874, %873 ], [ 0, %.preheader392 ]
  %851 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %852 unwind label %.loopexit393

852:                                              ; preds = %850
  %853 = icmp ult i64 %.0189, %851
  br i1 %853, label %855, label %.preheader

.preheader:                                       ; preds = %852
  %854 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  %.not323526.not = icmp eq i64 %854, 0
  br i1 %.not323526.not, label %.loopexit, label %.lr.ph529

.loopexit393:                                     ; preds = %850, %860
  %lpad.loopexit395 = landingpad { ptr, i32 }
          cleanup
  br label %932

.loopexit.split-lp394:                            ; preds = %879
  %lpad.loopexit.split-lp396 = landingpad { ptr, i32 }
          cleanup
  br label %932

855:                                              ; preds = %852
  %856 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %.0189)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %75) #9
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75)
          to label %857 unwind label %864

857:                                              ; preds = %855
  %858 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericeqERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %856, ptr noundef nonnull align 8 dereferenceable(24) %75)
          to label %859 unwind label %866

859:                                              ; preds = %857
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #9
  br i1 %858, label %860, label %869

860:                                              ; preds = %859
  %861 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %811, i64 noundef %.0189)
  %862 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %.0189)
  %863 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %862, ptr noundef nonnull align 8 dereferenceable(24) %861)
          to label %869 unwind label %.loopexit393

864:                                              ; preds = %855
  %865 = landingpad { ptr, i32 }
          cleanup
  br label %868

866:                                              ; preds = %857
  %867 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %75) #9
  br label %868

868:                                              ; preds = %866, %864
  %.pn324 = phi { ptr, i32 } [ %867, %866 ], [ %865, %864 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %75) #9
  br label %932

869:                                              ; preds = %859, %860
  %870 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %95, i64 noundef %.0189)
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %76) #9
  invoke void @_ZN3HIR12ConstGenericC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %871 unwind label %880

871:                                              ; preds = %869
  %872 = invoke noundef zeroext i1 @_ZNK3HIR12ConstGenericneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %870, ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %873 unwind label %882

873:                                              ; preds = %871
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #9
  %874 = add nuw i64 %.0189, 1
  br i1 %872, label %850, label %875, !llvm.loop !54

875:                                              ; preds = %873
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %876 unwind label %885

876:                                              ; preds = %875
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_RSC_E3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %77, ptr noundef nonnull %78)
          to label %877 unwind label %887

877:                                              ; preds = %876
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #9
  %878 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %878, ptr noundef nonnull @.str.8)
          to label %879 unwind label %890

879:                                              ; preds = %877
  invoke void @__cxa_throw(ptr nonnull %878, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %943 unwind label %.loopexit.split-lp394

880:                                              ; preds = %869
  %881 = landingpad { ptr, i32 }
          cleanup
  br label %884

882:                                              ; preds = %871
  %883 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #9
  br label %884

884:                                              ; preds = %882, %880
  %.pn326 = phi { ptr, i32 } [ %883, %882 ], [ %881, %880 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %76) #9
  br label %932

885:                                              ; preds = %875
  %886 = landingpad { ptr, i32 }
          cleanup
  br label %889

887:                                              ; preds = %876
  %888 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #9
  br label %889

889:                                              ; preds = %887, %885
  %.pn328 = phi { ptr, i32 } [ %888, %887 ], [ %886, %885 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #9
  br label %932

890:                                              ; preds = %877
  %891 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %878) #9
  br label %932

.lr.ph529:                                        ; preds = %.preheader, %.critedge375
  %.0188527 = phi i64 [ %928, %.critedge375 ], [ 0, %.preheader ]
  %892 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0188527)
          to label %893 unwind label %921

893:                                              ; preds = %.lr.ph529
  %894 = getelementptr inbounds i8, ptr %892, i64 16
  %895 = load i8, ptr %894, align 8, !tbaa !55, !range !46, !noundef !47
  %896 = trunc nuw i8 %895 to i1
  br i1 %896, label %897, label %.critedge375

897:                                              ; preds = %893
  %898 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0188527)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %80) #9
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %899 unwind label %923

899:                                              ; preds = %897
  %900 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %898, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %901 unwind label %925

901:                                              ; preds = %899
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #9
  br i1 %900, label %902, label %.critedge375

902:                                              ; preds = %901
  %903 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0188527)
  %904 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %903)
          to label %905 unwind label %.loopexit391

905:                                              ; preds = %902
  %.not322 = icmp eq i32 %904, 2
  br i1 %.not322, label %906, label %.critedge375

906:                                              ; preds = %905
  %907 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %908 unwind label %.loopexit.split-lp

908:                                              ; preds = %906
  br i1 %907, label %909, label %931

909:                                              ; preds = %908
  %910 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !35
  %911 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %910, ptr noundef nonnull @__func__._ZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_)
          to label %912 unwind label %.loopexit.split-lp

912:                                              ; preds = %909
  %913 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %911, ptr noundef nonnull @.str.163)
          to label %914 unwind label %.loopexit.split-lp

914:                                              ; preds = %912
  %915 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %92, i64 noundef %.0188527)
  %916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %913, ptr noundef nonnull align 8 dereferenceable(8) %915)
          to label %917 unwind label %.loopexit.split-lp

917:                                              ; preds = %914
  %918 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %916, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %919 unwind label %.loopexit.split-lp

919:                                              ; preds = %917
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %931 unwind label %.loopexit.split-lp

921:                                              ; preds = %.lr.ph529
  %922 = landingpad { ptr, i32 }
          cleanup
  br label %932

923:                                              ; preds = %897
  %924 = landingpad { ptr, i32 }
          cleanup
  br label %927

925:                                              ; preds = %899
  %926 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  br label %927

927:                                              ; preds = %925, %923
  %.pn318 = phi { ptr, i32 } [ %926, %925 ], [ %924, %923 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %80) #9
  br label %932

.loopexit391:                                     ; preds = %902
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %932

.loopexit.split-lp:                               ; preds = %906, %909, %912, %914, %917, %919
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %932

.critedge375:                                     ; preds = %905, %893, %901
  %928 = add nuw i64 %.0188527, 1
  %929 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #9
  %.not323 = icmp ult i64 %928, %929
  br i1 %.not323, label %.lr.ph529, label %.loopexit, !llvm.loop !59

.loopexit:                                        ; preds = %.critedge375, %.preheader
  %930 = load i32, ptr %17, align 4
  br label %931

931:                                              ; preds = %.loopexit, %919, %908, %802
  %.19 = phi i32 [ 2, %802 ], [ %930, %.loopexit ], [ 2, %919 ], [ 2, %908 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #9
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %38) #9
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %38) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  br label %938

932:                                              ; preds = %.loopexit391, %.loopexit.split-lp, %.loopexit393, %.loopexit.split-lp394, %.loopexit408, %.loopexit.split-lp409, %921, %927, %868, %884, %889, %890, %812, %827, %842, %847, %848, %799, %448, %435, %434
  %.pn306.pn.pn = phi { ptr, i32 } [ %.pn306.pn, %799 ], [ %.pn302, %448 ], [ %436, %435 ], [ %.pn300, %434 ], [ %813, %812 ], [ %849, %848 ], [ %.pn336, %847 ], [ %.pn334, %842 ], [ %.pn332, %827 ], [ %891, %890 ], [ %.pn328, %889 ], [ %.pn326, %884 ], [ %.pn324, %868 ], [ %.pn318, %927 ], [ %922, %921 ], [ %lpad.loopexit410, %.loopexit408 ], [ %lpad.loopexit.split-lp411, %.loopexit.split-lp409 ], [ %lpad.loopexit395, %.loopexit393 ], [ %lpad.loopexit.split-lp396, %.loopexit.split-lp394 ], [ %lpad.loopexit, %.loopexit391 ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %41) #9
  br label %933

933:                                              ; preds = %932, %422
  %.pn306.pn.pn.pn = phi { ptr, i32 } [ %.pn306.pn.pn, %932 ], [ %423, %422 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %41) #9
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(136) %38) #9
  br label %934

934:                                              ; preds = %933, %420, %418
  %.pn306.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn306.pn.pn.pn, %933 ], [ %421, %420 ], [ %419, %418 ]
  call void @llvm.lifetime.end.p0(i64 136, ptr nonnull %38) #9
  br label %935

935:                                              ; preds = %934, %416
  %.pn306.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn306.pn.pn.pn.pn, %934 ], [ %417, %416 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  br label %936

936:                                              ; preds = %300, %318, %351, %245, %262, %286, %205, %215, %935, %366, %244, %204
  %.pn365.pn = phi { ptr, i32 } [ %.pn365, %204 ], [ %.pn306.pn.pn.pn.pn.pn, %935 ], [ %367, %366 ], [ %.pn296.pn.pn, %244 ], [ %.pn362, %215 ], [ %206, %205 ], [ %246, %245 ], [ %287, %286 ], [ %.pn358, %262 ], [ %301, %300 ], [ %.pn353.pn, %351 ], [ %.pn351, %318 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  br label %937

937:                                              ; preds = %936, %194
  %.pn365.pn.pn = phi { ptr, i32 } [ %.pn365.pn, %936 ], [ %195, %194 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  br label %939

938:                                              ; preds = %136, %114, %157, %171, %931
  %.20 = phi i32 [ %.19, %931 ], [ 2, %171 ], [ 2, %157 ], [ 2, %114 ], [ 2, %136 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #9
  ret i32 %.20

939:                                              ; preds = %148, %150, %937, %173, %146
  %.pn365.pn.pn.pn = phi { ptr, i32 } [ %.pn365.pn.pn, %937 ], [ %174, %173 ], [ %147, %146 ], [ %151, %150 ], [ %149, %148 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %17) #9
  br label %940

940:                                              ; preds = %939, %144
  %.pn365.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn365.pn.pn.pn, %939 ], [ %145, %144 ]
  call void @_ZZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_EN9GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #9
  br label %941

941:                                              ; preds = %940, %142, %140
  %.pn365.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn365.pn.pn.pn.pn, %940 ], [ %143, %142 ], [ %141, %140 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %10) #9
  br label %942

942:                                              ; preds = %941, %138
  %.pn365.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn365.pn.pn.pn.pn.pn, %941 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %10) #9
  resume { ptr, i32 } %.pn365.pn.pn.pn.pn.pn.pn

943:                                              ; preds = %879, %837, %788, %429
  unreachable
}

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

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

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

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

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

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

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

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

declare noundef i32 @_ZNK3HIR7TypeRef24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(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), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

declare noundef i32 @_ZNK3HIR10PathParams24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA2_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(2)) local_unnamed_addr #3

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA4_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112), ptr noundef nonnull align 1 dereferenceable(4)) local_unnamed_addr #3

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

; Function Attrs: mustprogress uwtable
declare void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind noalias writable sret(%"class.std::__cxx11::basic_string") align 8, ptr noundef nonnull align 8 dereferenceable(112)) local_unnamed_addr #4 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32)) unnamed_addr #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112)) unnamed_addr #6 align 2

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12), ptr noundef, i32 noundef) unnamed_addr #4 align 2

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

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

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEi(ptr noundef nonnull align 8 dereferenceable(8), i32 noundef) local_unnamed_addr #2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR12GenericBound3tagEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR12GenericBound15as_TypeLifetimeEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #6 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK13Monomorphiser8push_hrbERKN3HIR13GenericParamsE(ptr dead_on_unwind noalias writable sret(%"class.Monomorphiser::PopOnDrop") align 8, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(96)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!11 = !{!12, !6, i64 224}
!12 = !{!"_ZTS15TraitResolution", !13, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !31, i64 256}
!13 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !23, i64 72, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208}
!14 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!29 = !{!"_ZTSN3HIR10SimplePathE", !30, i64 0}
!30 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!31 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!36, !36, i64 0}
!36 = !{!"int", !7, i64 0}
!37 = !{!22, !22, i64 0}
!38 = distinct !{!38, !39}
!39 = !{!"llvm.loop.mustprogress"}
!40 = distinct !{!40, !39}
!41 = !{!"branch_weights", i32 1, i32 1048575}
!42 = !{!43, !43, i64 0}
!43 = !{!"bool", !7, i64 0}
!44 = !{!45, !6, i64 0}
!45 = !{!"_ZTSZNK15TraitResolution17ftic_check_paramsERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_RS7_E3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48, !6, i64 56, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96}
!46 = !{i8 0, i8 2}
!47 = !{}
!48 = !{!49, !50, i64 4}
!49 = !{!"_ZTSN3HIR8TypeData10Data_InferE", !36, i64 0, !50, i64 4}
!50 = !{!"_ZTSN3HIR10InferClassE", !7, i64 0}
!51 = distinct !{!51, !39}
!52 = distinct !{!52, !39}
!53 = distinct !{!53, !39}
!54 = distinct !{!54, !39}
!55 = !{!56, !43, i64 16}
!56 = !{!"_ZTSN3HIR12TypeParamDefE", !57, i64 0, !58, i64 8, !43, i64 16}
!57 = !{!"_ZTS8RcString", !6, i64 0}
!58 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!59 = distinct !{!59, !39}


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