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

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

%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.462 = type { ptr, ptr, ptr, ptr }
%"struct.(anonymous namespace)::GetParams::ParamsSet" = type { %"class.std::vector.463", %"class.std::vector.463", %"class.std::vector.463" }
%"class.std::vector.463" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.(anonymous namespace)::GetParams" = type { %"class.HIR::MatchGenerics", %struct.Span, ptr, ptr }
%"class.HIR::MatchGenerics" = type { ptr }
%struct.Span = type { ptr }
%struct.BaseImplPlaceholderIdx = type { i32, i32, i32 }
%class.anon.467 = type { ptr, ptr, ptr }
%class.anon.468 = type { ptr }
%"class.std::function.434" = type { %"class.std::_Function_base", ptr }
%class.anon.469 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.470 = type { i8 }
%class.anon.472 = type { i8 }
%class.anon.474 = type { i8 }
%class.RcString = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.322 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.322 = 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 }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.67", [8 x i8] }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.HIR::LifetimeRef" = type { i32 }
%struct.Matcher = type { %"class.HIR::MatchGenerics", %class.Monomorphiser, %struct.Span, ptr, ptr, ptr, %class.RcString, ptr, ptr }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.476 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.477 = type { i8 }
%class.anon.479 = type { i8 }
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeParamDef" = type <{ %class.RcString, %"class.HIR::TypeRef", i8, [7 x i8] }>
%"struct.HIR::GenericBound::Data_TraitBound" = type { %"class.std::unique_ptr", %"class.HIR::TypeRef", %"class.HIR::TraitPath" }
%"struct.std::pair.457" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE = external hidden unnamed_addr constant [27 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [61 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE = external hidden unnamed_addr constant [288 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

declare i32 @__gxx_personality_v0(...)

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

; Function Attrs: nocallback nofree nounwind willreturn memory(argmem: write)
declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(24)) 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)) #1

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

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

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

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

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

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

; 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

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

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

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

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

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

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

; 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 uwtable
declare dso_local void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424), 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 @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8)) #6 align 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)) #1

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, 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 %8) #4 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca i1, align 1
  %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.HIR::ResolvePlaceholdersNop", align 8
  %21 = alloca %class.TraceLog, align 8
  %22 = alloca %"class.std::function.0", align 8
  %23 = alloca %class.anon.462, align 8
  %24 = alloca ptr, align 8
  %25 = alloca i32, align 4
  %26 = alloca %"struct.HIR::PathParams", align 8
  %27 = alloca %"struct.(anonymous namespace)::GetParams::ParamsSet", align 8
  %28 = alloca %"class.(anonymous namespace)::GetParams", align 8
  %29 = alloca %struct.Span, align 8
  %30 = alloca i32, align 4
  %31 = alloca %struct.BaseImplPlaceholderIdx, align 4
  %32 = alloca %struct.Span, align 8
  %33 = alloca %"class.std::function.0", align 8
  %34 = alloca %class.anon.467, align 8
  %35 = alloca i32, align 4
  %36 = alloca i32, align 4
  %37 = alloca i32, align 4
  %38 = alloca i32, align 4
  %39 = alloca %class.anon.468, align 8
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca ptr, align 8
  %43 = alloca ptr, align 8
  %44 = alloca %"class.std::function.434", align 8
  %45 = alloca %class.anon.469, align 8
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca ptr, align 8
  %49 = alloca ptr, align 8
  %50 = alloca i64, align 8
  %51 = alloca %"struct.std::_Bit_iterator", align 8
  %52 = alloca { ptr, i32 }, align 8
  %53 = alloca %"struct.std::_Bit_iterator", align 8
  %54 = alloca { ptr, i32 }, align 8
  %55 = alloca i8, align 1
  %56 = alloca i64, align 8
  %57 = alloca %"struct.std::_Bit_iterator", align 8
  %58 = alloca { ptr, i32 }, align 8
  %59 = alloca %"struct.std::_Bit_iterator", align 8
  %60 = alloca { ptr, i32 }, align 8
  %61 = alloca i8, align 1
  %62 = alloca i64, align 8
  %63 = alloca i32, align 4
  %64 = alloca %"struct.std::_Bit_reference", align 8
  %65 = alloca %struct.Span, align 8
  %66 = alloca %"class.std::function.0", align 8
  %67 = alloca %class.anon.470, align 1
  %68 = alloca %struct.Span, align 8
  %69 = alloca %"class.std::function.0", align 8
  %70 = alloca %class.anon.472, align 1
  %71 = alloca %struct.Span, align 8
  %72 = alloca %"class.std::function.0", align 8
  %73 = alloca %class.anon.474, align 1
  %74 = alloca i32, align 4
  %75 = alloca %class.RcString, align 8
  %76 = alloca %"class.std::__cxx11::basic_string", align 8
  %77 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %78 = alloca ptr, align 8
  %79 = alloca %"struct.(anonymous namespace)::GetParams::ParamsSet", align 8
  %80 = alloca %"struct.HIR::PathParams", align 8
  %81 = alloca i32, align 4
  %82 = alloca %"struct.std::_Bit_reference", align 8
  %83 = alloca %"class.HIR::TypeRef", align 8
  %84 = alloca %class.RcString, align 8
  %85 = alloca i64, align 8
  %86 = alloca %"struct.std::_Bit_reference", align 8
  %87 = alloca %"class.HIR::ConstGeneric", align 8
  %88 = alloca %"struct.HIR::GenericRef", align 8
  %89 = alloca %class.RcString, align 8
  %90 = alloca i64, align 8
  %91 = alloca %"struct.std::_Bit_reference", align 8
  %92 = alloca %"struct.HIR::LifetimeRef", align 4
  %93 = alloca %struct.Matcher, align 8
  %94 = alloca %struct.Span, align 8
  %95 = alloca %class.RcString, align 8
  %96 = alloca ptr, align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %98 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %99 = alloca ptr, align 8
  %100 = alloca ptr, align 8
  %101 = alloca ptr, align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca %"class.HIR::TraitPath", align 8
  %104 = alloca ptr, align 8
  %105 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %106 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %107 = alloca ptr, align 8
  %108 = alloca ptr, align 8
  %109 = alloca ptr, align 8
  %110 = alloca %"class.HIR::GenericPath", align 8
  %111 = alloca i8, align 1
  %112 = alloca %"class.std::function", align 8
  %113 = alloca %class.anon.476, align 8
  %114 = alloca i8, align 1
  %115 = alloca %"class.std::function", align 8
  %116 = alloca %class.anon.477, align 1
  %117 = alloca %"class.std::function.434", align 8
  %118 = alloca %class.anon.479, align 1
  %119 = alloca i1, align 1
  %120 = alloca i64, align 8
  %121 = alloca %"struct.std::_Bit_reference", align 8
  %122 = alloca %"struct.std::_Bit_reference", align 8
  %123 = alloca i64, align 8
  %124 = alloca %"struct.std::_Bit_reference", align 8
  %125 = alloca %"struct.std::_Bit_reference", align 8
  %126 = alloca %"struct.HIR::LifetimeRef", align 4
  %127 = alloca i64, align 8
  %128 = alloca %"class.HIR::TypeRef", align 8
  %129 = alloca %"struct.HIR::PathParams", align 8
  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
  %130 = load ptr, ptr %11, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #10
  call void @llvm.memset.p0.i64(ptr align 8 %20, i8 0, i64 8, i1 false)
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr %21) #10
  %131 = call noundef zeroext i1 @_Z13debug_enabledv()
  %132 = zext i1 %131 to i64
  %133 = select i1 %131, ptr @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #10
  %134 = getelementptr inbounds %class.anon.462, ptr %23, i32 0, i32 0
  %135 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %135, ptr %134, align 8, !tbaa !5
  %136 = getelementptr inbounds %class.anon.462, ptr %23, i32 0, i32 1
  %137 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %137, ptr %136, align 8, !tbaa !5
  %138 = getelementptr inbounds %class.anon.462, ptr %23, i32 0, i32 2
  %139 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %139, ptr %138, align 8, !tbaa !5
  %140 = getelementptr inbounds %class.anon.462, ptr %23, i32 0, i32 3
  %141 = load ptr, ptr %18, align 8, !tbaa !5
  store ptr %141, ptr %140, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(32) %23)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %21, ptr noundef %133, ptr noundef %22)
          to label %142 unwind label %178

142:                                              ; preds = %9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %26) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %143 unwind label %182

143:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 120, ptr %27) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %28) #10
  %144 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %145 unwind label %186

145:                                              ; preds = %143
  %146 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_19GetParamsC2E4SpanRKN3HIR13GenericParamsERNS2_10PathParamsERNS0_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef %29, ptr noundef nonnull align 8 dereferenceable(96) %146, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(120) %27)
          to label %147 unwind label %190

147:                                              ; preds = %145
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %30) #10
  %148 = load ptr, ptr %18, align 8, !tbaa !5
  %149 = load ptr, ptr %12, align 8, !tbaa !5
  %150 = load ptr, ptr %15, align 8, !tbaa !5
  %151 = invoke noundef i32 @_ZNK3HIR7TypeRef24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(8) %148, ptr noundef nonnull align 8 dereferenceable(8) %149, ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %152 unwind label %194

152:                                              ; preds = %147
  store i32 %151, ptr %30, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr %31) #10
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN22BaseImplPlaceholderIdxC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %31) #10
  %153 = load ptr, ptr %14, align 8, !tbaa !5
  %154 = icmp ne ptr %153, null
  br i1 %154, label %155, label %503

155:                                              ; preds = %152
  br label %156

156:                                              ; preds = %155
  %157 = load ptr, ptr %14, align 8, !tbaa !5
  %158 = getelementptr inbounds %"struct.HIR::PathParams", ptr %157, i32 0, i32 1
  %159 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %158)
          to label %160 unwind label %198

160:                                              ; preds = %156
  %161 = load ptr, ptr %17, align 8, !tbaa !5
  %162 = getelementptr inbounds %"struct.HIR::PathParams", ptr %161, i32 0, i32 1
  %163 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %162)
          to label %164 unwind label %198

164:                                              ; preds = %160
  %165 = icmp eq i64 %159, %163
  br i1 %165, label %220, label %166

166:                                              ; preds = %164
  call void @llvm.lifetime.start.p0(i64 8, ptr %32) #10
  %167 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %167)
          to label %168 unwind label %202

168:                                              ; preds = %166
  call void @llvm.lifetime.start.p0(i64 24, ptr %34) #10
  %169 = getelementptr inbounds %class.anon.467, ptr %34, i32 0, i32 0
  %170 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %170, ptr %169, align 8, !tbaa !5
  %171 = getelementptr inbounds %class.anon.467, ptr %34, i32 0, i32 1
  store ptr %14, ptr %171, align 8, !tbaa !5
  %172 = getelementptr inbounds %class.anon.467, ptr %34, i32 0, i32 2
  %173 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %173, ptr %172, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(24) %34)
          to label %174 unwind label %206

174:                                              ; preds = %168
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef %33)
          to label %175 unwind label %210

175:                                              ; preds = %174
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  %176 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %176, ptr noundef @.str)
          to label %177 unwind label %216

177:                                              ; preds = %175
  invoke void @__cxa_throw(ptr %176, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1509 unwind label %198

178:                                              ; preds = %9
  %179 = landingpad { ptr, i32 }
          cleanup
  %180 = extractvalue { ptr, i32 } %179, 0
  store ptr %180, ptr %24, align 8
  %181 = extractvalue { ptr, i32 } %179, 1
  store i32 %181, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #10
  br label %1503

182:                                              ; preds = %142
  %183 = landingpad { ptr, i32 }
          cleanup
  %184 = extractvalue { ptr, i32 } %183, 0
  store ptr %184, ptr %24, align 8
  %185 = extractvalue { ptr, i32 } %183, 1
  store i32 %185, ptr %25, align 4
  br label %1502

186:                                              ; preds = %143
  %187 = landingpad { ptr, i32 }
          cleanup
  %188 = extractvalue { ptr, i32 } %187, 0
  store ptr %188, ptr %24, align 8
  %189 = extractvalue { ptr, i32 } %187, 1
  store i32 %189, ptr %25, align 4
  br label %1501

190:                                              ; preds = %145
  %191 = landingpad { ptr, i32 }
          cleanup
  %192 = extractvalue { ptr, i32 } %191, 0
  store ptr %192, ptr %24, align 8
  %193 = extractvalue { ptr, i32 } %191, 1
  store i32 %193, ptr %25, align 4
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #10
  br label %1501

194:                                              ; preds = %147
  %195 = landingpad { ptr, i32 }
          cleanup
  %196 = extractvalue { ptr, i32 } %195, 0
  store ptr %196, ptr %24, align 8
  %197 = extractvalue { ptr, i32 } %195, 1
  store i32 %197, ptr %25, align 4
  br label %1500

198:                                              ; preds = %517, %515, %513, %510, %507, %177, %160, %156
  %199 = landingpad { ptr, i32 }
          cleanup
  %200 = extractvalue { ptr, i32 } %199, 0
  store ptr %200, ptr %24, align 8
  %201 = extractvalue { ptr, i32 } %199, 1
  store i32 %201, ptr %25, align 4
  br label %1499

202:                                              ; preds = %166
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %24, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %25, align 4
  br label %215

206:                                              ; preds = %168
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %24, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %25, align 4
  br label %214

210:                                              ; preds = %174
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %24, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %214

214:                                              ; preds = %210, %206
  call void @llvm.lifetime.end.p0(i64 24, ptr %34) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #10
  br label %215

215:                                              ; preds = %214, %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %32) #10
  br label %1499

216:                                              ; preds = %175
  %217 = landingpad { ptr, i32 }
          cleanup
  %218 = extractvalue { ptr, i32 } %217, 0
  store ptr %218, ptr %24, align 8
  %219 = extractvalue { ptr, i32 } %217, 1
  store i32 %219, ptr %25, align 4
  call void @__cxa_free_exception(ptr %176) #10
  br label %1499

220:                                              ; preds = %164
  br label %221

221:                                              ; preds = %220
  br label %222

222:                                              ; preds = %221
  call void @llvm.lifetime.start.p0(i64 4, ptr %35) #10
  %223 = load ptr, ptr %17, align 8, !tbaa !5
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  %225 = load ptr, ptr %14, align 8, !tbaa !5
  %226 = invoke noundef i32 @_ZNK3HIR10PathParams24match_test_generics_fuzzERK4SpanRKS0_RKNS_19ResolvePlaceholdersERNS_13MatchGenericsE(ptr noundef nonnull align 8 dereferenceable(24) %223, ptr noundef nonnull align 8 dereferenceable(8) %224, ptr noundef nonnull align 8 dereferenceable(24) %225, ptr noundef nonnull align 8 dereferenceable(8) %20, ptr noundef nonnull align 8 dereferenceable(8) %28)
          to label %227 unwind label %244

227:                                              ; preds = %222
  store i32 %226, ptr %35, align 4, !tbaa !9
  %228 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %30, ptr noundef nonnull align 4 dereferenceable(4) %35)
          to label %229 unwind label %244

229:                                              ; preds = %227
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  call void @llvm.lifetime.start.p0(i64 4, ptr %36) #10
  store i32 0, ptr %36, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %37) #10
  store i32 0, ptr %37, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr %38) #10
  store i32 0, ptr %38, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #10
  %230 = getelementptr inbounds %class.anon.468, ptr %39, i32 0, i32 0
  store ptr %38, ptr %230, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #10
  %231 = load ptr, ptr %14, align 8, !tbaa !5
  %232 = getelementptr inbounds %"struct.HIR::PathParams", ptr %231, i32 0, i32 1
  store ptr %232, ptr %40, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #10
  %233 = load ptr, ptr %40, align 8, !tbaa !5
  %234 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %233)
          to label %235 unwind label %248

235:                                              ; preds = %229
  store ptr %234, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #10
  %236 = load ptr, ptr %40, align 8, !tbaa !5
  %237 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %236)
          to label %238 unwind label %252

238:                                              ; preds = %235
  store ptr %237, ptr %42, align 8, !tbaa !5
  br label %239

239:                                              ; preds = %263, %238
  %240 = load ptr, ptr %41, align 8, !tbaa !5
  %241 = load ptr, ptr %42, align 8, !tbaa !5
  %242 = icmp ne ptr %240, %241
  br i1 %242, label %256, label %243

243:                                              ; preds = %239
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  br label %272

244:                                              ; preds = %227, %222
  %245 = landingpad { ptr, i32 }
          cleanup
  %246 = extractvalue { ptr, i32 } %245, 0
  store ptr %246, ptr %24, align 8
  %247 = extractvalue { ptr, i32 } %245, 1
  store i32 %247, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %35) #10
  br label %1499

248:                                              ; preds = %229
  %249 = landingpad { ptr, i32 }
          cleanup
  %250 = extractvalue { ptr, i32 } %249, 0
  store ptr %250, ptr %24, align 8
  %251 = extractvalue { ptr, i32 } %249, 1
  store i32 %251, ptr %25, align 4
  br label %271

252:                                              ; preds = %235
  %253 = landingpad { ptr, i32 }
          cleanup
  %254 = extractvalue { ptr, i32 } %253, 0
  store ptr %254, ptr %24, align 8
  %255 = extractvalue { ptr, i32 } %253, 1
  store i32 %255, ptr %25, align 4
  br label %270

256:                                              ; preds = %239
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #10
  %257 = load ptr, ptr %41, align 8, !tbaa !5
  store ptr %257, ptr %43, align 8, !tbaa !5
  %258 = load ptr, ptr %43, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %45) #10
  %259 = getelementptr inbounds %class.anon.469, ptr %45, i32 0, i32 0
  store ptr %36, ptr %259, align 8, !tbaa !5
  %260 = getelementptr inbounds %class.anon.469, ptr %45, i32 0, i32 1
  store ptr %39, ptr %260, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsES3_RKNS0_13GenericParamsERSF_S3_S_IFbSE_NS0_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(16) %45) #10
  %261 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %258, ptr noundef %44)
          to label %262 unwind label %266

262:                                              ; preds = %256
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %263

263:                                              ; preds = %262
  %264 = load ptr, ptr %41, align 8, !tbaa !5
  %265 = getelementptr inbounds %"class.HIR::TypeRef", ptr %264, i32 1
  store ptr %265, ptr %41, align 8, !tbaa !5
  br label %239

266:                                              ; preds = %256
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %24, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr %45) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #10
  br label %270

270:                                              ; preds = %266, %252
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #10
  br label %271

271:                                              ; preds = %270, %248
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #10
  br label %502

272:                                              ; preds = %243
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #10
  %273 = load ptr, ptr %14, align 8, !tbaa !5
  %274 = getelementptr inbounds %"struct.HIR::PathParams", ptr %273, i32 0, i32 0
  store ptr %274, ptr %46, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #10
  %275 = load ptr, ptr %46, align 8, !tbaa !5
  %276 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR11LifetimeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %277 unwind label %286

277:                                              ; preds = %272
  store ptr %276, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #10
  %278 = load ptr, ptr %46, align 8, !tbaa !5
  %279 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR11LifetimeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %280 unwind label %290

280:                                              ; preds = %277
  store ptr %279, ptr %48, align 8, !tbaa !5
  br label %281

281:                                              ; preds = %298, %280
  %282 = load ptr, ptr %47, align 8, !tbaa !5
  %283 = load ptr, ptr %48, align 8, !tbaa !5
  %284 = icmp ne ptr %282, %283
  br i1 %284, label %294, label %285

285:                                              ; preds = %281
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %307

286:                                              ; preds = %272
  %287 = landingpad { ptr, i32 }
          cleanup
  %288 = extractvalue { ptr, i32 } %287, 0
  store ptr %288, ptr %24, align 8
  %289 = extractvalue { ptr, i32 } %287, 1
  store i32 %289, ptr %25, align 4
  br label %306

290:                                              ; preds = %277
  %291 = landingpad { ptr, i32 }
          cleanup
  %292 = extractvalue { ptr, i32 } %291, 0
  store ptr %292, ptr %24, align 8
  %293 = extractvalue { ptr, i32 } %291, 1
  store i32 %293, ptr %25, align 4
  br label %305

294:                                              ; preds = %281
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #10
  %295 = load ptr, ptr %47, align 8, !tbaa !5
  store ptr %295, ptr %49, align 8, !tbaa !5
  %296 = load ptr, ptr %49, align 8, !tbaa !5
  invoke void @"_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEENK3$_9clERKNS3_11LifetimeRefE"(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 4 dereferenceable(4) %296)
          to label %297 unwind label %301

297:                                              ; preds = %294
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %298

298:                                              ; preds = %297
  %299 = load ptr, ptr %47, align 8, !tbaa !5
  %300 = getelementptr inbounds %"struct.HIR::LifetimeRef", ptr %299, i32 1
  store ptr %300, ptr %47, align 8, !tbaa !5
  br label %281

301:                                              ; preds = %294
  %302 = landingpad { ptr, i32 }
          cleanup
  %303 = extractvalue { ptr, i32 } %302, 0
  store ptr %303, ptr %24, align 8
  %304 = extractvalue { ptr, i32 } %302, 1
  store i32 %304, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #10
  br label %305

305:                                              ; preds = %301, %290
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #10
  br label %306

306:                                              ; preds = %305, %286
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #10
  br label %502

307:                                              ; preds = %285
  %308 = load i32, ptr %36, align 4, !tbaa !11
  %309 = add i32 %308, 1
  %310 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 0
  store i32 %309, ptr %310, align 4, !tbaa !13
  %311 = load i32, ptr %37, align 4, !tbaa !11
  %312 = add i32 %311, 1
  %313 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 1
  store i32 %312, ptr %313, align 4, !tbaa !15
  %314 = load i32, ptr %38, align 4, !tbaa !11
  %315 = add i32 %314, 1
  %316 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 2
  store i32 %315, ptr %316, align 4, !tbaa !16
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #10
  %317 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 0
  %318 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %317) #10
  store { ptr, i32 } %318, ptr %52, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %51, ptr align 8 %52, i64 12, i1 false)
  %319 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 0
  %320 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %319) #10
  store { ptr, i32 } %320, ptr %54, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %53, ptr align 8 %54, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #10
  store i8 0, ptr %55, align 1, !tbaa !17
  %321 = getelementptr inbounds { ptr, i32 }, ptr %51, i32 0, i32 0
  %322 = load ptr, ptr %321, align 8
  %323 = getelementptr inbounds { ptr, i32 }, ptr %51, i32 0, i32 1
  %324 = load i32, ptr %323, align 8
  %325 = getelementptr inbounds { ptr, i32 }, ptr %53, i32 0, i32 0
  %326 = load ptr, ptr %325, align 8
  %327 = getelementptr inbounds { ptr, i32 }, ptr %53, i32 0, i32 1
  %328 = load i32, ptr %327, align 8
  %329 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %322, i32 %324, ptr %326, i32 %328, ptr noundef nonnull align 1 dereferenceable(1) %55)
          to label %330 unwind label %353

330:                                              ; preds = %307
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #10
  store i64 %329, ptr %50, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #10
  %331 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 2
  %332 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %331) #10
  store { ptr, i32 } %332, ptr %58, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %57, ptr align 8 %58, i64 12, i1 false)
  %333 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 2
  %334 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %333) #10
  store { ptr, i32 } %334, ptr %60, align 8
  call void @llvm.memcpy.p0.p0.i64(ptr align 8 %59, ptr align 8 %60, i64 12, i1 false)
  call void @llvm.lifetime.start.p0(i64 1, ptr %61) #10
  store i8 0, ptr %61, align 1, !tbaa !17
  %335 = getelementptr inbounds { ptr, i32 }, ptr %57, i32 0, i32 0
  %336 = load ptr, ptr %335, align 8
  %337 = getelementptr inbounds { ptr, i32 }, ptr %57, i32 0, i32 1
  %338 = load i32, ptr %337, align 8
  %339 = getelementptr inbounds { ptr, i32 }, ptr %59, i32 0, i32 0
  %340 = load ptr, ptr %339, align 8
  %341 = getelementptr inbounds { ptr, i32 }, ptr %59, i32 0, i32 1
  %342 = load i32, ptr %341, align 8
  %343 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %336, i32 %338, ptr %340, i32 %342, ptr noundef nonnull align 1 dereferenceable(1) %61)
          to label %344 unwind label %357

344:                                              ; preds = %330
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #10
  store i64 %343, ptr %56, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #10
  store i64 0, ptr %62, align 8, !tbaa !19
  call void @llvm.lifetime.start.p0(i64 4, ptr %63) #10
  store i32 0, ptr %63, align 4, !tbaa !11
  br label %345

345:                                              ; preds = %385, %344
  %346 = load i32, ptr %63, align 4, !tbaa !11
  %347 = zext i32 %346 to i64
  %348 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %349 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %348)
          to label %350 unwind label %361

350:                                              ; preds = %345
  %351 = icmp ult i64 %347, %349
  br i1 %351, label %365, label %352

352:                                              ; preds = %350
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %389

353:                                              ; preds = %307
  %354 = landingpad { ptr, i32 }
          cleanup
  %355 = extractvalue { ptr, i32 } %354, 0
  store ptr %355, ptr %24, align 8
  %356 = extractvalue { ptr, i32 } %354, 1
  store i32 %356, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #10
  br label %501

357:                                              ; preds = %330
  %358 = landingpad { ptr, i32 }
          cleanup
  %359 = extractvalue { ptr, i32 } %358, 0
  store ptr %359, ptr %24, align 8
  %360 = extractvalue { ptr, i32 } %358, 1
  store i32 %360, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %61) #10
  br label %500

361:                                              ; preds = %345
  %362 = landingpad { ptr, i32 }
          cleanup
  %363 = extractvalue { ptr, i32 } %362, 0
  store ptr %363, ptr %24, align 8
  %364 = extractvalue { ptr, i32 } %362, 1
  store i32 %364, ptr %25, align 4
  br label %388

365:                                              ; preds = %350
  call void @llvm.lifetime.start.p0(i64 16, ptr %64) #10
  %366 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 1
  %367 = load i32, ptr %63, align 4, !tbaa !11
  %368 = zext i32 %367 to i64
  %369 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %366, i64 noundef %368)
          to label %370 unwind label %380

370:                                              ; preds = %365
  %371 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 0
  %372 = extractvalue { ptr, i64 } %369, 0
  store ptr %372, ptr %371, align 8
  %373 = getelementptr inbounds { ptr, i64 }, ptr %64, i32 0, i32 1
  %374 = extractvalue { ptr, i64 } %369, 1
  store i64 %374, ptr %373, align 8
  %375 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %64) #10
  %376 = xor i1 %375, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #10
  br i1 %376, label %377, label %384

377:                                              ; preds = %370
  %378 = load i64, ptr %62, align 8, !tbaa !19
  %379 = add i64 %378, 1
  store i64 %379, ptr %62, align 8, !tbaa !19
  br label %384

380:                                              ; preds = %365
  %381 = landingpad { ptr, i32 }
          cleanup
  %382 = extractvalue { ptr, i32 } %381, 0
  store ptr %382, ptr %24, align 8
  %383 = extractvalue { ptr, i32 } %381, 1
  store i32 %383, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %64) #10
  br label %388

384:                                              ; preds = %377, %370
  br label %385

385:                                              ; preds = %384
  %386 = load i32, ptr %63, align 4, !tbaa !11
  %387 = add i32 %386, 1
  store i32 %387, ptr %63, align 4, !tbaa !11
  br label %345, !llvm.loop !21

388:                                              ; preds = %380, %361
  call void @llvm.lifetime.end.p0(i64 4, ptr %63) #10
  br label %499

389:                                              ; preds = %352
  %390 = load i64, ptr %50, align 8, !tbaa !19
  %391 = icmp ugt i64 %390, 0
  br i1 %391, label %392, label %428

392:                                              ; preds = %389
  br label %393

393:                                              ; preds = %392
  %394 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 0
  %395 = load i32, ptr %394, align 4, !tbaa !13
  %396 = zext i32 %395 to i64
  %397 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %398 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %397)
          to label %399 unwind label %408

399:                                              ; preds = %393
  %400 = add i64 %396, %398
  %401 = icmp ule i64 %400, 256
  br i1 %401, label %425, label %402

402:                                              ; preds = %399
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #10
  %403 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef nonnull align 8 dereferenceable(8) %403)
          to label %404 unwind label %412

404:                                              ; preds = %402
  call void @llvm.lifetime.start.p0(i64 1, ptr %67) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %66, ptr noundef nonnull align 1 dereferenceable(1) %67) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %65, ptr noundef %66)
          to label %405 unwind label %416

405:                                              ; preds = %404
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  %406 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %406, ptr noundef @.str)
          to label %407 unwind label %421

407:                                              ; preds = %405
  invoke void @__cxa_throw(ptr %406, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1509 unwind label %408

408:                                              ; preds = %481, %467, %446, %432, %407, %393
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %24, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %25, align 4
  br label %499

412:                                              ; preds = %402
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %24, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %25, align 4
  br label %420

416:                                              ; preds = %404
  %417 = landingpad { ptr, i32 }
          cleanup
  %418 = extractvalue { ptr, i32 } %417, 0
  store ptr %418, ptr %24, align 8
  %419 = extractvalue { ptr, i32 } %417, 1
  store i32 %419, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %67) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %420

420:                                              ; preds = %416, %412
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #10
  br label %499

421:                                              ; preds = %405
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %24, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %25, align 4
  call void @__cxa_free_exception(ptr %406) #10
  br label %499

425:                                              ; preds = %399
  br label %426

426:                                              ; preds = %425
  br label %427

427:                                              ; preds = %426
  br label %428

428:                                              ; preds = %427, %389
  %429 = load i64, ptr %56, align 8, !tbaa !19
  %430 = icmp ugt i64 %429, 0
  br i1 %430, label %431, label %463

431:                                              ; preds = %428
  br label %432

432:                                              ; preds = %431
  %433 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 1
  %434 = load i32, ptr %433, align 4, !tbaa !15
  %435 = zext i32 %434 to i64
  %436 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 2
  %437 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %436)
          to label %438 unwind label %408

438:                                              ; preds = %432
  %439 = add i64 %435, %437
  %440 = icmp ule i64 %439, 256
  br i1 %440, label %460, label %441

441:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #10
  %442 = 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) %442)
          to label %443 unwind label %447

443:                                              ; preds = %441
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 1 dereferenceable(1) %70) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %68, ptr noundef %69)
          to label %444 unwind label %451

444:                                              ; preds = %443
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  %445 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %445, ptr noundef @.str)
          to label %446 unwind label %456

446:                                              ; preds = %444
  invoke void @__cxa_throw(ptr %445, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1509 unwind label %408

447:                                              ; preds = %441
  %448 = landingpad { ptr, i32 }
          cleanup
  %449 = extractvalue { ptr, i32 } %448, 0
  store ptr %449, ptr %24, align 8
  %450 = extractvalue { ptr, i32 } %448, 1
  store i32 %450, ptr %25, align 4
  br label %455

451:                                              ; preds = %443
  %452 = landingpad { ptr, i32 }
          cleanup
  %453 = extractvalue { ptr, i32 } %452, 0
  store ptr %453, ptr %24, align 8
  %454 = extractvalue { ptr, i32 } %452, 1
  store i32 %454, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  br label %455

455:                                              ; preds = %451, %447
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #10
  br label %499

456:                                              ; preds = %444
  %457 = landingpad { ptr, i32 }
          cleanup
  %458 = extractvalue { ptr, i32 } %457, 0
  store ptr %458, ptr %24, align 8
  %459 = extractvalue { ptr, i32 } %457, 1
  store i32 %459, ptr %25, align 4
  call void @__cxa_free_exception(ptr %445) #10
  br label %499

460:                                              ; preds = %438
  br label %461

461:                                              ; preds = %460
  br label %462

462:                                              ; preds = %461
  br label %463

463:                                              ; preds = %462, %428
  %464 = load i64, ptr %50, align 8, !tbaa !19
  %465 = icmp ugt i64 %464, 0
  br i1 %465, label %466, label %498

466:                                              ; preds = %463
  br label %467

467:                                              ; preds = %466
  %468 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 2
  %469 = load i32, ptr %468, align 4, !tbaa !16
  %470 = zext i32 %469 to i64
  %471 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %472 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %471)
          to label %473 unwind label %408

473:                                              ; preds = %467
  %474 = add i64 %470, %472
  %475 = icmp ule i64 %474, 256
  br i1 %475, label %495, label %476

476:                                              ; preds = %473
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #10
  %477 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef nonnull align 8 dereferenceable(8) %477)
          to label %478 unwind label %482

478:                                              ; preds = %476
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 1 dereferenceable(1) %73) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %71, ptr noundef %72)
          to label %479 unwind label %486

479:                                              ; preds = %478
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  %480 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %480, ptr noundef @.str)
          to label %481 unwind label %491

481:                                              ; preds = %479
  invoke void @__cxa_throw(ptr %480, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #11
          to label %1509 unwind label %408

482:                                              ; preds = %476
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %24, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %25, align 4
  br label %490

486:                                              ; preds = %478
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %24, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %71) #10
  br label %490

490:                                              ; preds = %486, %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #10
  br label %499

491:                                              ; preds = %479
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %24, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %25, align 4
  call void @__cxa_free_exception(ptr %480) #10
  br label %499

495:                                              ; preds = %473
  br label %496

496:                                              ; preds = %495
  br label %497

497:                                              ; preds = %496
  br label %498

498:                                              ; preds = %497, %463
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %503

499:                                              ; preds = %491, %490, %456, %455, %421, %420, %408, %388
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #10
  br label %500

500:                                              ; preds = %499, %357
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #10
  br label %501

501:                                              ; preds = %500, %353
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #10
  br label %502

502:                                              ; preds = %501, %306, %271
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %38) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %37) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %36) #10
  br label %1499

503:                                              ; preds = %498, %152
  %504 = load i32, ptr %30, align 4, !tbaa !9
  %505 = icmp eq i32 %504, 2
  br i1 %505, label %506, label %523

506:                                              ; preds = %503
  br label %507

507:                                              ; preds = %506
  %508 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %509 unwind label %198

509:                                              ; preds = %507
  br i1 %508, label %510, label %520

510:                                              ; preds = %509
  %511 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %511, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %513 unwind label %198

513:                                              ; preds = %510
  %514 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %512, ptr noundef @.str.28)
          to label %515 unwind label %198

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

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

519:                                              ; preds = %517
  br label %520

520:                                              ; preds = %519, %509
  br label %521

521:                                              ; preds = %520
  br label %522

522:                                              ; preds = %521
  store i1 false, ptr %10, align 1
  store i32 1, ptr %74, align 4
  br label %1497

523:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #10
  call void @llvm.lifetime.start.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 376, ptr %77) #10
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %77)
          to label %524 unwind label %541

524:                                              ; preds = %523
  %525 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA8_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %77, ptr noundef nonnull align 1 dereferenceable(8) @.str.29)
          to label %526 unwind label %545

526:                                              ; preds = %524
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #10
  %527 = load ptr, ptr %16, align 8, !tbaa !5
  store ptr %527, ptr %78, align 8, !tbaa !5
  %528 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKN3HIR13GenericParamsEEOT_SB_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %525, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %529 unwind label %549

529:                                              ; preds = %526
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind writable sret(%"class.std::__cxx11::basic_string") align 8 %76, ptr noundef nonnull align 8 dereferenceable(112) %528)
          to label %530 unwind label %549

530:                                              ; preds = %529
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind writable sret(%class.RcString) align 8 %75, ptr noundef nonnull align 8 dereferenceable(32) %76)
          to label %531 unwind label %553

531:                                              ; preds = %530
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #10
  call void @llvm.lifetime.end.p0(i64 376, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  call void @llvm.lifetime.start.p0(i64 120, ptr %79) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr %80) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %80)
          to label %532 unwind label %560

532:                                              ; preds = %531
  call void @llvm.lifetime.start.p0(i64 4, ptr %81) #10
  store i32 0, ptr %81, align 4, !tbaa !11
  br label %533

533:                                              ; preds = %668, %532
  %534 = load i32, ptr %81, align 4, !tbaa !11
  %535 = zext i32 %534 to i64
  %536 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %537 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %536)
          to label %538 unwind label %564

538:                                              ; preds = %533
  %539 = icmp ult i64 %535, %537
  br i1 %539, label %568, label %540

540:                                              ; preds = %538
  store i32 19, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %672

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

545:                                              ; preds = %524
  %546 = landingpad { ptr, i32 }
          cleanup
  %547 = extractvalue { ptr, i32 } %546, 0
  store ptr %547, ptr %24, align 8
  %548 = extractvalue { ptr, i32 } %546, 1
  store i32 %548, ptr %25, align 4
  br label %558

549:                                              ; preds = %529, %526
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %24, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %25, align 4
  br label %557

553:                                              ; preds = %530
  %554 = landingpad { ptr, i32 }
          cleanup
  %555 = extractvalue { ptr, i32 } %554, 0
  store ptr %555, ptr %24, align 8
  %556 = extractvalue { ptr, i32 } %554, 1
  store i32 %556, ptr %25, align 4
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #10
  br label %557

557:                                              ; preds = %553, %549
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #10
  br label %558

558:                                              ; preds = %557, %545
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %77) #10
  br label %559

559:                                              ; preds = %558, %541
  call void @llvm.lifetime.end.p0(i64 376, ptr %77) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %76) #10
  br label %1496

560:                                              ; preds = %531
  %561 = landingpad { ptr, i32 }
          cleanup
  %562 = extractvalue { ptr, i32 } %561, 0
  store ptr %562, ptr %24, align 8
  %563 = extractvalue { ptr, i32 } %561, 1
  store i32 %563, ptr %25, align 4
  br label %1495

564:                                              ; preds = %647, %645, %637, %635, %632, %630, %628, %623, %621, %618, %615, %594, %590, %589, %585, %580, %533
  %565 = landingpad { ptr, i32 }
          cleanup
  %566 = extractvalue { ptr, i32 } %565, 0
  store ptr %566, ptr %24, align 8
  %567 = extractvalue { ptr, i32 } %565, 1
  store i32 %567, ptr %25, align 4
  br label %671

568:                                              ; preds = %538
  call void @llvm.lifetime.start.p0(i64 16, ptr %82) #10
  %569 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 0
  %570 = load i32, ptr %81, align 4, !tbaa !11
  %571 = zext i32 %570 to i64
  %572 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %569, i64 noundef %571)
          to label %573 unwind label %596

573:                                              ; preds = %568
  %574 = getelementptr inbounds { ptr, i64 }, ptr %82, i32 0, i32 0
  %575 = extractvalue { ptr, i64 } %572, 0
  store ptr %575, ptr %574, align 8
  %576 = getelementptr inbounds { ptr, i64 }, ptr %82, i32 0, i32 1
  %577 = extractvalue { ptr, i64 } %572, 1
  store i64 %577, ptr %576, align 8
  %578 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %82) #10
  %579 = xor i1 %578, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #10
  br i1 %579, label %580, label %667

580:                                              ; preds = %573
  %581 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 1
  %582 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %583 unwind label %564

583:                                              ; preds = %580
  %584 = icmp eq i64 %582, 0
  br i1 %584, label %585, label %600

585:                                              ; preds = %583
  %586 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 1
  %587 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %588 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %587)
          to label %589 unwind label %564

589:                                              ; preds = %585
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %586, i64 noundef %588)
          to label %590 unwind label %564

590:                                              ; preds = %589
  %591 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %79, i32 0, i32 0
  %592 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %593 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %592)
          to label %594 unwind label %564

594:                                              ; preds = %590
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %591, i64 noundef %593, i1 noundef zeroext false)
          to label %595 unwind label %564

595:                                              ; preds = %594
  br label %600

596:                                              ; preds = %568
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %24, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %82) #10
  br label %671

600:                                              ; preds = %595, %583
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #10
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %601 unwind label %650

601:                                              ; preds = %600
  %602 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 0
  %603 = load i32, ptr %602, align 4, !tbaa !13
  %604 = add i32 512, %603
  %605 = load i32, ptr %81, align 4, !tbaa !11
  %606 = add i32 %604, %605
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %83, ptr noundef %84, i32 noundef %606)
          to label %607 unwind label %654

607:                                              ; preds = %601
  %608 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 1
  %609 = load i32, ptr %81, align 4, !tbaa !11
  %610 = zext i32 %609 to i64
  %611 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %608, i64 noundef %610)
          to label %612 unwind label %658

612:                                              ; preds = %607
  %613 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %611, ptr noundef nonnull align 8 dereferenceable(8) %83)
          to label %614 unwind label %658

614:                                              ; preds = %612
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  br label %615

615:                                              ; preds = %614
  %616 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %617 unwind label %564

617:                                              ; preds = %615
  br i1 %616, label %618, label %664

618:                                              ; preds = %617
  %619 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %619, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %621 unwind label %564

621:                                              ; preds = %618
  %622 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %620, ptr noundef @.str.30)
          to label %623 unwind label %564

623:                                              ; preds = %621
  %624 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 1
  %625 = load i32, ptr %81, align 4, !tbaa !11
  %626 = zext i32 %625 to i64
  %627 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %624, i64 noundef %626)
          to label %628 unwind label %564

628:                                              ; preds = %623
  %629 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %622, ptr noundef nonnull align 8 dereferenceable(8) %627)
          to label %630 unwind label %564

630:                                              ; preds = %628
  %631 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %629, ptr noundef @.str.31)
          to label %632 unwind label %564

632:                                              ; preds = %630
  %633 = load i32, ptr %81, align 4, !tbaa !11
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %631, i32 noundef %633)
          to label %635 unwind label %564

635:                                              ; preds = %632
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef @.str.25)
          to label %637 unwind label %564

637:                                              ; preds = %635
  %638 = load ptr, ptr %16, align 8, !tbaa !5
  %639 = getelementptr inbounds %"class.HIR::GenericParams", ptr %638, i32 0, i32 0
  %640 = load i32, ptr %81, align 4, !tbaa !11
  %641 = zext i32 %640 to i64
  %642 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %639, i64 noundef %641) #10
  %643 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %642, i32 0, i32 0
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef nonnull align 8 dereferenceable(8) %643)
          to label %645 unwind label %564

645:                                              ; preds = %637
  %646 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %644, ptr noundef @_ZSt3decRSt8ios_base)
          to label %647 unwind label %564

647:                                              ; preds = %645
  %648 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %646, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %649 unwind label %564

649:                                              ; preds = %647
  br label %664

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

654:                                              ; preds = %601
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %24, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %25, align 4
  br label %662

658:                                              ; preds = %612, %607
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %24, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %25, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %83) #10
  br label %662

662:                                              ; preds = %658, %654
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  br label %663

663:                                              ; preds = %662, %650
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #10
  br label %671

664:                                              ; preds = %649, %617
  br label %665

665:                                              ; preds = %664
  br label %666

666:                                              ; preds = %665
  br label %667

667:                                              ; preds = %666, %573
  br label %668

668:                                              ; preds = %667
  %669 = load i32, ptr %81, align 4, !tbaa !11
  %670 = add i32 %669, 1
  store i32 %670, ptr %81, align 4, !tbaa !11
  br label %533, !llvm.loop !23

671:                                              ; preds = %663, %596, %564
  call void @llvm.lifetime.end.p0(i64 4, ptr %81) #10
  br label %1494

672:                                              ; preds = %540
  call void @llvm.lifetime.start.p0(i64 8, ptr %85) #10
  store i64 0, ptr %85, align 8, !tbaa !19
  br label %673

673:                                              ; preds = %752, %672
  %674 = load i64, ptr %85, align 8, !tbaa !19
  %675 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 2
  %676 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %675)
          to label %677 unwind label %680

677:                                              ; preds = %673
  %678 = icmp ult i64 %674, %676
  br i1 %678, label %684, label %679

679:                                              ; preds = %677
  store i32 24, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %756

680:                                              ; preds = %709, %705, %704, %700, %695, %673
  %681 = landingpad { ptr, i32 }
          cleanup
  %682 = extractvalue { ptr, i32 } %681, 0
  store ptr %682, ptr %24, align 8
  %683 = extractvalue { ptr, i32 } %681, 1
  store i32 %683, ptr %25, align 4
  br label %755

684:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 16, ptr %86) #10
  %685 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 2
  %686 = load i64, ptr %85, align 8, !tbaa !19
  %687 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %685, i64 noundef %686)
          to label %688 unwind label %711

688:                                              ; preds = %684
  %689 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 0
  %690 = extractvalue { ptr, i64 } %687, 0
  store ptr %690, ptr %689, align 8
  %691 = getelementptr inbounds { ptr, i64 }, ptr %86, i32 0, i32 1
  %692 = extractvalue { ptr, i64 } %687, 1
  store i64 %692, ptr %691, align 8
  %693 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  %694 = xor i1 %693, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #10
  br i1 %694, label %695, label %751

695:                                              ; preds = %688
  %696 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 2
  %697 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %696)
          to label %698 unwind label %680

698:                                              ; preds = %695
  %699 = icmp eq i64 %697, 0
  br i1 %699, label %700, label %715

700:                                              ; preds = %698
  %701 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 2
  %702 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 2
  %703 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %702)
          to label %704 unwind label %680

704:                                              ; preds = %700
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %701, i64 noundef %703)
          to label %705 unwind label %680

705:                                              ; preds = %704
  %706 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %79, i32 0, i32 2
  %707 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 2
  %708 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %707)
          to label %709 unwind label %680

709:                                              ; preds = %705
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %706, i64 noundef %708, i1 noundef zeroext false)
          to label %710 unwind label %680

710:                                              ; preds = %709
  br label %715

711:                                              ; preds = %684
  %712 = landingpad { ptr, i32 }
          cleanup
  %713 = extractvalue { ptr, i32 } %712, 0
  store ptr %713, ptr %24, align 8
  %714 = extractvalue { ptr, i32 } %712, 1
  store i32 %714, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %86) #10
  br label %755

715:                                              ; preds = %710, %698
  call void @llvm.lifetime.start.p0(i64 24, ptr %87) #10
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %716 unwind label %732

716:                                              ; preds = %715
  %717 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 1
  %718 = load i32, ptr %717, align 4, !tbaa !15
  %719 = add i32 512, %718
  %720 = zext i32 %719 to i64
  %721 = load i64, ptr %85, align 8, !tbaa !19
  %722 = add i64 %720, %721
  %723 = trunc i64 %722 to i32
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %88, ptr noundef %89, i32 noundef %723)
          to label %724 unwind label %736

724:                                              ; preds = %716
  invoke void @_ZN3HIR12ConstGeneric12make_GenericENS_10GenericRefE(ptr dead_on_unwind writable sret(%"class.HIR::ConstGeneric") align 8 %87, ptr noundef %88)
          to label %725 unwind label %740

725:                                              ; preds = %724
  %726 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 2
  %727 = load i64, ptr %85, align 8, !tbaa !19
  %728 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %726, i64 noundef %727)
          to label %729 unwind label %744

729:                                              ; preds = %725
  %730 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %728, ptr noundef nonnull align 8 dereferenceable(24) %87)
          to label %731 unwind label %744

731:                                              ; preds = %729
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #10
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %88) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #10
  br label %751

732:                                              ; preds = %715
  %733 = landingpad { ptr, i32 }
          cleanup
  %734 = extractvalue { ptr, i32 } %733, 0
  store ptr %734, ptr %24, align 8
  %735 = extractvalue { ptr, i32 } %733, 1
  store i32 %735, ptr %25, align 4
  br label %750

736:                                              ; preds = %716
  %737 = landingpad { ptr, i32 }
          cleanup
  %738 = extractvalue { ptr, i32 } %737, 0
  store ptr %738, ptr %24, align 8
  %739 = extractvalue { ptr, i32 } %737, 1
  store i32 %739, ptr %25, align 4
  br label %749

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

744:                                              ; preds = %729, %725
  %745 = landingpad { ptr, i32 }
          cleanup
  %746 = extractvalue { ptr, i32 } %745, 0
  store ptr %746, ptr %24, align 8
  %747 = extractvalue { ptr, i32 } %745, 1
  store i32 %747, ptr %25, align 4
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %87) #10
  br label %748

748:                                              ; preds = %744, %740
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %88) #10
  br label %749

749:                                              ; preds = %748, %736
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  br label %750

750:                                              ; preds = %749, %732
  call void @llvm.lifetime.end.p0(i64 24, ptr %87) #10
  br label %755

751:                                              ; preds = %731, %688
  br label %752

752:                                              ; preds = %751
  %753 = load i64, ptr %85, align 8, !tbaa !19
  %754 = add i64 %753, 1
  store i64 %754, ptr %85, align 8, !tbaa !19
  br label %673, !llvm.loop !24

755:                                              ; preds = %750, %711, %680
  call void @llvm.lifetime.end.p0(i64 8, ptr %85) #10
  br label %1494

756:                                              ; preds = %679
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #10
  store i64 0, ptr %90, align 8, !tbaa !19
  br label %757

757:                                              ; preds = %817, %756
  %758 = load i64, ptr %90, align 8, !tbaa !19
  %759 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %760 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %759)
          to label %761 unwind label %764

761:                                              ; preds = %757
  %762 = icmp ult i64 %758, %760
  br i1 %762, label %768, label %763

763:                                              ; preds = %761
  store i32 27, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %821

764:                                              ; preds = %793, %789, %788, %784, %779, %757
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %24, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %25, align 4
  br label %820

768:                                              ; preds = %761
  call void @llvm.lifetime.start.p0(i64 16, ptr %91) #10
  %769 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 1
  %770 = load i64, ptr %90, align 8, !tbaa !19
  %771 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %769, i64 noundef %770)
          to label %772 unwind label %795

772:                                              ; preds = %768
  %773 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 0
  %774 = extractvalue { ptr, i64 } %771, 0
  store ptr %774, ptr %773, align 8
  %775 = getelementptr inbounds { ptr, i64 }, ptr %91, i32 0, i32 1
  %776 = extractvalue { ptr, i64 } %771, 1
  store i64 %776, ptr %775, align 8
  %777 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %91) #10
  %778 = xor i1 %777, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #10
  br i1 %778, label %779, label %816

779:                                              ; preds = %772
  %780 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 0
  %781 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %780)
          to label %782 unwind label %764

782:                                              ; preds = %779
  %783 = icmp eq i64 %781, 0
  br i1 %783, label %784, label %799

784:                                              ; preds = %782
  %785 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 0
  %786 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %787 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %786)
          to label %788 unwind label %764

788:                                              ; preds = %784
  invoke void @_ZN10ThinVectorIN3HIR11LifetimeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %785, i64 noundef %787)
          to label %789 unwind label %764

789:                                              ; preds = %788
  %790 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %79, i32 0, i32 1
  %791 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %792 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %791)
          to label %793 unwind label %764

793:                                              ; preds = %789
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %790, i64 noundef %792, i1 noundef zeroext false)
          to label %794 unwind label %764

794:                                              ; preds = %793
  br label %799

795:                                              ; preds = %768
  %796 = landingpad { ptr, i32 }
          cleanup
  %797 = extractvalue { ptr, i32 } %796, 0
  store ptr %797, ptr %24, align 8
  %798 = extractvalue { ptr, i32 } %796, 1
  store i32 %798, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %91) #10
  br label %820

799:                                              ; preds = %794, %782
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #10
  %800 = getelementptr inbounds %struct.BaseImplPlaceholderIdx, ptr %31, i32 0, i32 2
  %801 = load i32, ptr %800, align 4, !tbaa !16
  %802 = add i32 512, %801
  %803 = zext i32 %802 to i64
  %804 = load i64, ptr %90, align 8, !tbaa !19
  %805 = add i64 %803, %804
  %806 = trunc i64 %805 to i32
  invoke void @_ZN3HIR11LifetimeRefC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %92, i32 noundef %806)
          to label %807 unwind label %812

807:                                              ; preds = %799
  %808 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 0
  %809 = load i64, ptr %90, align 8, !tbaa !19
  %810 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %808, i64 noundef %809)
          to label %811 unwind label %812

811:                                              ; preds = %807
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %810, ptr align 4 %92, i64 4, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  br label %816

812:                                              ; preds = %807, %799
  %813 = landingpad { ptr, i32 }
          cleanup
  %814 = extractvalue { ptr, i32 } %813, 0
  store ptr %814, ptr %24, align 8
  %815 = extractvalue { ptr, i32 } %813, 1
  store i32 %815, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #10
  br label %820

816:                                              ; preds = %811, %772
  br label %817

817:                                              ; preds = %816
  %818 = load i64, ptr %90, align 8, !tbaa !19
  %819 = add i64 %818, 1
  store i64 %819, ptr %90, align 8, !tbaa !19
  br label %757, !llvm.loop !26

820:                                              ; preds = %812, %795, %764
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #10
  br label %1494

821:                                              ; preds = %763
  call void @llvm.lifetime.start.p0(i64 160, ptr %93) #10
  %822 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %94, ptr noundef nonnull align 8 dereferenceable(8) %822)
          to label %823 unwind label %837

823:                                              ; preds = %821
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %95, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %824 unwind label %841

824:                                              ; preds = %823
  invoke void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherC2ES0_SG_RKN12_GLOBAL__N_19GetParams9ParamsSetE8RcStringRKZNKS_26find_impl__check_crate_rawES2_S6_S9_SC_SF_SG_SC_SK_E22BaseImplPlaceholderIdxRS7_RSO_(ptr noundef nonnull align 8 dereferenceable(160) %93, ptr noundef %94, ptr noundef nonnull align 8 dereferenceable(24) %26, ptr noundef nonnull align 8 dereferenceable(120) %27, ptr noundef %95, ptr noundef nonnull align 4 dereferenceable(12) %31, ptr noundef nonnull align 8 dereferenceable(24) %80, ptr noundef nonnull align 8 dereferenceable(120) %79)
          to label %825 unwind label %845

825:                                              ; preds = %824
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #10
  %826 = load ptr, ptr %16, align 8, !tbaa !5
  %827 = getelementptr inbounds %"class.HIR::GenericParams", ptr %826, i32 0, i32 3
  store ptr %827, ptr %96, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #10
  %828 = load ptr, ptr %96, align 8, !tbaa !5
  %829 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %828) #10
  %830 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %97, i32 0, i32 0
  store ptr %829, ptr %830, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #10
  %831 = load ptr, ptr %96, align 8, !tbaa !5
  %832 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %831) #10
  %833 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.407", ptr %98, i32 0, i32 0
  store ptr %832, ptr %833, align 8
  br label %834

834:                                              ; preds = %1237, %825
  %835 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %97, ptr noundef nonnull align 8 dereferenceable(8) %98) #10
  br i1 %835, label %850, label %836

836:                                              ; preds = %834
  store i32 30, ptr %74, align 4
  br label %1240

837:                                              ; preds = %821
  %838 = landingpad { ptr, i32 }
          cleanup
  %839 = extractvalue { ptr, i32 } %838, 0
  store ptr %839, ptr %24, align 8
  %840 = extractvalue { ptr, i32 } %838, 1
  store i32 %840, ptr %25, align 4
  br label %1493

841:                                              ; preds = %823
  %842 = landingpad { ptr, i32 }
          cleanup
  %843 = extractvalue { ptr, i32 } %842, 0
  store ptr %843, ptr %24, align 8
  %844 = extractvalue { ptr, i32 } %842, 1
  store i32 %844, ptr %25, align 4
  br label %849

845:                                              ; preds = %824
  %846 = landingpad { ptr, i32 }
          cleanup
  %847 = extractvalue { ptr, i32 } %846, 0
  store ptr %847, ptr %24, align 8
  %848 = extractvalue { ptr, i32 } %846, 1
  store i32 %848, ptr %25, align 4
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  br label %849

849:                                              ; preds = %845, %841
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %94) #10
  br label %1493

850:                                              ; preds = %834
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #10
  %851 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  store ptr %851, ptr %99, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #10
  %852 = load ptr, ptr %99, align 8, !tbaa !5
  %853 = invoke noundef ptr @_ZNK3HIR12GenericBound14opt_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %852)
          to label %854 unwind label %882

854:                                              ; preds = %850
  store ptr %853, ptr %100, align 8, !tbaa !5
  %855 = load ptr, ptr %100, align 8, !tbaa !5
  %856 = icmp ne ptr %855, null
  br i1 %856, label %857, label %1229

857:                                              ; preds = %854
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #10
  %858 = load ptr, ptr %100, align 8, !tbaa !5
  store ptr %858, ptr %101, align 8, !tbaa !5
  br label %859

859:                                              ; preds = %857
  %860 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %861 unwind label %886

861:                                              ; preds = %859
  br i1 %860, label %862, label %890

862:                                              ; preds = %861
  %863 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %864 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %863, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %865 unwind label %886

865:                                              ; preds = %862
  %866 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %864, ptr noundef @.str.32)
          to label %867 unwind label %886

867:                                              ; preds = %865
  %868 = load ptr, ptr %101, align 8, !tbaa !5
  %869 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %868, i32 0, i32 1
  %870 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %866, ptr noundef nonnull align 8 dereferenceable(8) %869)
          to label %871 unwind label %886

871:                                              ; preds = %867
  %872 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %870, ptr noundef @.str.33)
          to label %873 unwind label %886

873:                                              ; preds = %871
  %874 = load ptr, ptr %101, align 8, !tbaa !5
  %875 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %874, i32 0, i32 2
  %876 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %872, ptr noundef nonnull align 8 dereferenceable(144) %875)
          to label %877 unwind label %886

877:                                              ; preds = %873
  %878 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %876, ptr noundef @_ZSt3decRSt8ios_base)
          to label %879 unwind label %886

879:                                              ; preds = %877
  %880 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %878, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %881 unwind label %886

881:                                              ; preds = %879
  br label %890

882:                                              ; preds = %850
  %883 = landingpad { ptr, i32 }
          cleanup
  %884 = extractvalue { ptr, i32 } %883, 0
  store ptr %884, ptr %24, align 8
  %885 = extractvalue { ptr, i32 } %883, 1
  store i32 %885, ptr %25, align 4
  br label %1239

886:                                              ; preds = %879, %877, %873, %871, %867, %865, %862, %859
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %24, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %25, align 4
  br label %1228

890:                                              ; preds = %881, %861
  br label %891

891:                                              ; preds = %890
  br label %892

892:                                              ; preds = %891
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #10
  %893 = getelementptr inbounds i8, ptr %93, i64 8
  %894 = load ptr, ptr %12, align 8, !tbaa !5
  %895 = load ptr, ptr %101, align 8, !tbaa !5
  %896 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %895, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(96) %893, ptr noundef nonnull align 8 dereferenceable(8) %894, ptr noundef nonnull align 8 dereferenceable(8) %896, i1 noundef zeroext true)
          to label %897 unwind label %926

897:                                              ; preds = %892
  %898 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %898, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %899 unwind label %930

899:                                              ; preds = %897
  call void @llvm.lifetime.start.p0(i64 144, ptr %103) #10
  %900 = getelementptr inbounds i8, ptr %93, i64 8
  %901 = load ptr, ptr %12, align 8, !tbaa !5
  %902 = load ptr, ptr %101, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %902, i32 0, i32 2
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind writable sret(%"class.HIR::TraitPath") align 8 %103, ptr noundef nonnull align 8 dereferenceable(96) %900, ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef nonnull align 8 dereferenceable(144) %903, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %904 unwind label %934

904:                                              ; preds = %899
  %905 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %905, ptr noundef nonnull align 8 dereferenceable(144) %103)
          to label %906 unwind label %938

906:                                              ; preds = %904
  br label %907

907:                                              ; preds = %906
  %908 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %909 unwind label %938

909:                                              ; preds = %907
  br i1 %908, label %910, label %942

910:                                              ; preds = %909
  %911 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %912 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %911, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %913 unwind label %938

913:                                              ; preds = %910
  %914 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %912, ptr noundef @.str.34)
          to label %915 unwind label %938

915:                                              ; preds = %913
  %916 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %914, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %917 unwind label %938

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

919:                                              ; preds = %917
  %920 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %918, ptr noundef nonnull align 8 dereferenceable(144) %103)
          to label %921 unwind label %938

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

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

925:                                              ; preds = %923
  br label %942

926:                                              ; preds = %892
  %927 = landingpad { ptr, i32 }
          cleanup
  %928 = extractvalue { ptr, i32 } %927, 0
  store ptr %928, ptr %24, align 8
  %929 = extractvalue { ptr, i32 } %927, 1
  store i32 %929, ptr %25, align 4
  br label %1227

930:                                              ; preds = %897
  %931 = landingpad { ptr, i32 }
          cleanup
  %932 = extractvalue { ptr, i32 } %931, 0
  store ptr %932, ptr %24, align 8
  %933 = extractvalue { ptr, i32 } %931, 1
  store i32 %933, ptr %25, align 4
  br label %1226

934:                                              ; preds = %899
  %935 = landingpad { ptr, i32 }
          cleanup
  %936 = extractvalue { ptr, i32 } %935, 0
  store ptr %936, ptr %24, align 8
  %937 = extractvalue { ptr, i32 } %935, 1
  store i32 %937, ptr %25, align 4
  br label %1225

938:                                              ; preds = %946, %944, %923, %921, %919, %917, %915, %913, %910, %907, %904
  %939 = landingpad { ptr, i32 }
          cleanup
  %940 = extractvalue { ptr, i32 } %939, 0
  store ptr %940, ptr %24, align 8
  %941 = extractvalue { ptr, i32 } %939, 1
  store i32 %941, ptr %25, align 4
  br label %1224

942:                                              ; preds = %925, %909
  br label %943

943:                                              ; preds = %942
  br label %944

944:                                              ; preds = %943
  %945 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %946 unwind label %938

946:                                              ; preds = %944
  %947 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %945)
          to label %948 unwind label %938

948:                                              ; preds = %946
  br i1 %947, label %949, label %950

949:                                              ; preds = %948
  store i32 31, ptr %74, align 4
  br label %1220

950:                                              ; preds = %948
  %951 = getelementptr inbounds %"class.HIR::TraitPath", ptr %103, i32 0, i32 2
  %952 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %951) #10
  %953 = icmp ugt i64 %952, 0
  br i1 %953, label %954, label %1101

954:                                              ; preds = %950
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #10
  %955 = getelementptr inbounds %"class.HIR::TraitPath", ptr %103, i32 0, i32 2
  store ptr %955, ptr %104, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #10
  %956 = load ptr, ptr %104, align 8, !tbaa !5
  %957 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %956) #10
  %958 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %105, i32 0, i32 0
  store ptr %957, ptr %958, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #10
  %959 = load ptr, ptr %104, align 8, !tbaa !5
  %960 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %959) #10
  %961 = getelementptr inbounds %"struct.std::_Rb_tree_iterator", ptr %106, i32 0, i32 0
  store ptr %960, ptr %961, align 8
  br label %962

962:                                              ; preds = %1093, %954
  %963 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %105, ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  br i1 %963, label %965, label %964

964:                                              ; preds = %962
  store i32 36, ptr %74, align 4
  br label %1098

965:                                              ; preds = %962
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #10
  %966 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  store ptr %966, ptr %107, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #10
  %967 = load ptr, ptr %107, align 8, !tbaa !5
  %968 = getelementptr inbounds %"struct.std::pair.457", ptr %967, i32 0, i32 0
  store ptr %968, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #10
  %969 = load ptr, ptr %107, align 8, !tbaa !5
  %970 = getelementptr inbounds %"struct.std::pair.457", ptr %969, i32 0, i32 1
  %971 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %970, i32 0, i32 1
  store ptr %971, ptr %109, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %110) #10
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %972 unwind label %1013

972:                                              ; preds = %965
  %973 = load ptr, ptr %12, align 8, !tbaa !5
  %974 = getelementptr inbounds %"class.HIR::TraitPath", ptr %103, i32 0, i32 1
  %975 = load ptr, ptr %101, align 8, !tbaa !5
  %976 = getelementptr inbounds %"struct.HIR::GenericBound::Data_TraitBound", ptr %975, i32 0, i32 2
  %977 = getelementptr inbounds %"class.HIR::TraitPath", ptr %976, i32 0, i32 4
  %978 = load ptr, ptr %977, align 8, !tbaa !27
  %979 = load ptr, ptr %108, align 8, !tbaa !5
  %980 = invoke noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %979)
          to label %981 unwind label %1017

981:                                              ; preds = %972
  %982 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %973, ptr noundef nonnull align 8 dereferenceable(32) %974, ptr noundef nonnull align 8 dereferenceable(400) %978, ptr noundef %980, ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %983 unwind label %1017

983:                                              ; preds = %981
  call void @llvm.lifetime.start.p0(i64 1, ptr %111) #10
  store i8 0, ptr %111, align 1, !tbaa !17
  %984 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %985 unwind label %1021

985:                                              ; preds = %983
  %986 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %984)
          to label %987 unwind label %1021

987:                                              ; preds = %985
  br i1 %986, label %988, label %1028

988:                                              ; preds = %987
  %989 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %990 unwind label %1021

990:                                              ; preds = %988
  %991 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %989)
          to label %992 unwind label %1021

992:                                              ; preds = %990
  %993 = invoke noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %991)
          to label %994 unwind label %1021

994:                                              ; preds = %992
  br i1 %993, label %995, label %1028

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  %997 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %998 unwind label %1021

998:                                              ; preds = %996
  br i1 %997, label %999, label %1025

999:                                              ; preds = %998
  %1000 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1001 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1000, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1002 unwind label %1021

1002:                                             ; preds = %999
  %1003 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1001, ptr noundef @.str.36)
          to label %1004 unwind label %1021

1004:                                             ; preds = %1002
  %1005 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1003, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1006 unwind label %1021

1006:                                             ; preds = %1004
  %1007 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1005, ptr noundef @.str.37)
          to label %1008 unwind label %1021

1008:                                             ; preds = %1006
  %1009 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1007, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1010 unwind label %1021

1010:                                             ; preds = %1008
  %1011 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1009, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1012 unwind label %1021

1012:                                             ; preds = %1010
  br label %1025

1013:                                             ; preds = %965
  %1014 = landingpad { ptr, i32 }
          cleanup
  %1015 = extractvalue { ptr, i32 } %1014, 0
  store ptr %1015, ptr %24, align 8
  %1016 = extractvalue { ptr, i32 } %1014, 1
  store i32 %1016, ptr %25, align 4
  br label %1097

1017:                                             ; preds = %981, %972
  %1018 = landingpad { ptr, i32 }
          cleanup
  %1019 = extractvalue { ptr, i32 } %1018, 0
  store ptr %1019, ptr %24, align 8
  %1020 = extractvalue { ptr, i32 } %1018, 1
  store i32 %1020, ptr %25, align 4
  br label %1096

1021:                                             ; preds = %1080, %1078, %1076, %1074, %1072, %1070, %1067, %1065, %1062, %1059, %1010, %1008, %1006, %1004, %1002, %999, %996, %992, %990, %988, %985, %983
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %24, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %25, align 4
  br label %1095

1025:                                             ; preds = %1012, %998
  br label %1026

1026:                                             ; preds = %1025
  br label %1027

1027:                                             ; preds = %1026
  store i8 1, ptr %111, align 1, !tbaa !17
  br label %1055

1028:                                             ; preds = %994, %987
  %1029 = load ptr, ptr %12, align 8, !tbaa !5
  %1030 = getelementptr inbounds %"class.HIR::GenericPath", ptr %110, i32 0, i32 0
  %1031 = getelementptr inbounds %"class.HIR::GenericPath", ptr %110, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 56, ptr %113) #10
  %1032 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 0
  %1033 = load ptr, ptr %108, align 8, !tbaa !5
  store ptr %1033, ptr %1032, align 8, !tbaa !5
  %1034 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 1
  store ptr %110, ptr %1034, align 8, !tbaa !5
  %1035 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 2
  store ptr %130, ptr %1035, align 8, !tbaa !55
  %1036 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 3
  %1037 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %1037, ptr %1036, align 8, !tbaa !5
  %1038 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 4
  %1039 = load ptr, ptr %109, align 8, !tbaa !5
  store ptr %1039, ptr %1038, align 8, !tbaa !5
  %1040 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 5
  store ptr %20, ptr %1040, align 8, !tbaa !5
  %1041 = getelementptr inbounds %class.anon.476, ptr %113, i32 0, i32 6
  store ptr %93, ptr %1041, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(56) %113)
          to label %1042 unwind label %1046

1042:                                             ; preds = %1028
  %1043 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %1029, ptr noundef nonnull align 8 dereferenceable(8) %1030, ptr noundef nonnull align 8 dereferenceable(24) %1031, ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef %112)
          to label %1044 unwind label %1050

1044:                                             ; preds = %1042
  %1045 = zext i1 %1043 to i8
  store i8 %1045, ptr %111, align 1, !tbaa !17
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  call void @llvm.lifetime.end.p0(i64 56, ptr %113) #10
  br label %1055

1046:                                             ; preds = %1028
  %1047 = landingpad { ptr, i32 }
          cleanup
  %1048 = extractvalue { ptr, i32 } %1047, 0
  store ptr %1048, ptr %24, align 8
  %1049 = extractvalue { ptr, i32 } %1047, 1
  store i32 %1049, ptr %25, align 4
  br label %1054

1050:                                             ; preds = %1042
  %1051 = landingpad { ptr, i32 }
          cleanup
  %1052 = extractvalue { ptr, i32 } %1051, 0
  store ptr %1052, ptr %24, align 8
  %1053 = extractvalue { ptr, i32 } %1051, 1
  store i32 %1053, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  br label %1054

1054:                                             ; preds = %1050, %1046
  call void @llvm.lifetime.end.p0(i64 56, ptr %113) #10
  br label %1095

1055:                                             ; preds = %1044, %1027
  %1056 = load i8, ptr %111, align 1, !tbaa !17, !range !57, !noundef !58
  %1057 = trunc i8 %1056 to i1
  br i1 %1057, label %1086, label %1058

1058:                                             ; preds = %1055
  br label %1059

1059:                                             ; preds = %1058
  %1060 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1061 unwind label %1021

1061:                                             ; preds = %1059
  br i1 %1060, label %1062, label %1083

1062:                                             ; preds = %1061
  %1063 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1064 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1063, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1065 unwind label %1021

1065:                                             ; preds = %1062
  %1066 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1064, ptr noundef @.str.38)
          to label %1067 unwind label %1021

1067:                                             ; preds = %1065
  %1068 = load ptr, ptr %108, align 8, !tbaa !5
  %1069 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %1066, ptr noundef nonnull align 8 dereferenceable(8) %1068)
          to label %1070 unwind label %1021

1070:                                             ; preds = %1067
  %1071 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1069, ptr noundef @.str.39)
          to label %1072 unwind label %1021

1072:                                             ; preds = %1070
  %1073 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1071, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1074 unwind label %1021

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

1076:                                             ; preds = %1074
  %1077 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %1075, ptr noundef nonnull align 8 dereferenceable(32) %110)
          to label %1078 unwind label %1021

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

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

1082:                                             ; preds = %1080
  br label %1083

1083:                                             ; preds = %1082, %1061
  br label %1084

1084:                                             ; preds = %1083
  br label %1085

1085:                                             ; preds = %1084
  store i1 false, ptr %10, align 1
  store i32 1, ptr %74, align 4
  br label %1087

1086:                                             ; preds = %1055
  store i32 0, ptr %74, align 4
  br label %1087

1087:                                             ; preds = %1086, %1085
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  %1088 = load i32, ptr %74, align 4
  switch i32 %1088, label %1090 [
    i32 0, label %1089
  ]

1089:                                             ; preds = %1087
  store i32 0, ptr %74, align 4
  br label %1090

1090:                                             ; preds = %1089, %1087
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  %1091 = load i32, ptr %74, align 4
  switch i32 %1091, label %1098 [
    i32 0, label %1092
  ]

1092:                                             ; preds = %1090
  br label %1093

1093:                                             ; preds = %1092
  %1094 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %105) #10
  br label %962

1095:                                             ; preds = %1054, %1021
  call void @llvm.lifetime.end.p0(i64 1, ptr %111) #10
  br label %1096

1096:                                             ; preds = %1095, %1017
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #10
  br label %1097

1097:                                             ; preds = %1096, %1013
  call void @llvm.lifetime.end.p0(i64 32, ptr %110) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  br label %1224

1098:                                             ; preds = %1090, %964
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #10
  %1099 = load i32, ptr %74, align 4
  switch i32 %1099, label %1220 [
    i32 36, label %1100
  ]

1100:                                             ; preds = %1098
  br label %1101

1101:                                             ; preds = %1100, %950
  call void @llvm.lifetime.start.p0(i64 1, ptr %114) #10
  store i8 0, ptr %114, align 1, !tbaa !17
  %1102 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1103 unwind label %1131

1103:                                             ; preds = %1101
  %1104 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1102)
          to label %1105 unwind label %1131

1105:                                             ; preds = %1103
  br i1 %1104, label %1106, label %1138

1106:                                             ; preds = %1105
  %1107 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1108 unwind label %1131

1108:                                             ; preds = %1106
  %1109 = invoke noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %1107)
          to label %1110 unwind label %1131

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

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

1113:                                             ; preds = %1112
  br label %1114

1114:                                             ; preds = %1113
  %1115 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1116 unwind label %1131

1116:                                             ; preds = %1114
  br i1 %1115, label %1117, label %1135

1117:                                             ; preds = %1116
  %1118 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1118, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1120 unwind label %1131

1120:                                             ; preds = %1117
  %1121 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1119, ptr noundef @.str.36)
          to label %1122 unwind label %1131

1122:                                             ; preds = %1120
  %1123 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1121, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1124 unwind label %1131

1124:                                             ; preds = %1122
  %1125 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1123, ptr noundef @.str.37)
          to label %1126 unwind label %1131

1126:                                             ; preds = %1124
  %1127 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1125, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1128 unwind label %1131

1128:                                             ; preds = %1126
  %1129 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1127, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1130 unwind label %1131

1130:                                             ; preds = %1128
  br label %1135

1131:                                             ; preds = %1210, %1208, %1206, %1204, %1202, %1200, %1197, %1194, %1177, %1175, %1173, %1171, %1169, %1166, %1163, %1128, %1126, %1124, %1122, %1120, %1117, %1114, %1110, %1108, %1106, %1103, %1101
  %1132 = landingpad { ptr, i32 }
          cleanup
  %1133 = extractvalue { ptr, i32 } %1132, 0
  store ptr %1133, ptr %24, align 8
  %1134 = extractvalue { ptr, i32 } %1132, 1
  store i32 %1134, ptr %25, align 4
  br label %1223

1135:                                             ; preds = %1130, %1116
  br label %1136

1136:                                             ; preds = %1135
  br label %1137

1137:                                             ; preds = %1136
  store i8 1, ptr %114, align 1, !tbaa !17
  br label %1151

1138:                                             ; preds = %1112, %1105
  %1139 = load ptr, ptr %12, align 8, !tbaa !5
  %1140 = getelementptr inbounds %"class.HIR::TraitPath", ptr %103, i32 0, i32 1
  %1141 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1140, i32 0, i32 0
  %1142 = getelementptr inbounds %"class.HIR::TraitPath", ptr %103, i32 0, i32 1
  %1143 = getelementptr inbounds %"class.HIR::GenericPath", ptr %1142, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 1, ptr %116) #10
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %115, ptr noundef nonnull align 1 dereferenceable(1) %116) #10
  %1144 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %1139, ptr noundef nonnull align 8 dereferenceable(8) %1141, ptr noundef nonnull align 8 dereferenceable(24) %1143, ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef %115)
          to label %1145 unwind label %1147

1145:                                             ; preds = %1138
  %1146 = zext i1 %1144 to i8
  store i8 %1146, ptr %114, align 1, !tbaa !17
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #10
  br label %1151

1147:                                             ; preds = %1138
  %1148 = landingpad { ptr, i32 }
          cleanup
  %1149 = extractvalue { ptr, i32 } %1148, 0
  store ptr %1149, ptr %24, align 8
  %1150 = extractvalue { ptr, i32 } %1148, 1
  store i32 %1150, ptr %25, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %115) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr %116) #10
  br label %1223

1151:                                             ; preds = %1145, %1137
  %1152 = load i8, ptr %114, align 1, !tbaa !17, !range !57, !noundef !58
  %1153 = trunc i8 %1152 to i1
  call void @llvm.lifetime.start.p0(i64 1, ptr %118) #10
  store i1 false, ptr %119, align 1
  br i1 %1153, label %1157, label %1154

1154:                                             ; preds = %1151
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsES3_RKNS0_13GenericParamsERSF_S3_S_IFbSE_NS0_7CompareEEEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 1 dereferenceable(1) %118) #10
  store i1 true, ptr %119, align 1
  %1155 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %102, ptr noundef %117)
          to label %1156 unwind label %1180

1156:                                             ; preds = %1154
  br label %1157

1157:                                             ; preds = %1156, %1151
  %1158 = phi i1 [ false, %1151 ], [ %1155, %1156 ]
  %1159 = load i1, ptr %119, align 1
  br i1 %1159, label %1160, label %1161

1160:                                             ; preds = %1157
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  br label %1161

1161:                                             ; preds = %1160, %1157
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  br i1 %1158, label %1162, label %1190

1162:                                             ; preds = %1161
  br label %1163

1163:                                             ; preds = %1162
  %1164 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1165 unwind label %1131

1165:                                             ; preds = %1163
  br i1 %1164, label %1166, label %1187

1166:                                             ; preds = %1165
  %1167 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1168 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1167, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1169 unwind label %1131

1169:                                             ; preds = %1166
  %1170 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1168, ptr noundef @.str.40)
          to label %1171 unwind label %1131

1171:                                             ; preds = %1169
  %1172 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1170, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1173 unwind label %1131

1173:                                             ; preds = %1171
  %1174 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1172, ptr noundef @.str.37)
          to label %1175 unwind label %1131

1175:                                             ; preds = %1173
  %1176 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1174, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1177 unwind label %1131

1177:                                             ; preds = %1175
  %1178 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1176, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1179 unwind label %1131

1179:                                             ; preds = %1177
  br label %1187

1180:                                             ; preds = %1154
  %1181 = landingpad { ptr, i32 }
          cleanup
  %1182 = extractvalue { ptr, i32 } %1181, 0
  store ptr %1182, ptr %24, align 8
  %1183 = extractvalue { ptr, i32 } %1181, 1
  store i32 %1183, ptr %25, align 4
  %1184 = load i1, ptr %119, align 1
  br i1 %1184, label %1185, label %1186

1185:                                             ; preds = %1180
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  br label %1186

1186:                                             ; preds = %1185, %1180
  call void @llvm.lifetime.end.p0(i64 1, ptr %118) #10
  br label %1223

1187:                                             ; preds = %1179, %1165
  br label %1188

1188:                                             ; preds = %1187
  br label %1189

1189:                                             ; preds = %1188
  store i8 1, ptr %114, align 1, !tbaa !17
  br label %1190

1190:                                             ; preds = %1189, %1161
  %1191 = load i8, ptr %114, align 1, !tbaa !17, !range !57, !noundef !58
  %1192 = trunc i8 %1191 to i1
  br i1 %1192, label %1216, label %1193

1193:                                             ; preds = %1190
  br label %1194

1194:                                             ; preds = %1193
  %1195 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1196 unwind label %1131

1196:                                             ; preds = %1194
  br i1 %1195, label %1197, label %1213

1197:                                             ; preds = %1196
  %1198 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1199 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1198, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1200 unwind label %1131

1200:                                             ; preds = %1197
  %1201 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1199, ptr noundef @.str.41)
          to label %1202 unwind label %1131

1202:                                             ; preds = %1200
  %1203 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1201, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1204 unwind label %1131

1204:                                             ; preds = %1202
  %1205 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1203, ptr noundef @.str.23)
          to label %1206 unwind label %1131

1206:                                             ; preds = %1204
  %1207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %1205, ptr noundef nonnull align 8 dereferenceable(144) %103)
          to label %1208 unwind label %1131

1208:                                             ; preds = %1206
  %1209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1207, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1210 unwind label %1131

1210:                                             ; preds = %1208
  %1211 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1209, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1212 unwind label %1131

1212:                                             ; preds = %1210
  br label %1213

1213:                                             ; preds = %1212, %1196
  br label %1214

1214:                                             ; preds = %1213
  br label %1215

1215:                                             ; preds = %1214
  store i1 false, ptr %10, align 1
  store i32 1, ptr %74, align 4
  br label %1217

1216:                                             ; preds = %1190
  store i32 0, ptr %74, align 4
  br label %1217

1217:                                             ; preds = %1216, %1215
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  %1218 = load i32, ptr %74, align 4
  switch i32 %1218, label %1220 [
    i32 0, label %1219
  ]

1219:                                             ; preds = %1217
  store i32 0, ptr %74, align 4
  br label %1220

1220:                                             ; preds = %1219, %1217, %1098, %949
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #10
  call void @llvm.lifetime.end.p0(i64 144, ptr %103) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  %1221 = load i32, ptr %74, align 4
  switch i32 %1221, label %1231 [
    i32 0, label %1222
  ]

1222:                                             ; preds = %1220
  br label %1230

1223:                                             ; preds = %1186, %1147, %1131
  call void @llvm.lifetime.end.p0(i64 1, ptr %114) #10
  br label %1224

1224:                                             ; preds = %1223, %1097, %938
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %103) #10
  br label %1225

1225:                                             ; preds = %1224, %934
  call void @llvm.lifetime.end.p0(i64 144, ptr %103) #10
  br label %1226

1226:                                             ; preds = %1225, %930
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #10
  br label %1227

1227:                                             ; preds = %1226, %926
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #10
  br label %1228

1228:                                             ; preds = %1227, %886
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #10
  br label %1239

1229:                                             ; preds = %854
  br label %1230

1230:                                             ; preds = %1229, %1222
  store i32 0, ptr %74, align 4
  br label %1231

1231:                                             ; preds = %1230, %1220
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  %1232 = load i32, ptr %74, align 4
  switch i32 %1232, label %1234 [
    i32 0, label %1233
  ]

1233:                                             ; preds = %1231
  store i32 0, ptr %74, align 4
  br label %1234

1234:                                             ; preds = %1233, %1231
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  %1235 = load i32, ptr %74, align 4
  switch i32 %1235, label %1240 [
    i32 0, label %1236
    i32 31, label %1237
  ]

1236:                                             ; preds = %1234
  br label %1237

1237:                                             ; preds = %1236, %1234
  %1238 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %97) #10
  br label %834

1239:                                             ; preds = %1228, %882
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  br label %1492

1240:                                             ; preds = %1234, %836
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #10
  %1241 = load i32, ptr %74, align 4
  switch i32 %1241, label %1491 [
    i32 30, label %1242
  ]

1242:                                             ; preds = %1240
  call void @llvm.lifetime.start.p0(i64 8, ptr %120) #10
  store i64 0, ptr %120, align 8, !tbaa !19
  br label %1243

1243:                                             ; preds = %1297, %1242
  %1244 = load i64, ptr %120, align 8, !tbaa !19
  %1245 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1246 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1245)
          to label %1247 unwind label %1250

1247:                                             ; preds = %1243
  %1248 = icmp ult i64 %1244, %1246
  br i1 %1248, label %1254, label %1249

1249:                                             ; preds = %1247
  store i32 48, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1301

1250:                                             ; preds = %1293, %1289, %1285, %1243
  %1251 = landingpad { ptr, i32 }
          cleanup
  %1252 = extractvalue { ptr, i32 } %1251, 0
  store ptr %1252, ptr %24, align 8
  %1253 = extractvalue { ptr, i32 } %1251, 1
  store i32 %1253, ptr %25, align 4
  br label %1300

1254:                                             ; preds = %1247
  call void @llvm.lifetime.start.p0(i64 16, ptr %121) #10
  %1255 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 0
  %1256 = load i64, ptr %120, align 8, !tbaa !19
  %1257 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1255, i64 noundef %1256)
          to label %1258 unwind label %1277

1258:                                             ; preds = %1254
  %1259 = getelementptr inbounds { ptr, i64 }, ptr %121, i32 0, i32 0
  %1260 = extractvalue { ptr, i64 } %1257, 0
  store ptr %1260, ptr %1259, align 8
  %1261 = getelementptr inbounds { ptr, i64 }, ptr %121, i32 0, i32 1
  %1262 = extractvalue { ptr, i64 } %1257, 1
  store i64 %1262, ptr %1261, align 8
  %1263 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %121) #10
  %1264 = xor i1 %1263, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #10
  br i1 %1264, label %1265, label %1296

1265:                                             ; preds = %1258
  call void @llvm.lifetime.start.p0(i64 16, ptr %122) #10
  %1266 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %79, i32 0, i32 0
  %1267 = load i64, ptr %120, align 8, !tbaa !19
  %1268 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1266, i64 noundef %1267)
          to label %1269 unwind label %1281

1269:                                             ; preds = %1265
  %1270 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 0
  %1271 = extractvalue { ptr, i64 } %1268, 0
  store ptr %1271, ptr %1270, align 8
  %1272 = getelementptr inbounds { ptr, i64 }, ptr %122, i32 0, i32 1
  %1273 = extractvalue { ptr, i64 } %1268, 1
  store i64 %1273, ptr %1272, align 8
  %1274 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %122) #10
  %1275 = xor i1 %1274, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #10
  br i1 %1275, label %1276, label %1285

1276:                                             ; preds = %1269
  br label %1285

1277:                                             ; preds = %1254
  %1278 = landingpad { ptr, i32 }
          cleanup
  %1279 = extractvalue { ptr, i32 } %1278, 0
  store ptr %1279, ptr %24, align 8
  %1280 = extractvalue { ptr, i32 } %1278, 1
  store i32 %1280, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %121) #10
  br label %1300

1281:                                             ; preds = %1265
  %1282 = landingpad { ptr, i32 }
          cleanup
  %1283 = extractvalue { ptr, i32 } %1282, 0
  store ptr %1283, ptr %24, align 8
  %1284 = extractvalue { ptr, i32 } %1282, 1
  store i32 %1284, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %122) #10
  br label %1300

1285:                                             ; preds = %1276, %1269
  %1286 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 1
  %1287 = load i64, ptr %120, align 8, !tbaa !19
  %1288 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1286, i64 noundef %1287)
          to label %1289 unwind label %1250

1289:                                             ; preds = %1285
  %1290 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1291 = load i64, ptr %120, align 8, !tbaa !19
  %1292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1290, i64 noundef %1291)
          to label %1293 unwind label %1250

1293:                                             ; preds = %1289
  %1294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1292, ptr noundef nonnull align 8 dereferenceable(8) %1288)
          to label %1295 unwind label %1250

1295:                                             ; preds = %1293
  br label %1296

1296:                                             ; preds = %1295, %1258
  br label %1297

1297:                                             ; preds = %1296
  %1298 = load i64, ptr %120, align 8, !tbaa !19
  %1299 = add i64 %1298, 1
  store i64 %1299, ptr %120, align 8, !tbaa !19
  br label %1243, !llvm.loop !59

1300:                                             ; preds = %1281, %1277, %1250
  call void @llvm.lifetime.end.p0(i64 8, ptr %120) #10
  br label %1492

1301:                                             ; preds = %1249
  call void @llvm.lifetime.start.p0(i64 8, ptr %123) #10
  store i64 0, ptr %123, align 8, !tbaa !19
  br label %1302

1302:                                             ; preds = %1367, %1301
  %1303 = load i64, ptr %123, align 8, !tbaa !19
  %1304 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %1305 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1304)
          to label %1306 unwind label %1309

1306:                                             ; preds = %1302
  %1307 = icmp ult i64 %1303, %1305
  br i1 %1307, label %1313, label %1308

1308:                                             ; preds = %1306
  store i32 51, ptr %74, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1371

1309:                                             ; preds = %1361, %1357, %1302
  %1310 = landingpad { ptr, i32 }
          cleanup
  %1311 = extractvalue { ptr, i32 } %1310, 0
  store ptr %1311, ptr %24, align 8
  %1312 = extractvalue { ptr, i32 } %1310, 1
  store i32 %1312, ptr %25, align 4
  br label %1370

1313:                                             ; preds = %1306
  call void @llvm.lifetime.start.p0(i64 16, ptr %124) #10
  %1314 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %27, i32 0, i32 1
  %1315 = load i64, ptr %123, align 8, !tbaa !19
  %1316 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1314, i64 noundef %1315)
          to label %1317 unwind label %1344

1317:                                             ; preds = %1313
  %1318 = getelementptr inbounds { ptr, i64 }, ptr %124, i32 0, i32 0
  %1319 = extractvalue { ptr, i64 } %1316, 0
  store ptr %1319, ptr %1318, align 8
  %1320 = getelementptr inbounds { ptr, i64 }, ptr %124, i32 0, i32 1
  %1321 = extractvalue { ptr, i64 } %1316, 1
  store i64 %1321, ptr %1320, align 8
  %1322 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %124) #10
  %1323 = xor i1 %1322, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #10
  br i1 %1323, label %1324, label %1366

1324:                                             ; preds = %1317
  %1325 = load ptr, ptr %14, align 8, !tbaa !5
  %1326 = icmp ne ptr %1325, null
  br i1 %1326, label %1327, label %1357

1327:                                             ; preds = %1324
  call void @llvm.lifetime.start.p0(i64 16, ptr %125) #10
  %1328 = getelementptr inbounds %"struct.(anonymous namespace)::GetParams::ParamsSet", ptr %79, i32 0, i32 1
  %1329 = load i64, ptr %123, align 8, !tbaa !19
  %1330 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %1328, i64 noundef %1329)
          to label %1331 unwind label %1348

1331:                                             ; preds = %1327
  %1332 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 0
  %1333 = extractvalue { ptr, i64 } %1330, 0
  store ptr %1333, ptr %1332, align 8
  %1334 = getelementptr inbounds { ptr, i64 }, ptr %125, i32 0, i32 1
  %1335 = extractvalue { ptr, i64 } %1330, 1
  store i64 %1335, ptr %1334, align 8
  %1336 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %125) #10
  %1337 = xor i1 %1336, true
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #10
  br i1 %1337, label %1338, label %1356

1338:                                             ; preds = %1331
  call void @llvm.lifetime.start.p0(i64 4, ptr %126) #10
  invoke void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %126)
          to label %1339 unwind label %1352

1339:                                             ; preds = %1338
  %1340 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %1341 = load i64, ptr %123, align 8, !tbaa !19
  %1342 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1340, i64 noundef %1341)
          to label %1343 unwind label %1352

1343:                                             ; preds = %1339
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1342, ptr align 4 %126, i64 4, i1 false), !tbaa.struct !25
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #10
  br label %1367

1344:                                             ; preds = %1313
  %1345 = landingpad { ptr, i32 }
          cleanup
  %1346 = extractvalue { ptr, i32 } %1345, 0
  store ptr %1346, ptr %24, align 8
  %1347 = extractvalue { ptr, i32 } %1345, 1
  store i32 %1347, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %124) #10
  br label %1370

1348:                                             ; preds = %1327
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %24, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %125) #10
  br label %1370

1352:                                             ; preds = %1339, %1338
  %1353 = landingpad { ptr, i32 }
          cleanup
  %1354 = extractvalue { ptr, i32 } %1353, 0
  store ptr %1354, ptr %24, align 8
  %1355 = extractvalue { ptr, i32 } %1353, 1
  store i32 %1355, ptr %25, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %126) #10
  br label %1370

1356:                                             ; preds = %1331
  br label %1357

1357:                                             ; preds = %1356, %1324
  %1358 = getelementptr inbounds %"struct.HIR::PathParams", ptr %80, i32 0, i32 0
  %1359 = load i64, ptr %123, align 8, !tbaa !19
  %1360 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1358, i64 noundef %1359)
          to label %1361 unwind label %1309

1361:                                             ; preds = %1357
  %1362 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 0
  %1363 = load i64, ptr %123, align 8, !tbaa !19
  %1364 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1362, i64 noundef %1363)
          to label %1365 unwind label %1309

1365:                                             ; preds = %1361
  call void @llvm.memcpy.p0.p0.i64(ptr align 4 %1364, ptr align 4 %1360, i64 4, i1 false), !tbaa.struct !25
  br label %1366

1366:                                             ; preds = %1365, %1317
  br label %1367

1367:                                             ; preds = %1366, %1343
  %1368 = load i64, ptr %123, align 8, !tbaa !19
  %1369 = add i64 %1368, 1
  store i64 %1369, ptr %123, align 8, !tbaa !19
  br label %1302, !llvm.loop !60

1370:                                             ; preds = %1352, %1348, %1344, %1309
  call void @llvm.lifetime.end.p0(i64 8, ptr %123) #10
  br label %1492

1371:                                             ; preds = %1308
  br label %1372

1372:                                             ; preds = %1371
  %1373 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1374 unwind label %1387

1374:                                             ; preds = %1372
  br i1 %1373, label %1375, label %1391

1375:                                             ; preds = %1374
  %1376 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1377 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1376, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1378 unwind label %1387

1378:                                             ; preds = %1375
  %1379 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1377, ptr noundef @.str.42)
          to label %1380 unwind label %1387

1380:                                             ; preds = %1378
  %1381 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %1379, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1382 unwind label %1387

1382:                                             ; preds = %1380
  %1383 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1381, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1384 unwind label %1387

1384:                                             ; preds = %1382
  %1385 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1383, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1386 unwind label %1387

1386:                                             ; preds = %1384
  br label %1391

1387:                                             ; preds = %1482, %1393, %1384, %1382, %1380, %1378, %1375, %1372
  %1388 = landingpad { ptr, i32 }
          cleanup
  %1389 = extractvalue { ptr, i32 } %1388, 0
  store ptr %1389, ptr %24, align 8
  %1390 = extractvalue { ptr, i32 } %1388, 1
  store i32 %1390, ptr %25, align 4
  br label %1492

1391:                                             ; preds = %1386, %1374
  br label %1392

1392:                                             ; preds = %1391
  br label %1393

1393:                                             ; preds = %1392
  %1394 = load ptr, ptr %16, align 8, !tbaa !5
  %1395 = getelementptr inbounds %"class.HIR::GenericParams", ptr %1394, i32 0, i32 0
  %1396 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1395) #10
  %1397 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1398 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1397)
          to label %1399 unwind label %1387

1399:                                             ; preds = %1393
  %1400 = icmp eq i64 %1396, %1398
  br i1 %1400, label %1401, label %1402

1401:                                             ; preds = %1399
  br label %1404

1402:                                             ; preds = %1399
  call void @__assert_fail(ptr noundef @.str.43, ptr noundef @.str.5, i32 noundef 1287, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE) #12
  unreachable

1403:                                             ; No predecessors!
  br label %1404

1404:                                             ; preds = %1403, %1401
  call void @llvm.lifetime.start.p0(i64 8, ptr %127) #10
  store i64 0, ptr %127, align 8, !tbaa !19
  br label %1405

1405:                                             ; preds = %1476, %1404
  %1406 = load i64, ptr %127, align 8, !tbaa !19
  %1407 = load ptr, ptr %16, align 8, !tbaa !5
  %1408 = getelementptr inbounds %"class.HIR::GenericParams", ptr %1407, i32 0, i32 0
  %1409 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %1408) #10
  %1410 = icmp ult i64 %1406, %1409
  br i1 %1410, label %1412, label %1411

1411:                                             ; preds = %1405
  store i32 56, ptr %74, align 4
  br label %1479

1412:                                             ; preds = %1405
  %1413 = load ptr, ptr %16, align 8, !tbaa !5
  %1414 = getelementptr inbounds %"class.HIR::GenericParams", ptr %1413, i32 0, i32 0
  %1415 = load i64, ptr %127, align 8, !tbaa !19
  %1416 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %1414, i64 noundef %1415)
          to label %1417 unwind label %1457

1417:                                             ; preds = %1412
  %1418 = getelementptr inbounds %"struct.HIR::TypeParamDef", ptr %1416, i32 0, i32 2
  %1419 = load i8, ptr %1418, align 8, !tbaa !61, !range !57, !noundef !58
  %1420 = trunc i8 %1419 to i1
  br i1 %1420, label %1421, label %1475

1421:                                             ; preds = %1417
  %1422 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1423 = load i64, ptr %127, align 8, !tbaa !19
  %1424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1422, i64 noundef %1423)
          to label %1425 unwind label %1457

1425:                                             ; preds = %1421
  call void @llvm.lifetime.start.p0(i64 8, ptr %128) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1426 unwind label %1461

1426:                                             ; preds = %1425
  %1427 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1424, ptr noundef nonnull align 8 dereferenceable(8) %128)
          to label %1428 unwind label %1465

1428:                                             ; preds = %1426
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  br i1 %1427, label %1429, label %1474

1429:                                             ; preds = %1428
  %1430 = load ptr, ptr %12, align 8, !tbaa !5
  %1431 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1432 = load i64, ptr %127, align 8, !tbaa !19
  %1433 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1431, i64 noundef %1432)
          to label %1434 unwind label %1457

1434:                                             ; preds = %1429
  %1435 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %130, ptr noundef nonnull align 8 dereferenceable(8) %1430, ptr noundef nonnull align 8 dereferenceable(8) %1433)
          to label %1436 unwind label %1457

1436:                                             ; preds = %1434
  br i1 %1435, label %1473, label %1437

1437:                                             ; preds = %1436
  br label %1438

1438:                                             ; preds = %1437
  %1439 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1440 unwind label %1457

1440:                                             ; preds = %1438
  br i1 %1439, label %1441, label %1470

1441:                                             ; preds = %1440
  %1442 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %1443 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1442, ptr noundef @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %1444 unwind label %1457

1444:                                             ; preds = %1441
  %1445 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1443, ptr noundef @.str.44)
          to label %1446 unwind label %1457

1446:                                             ; preds = %1444
  %1447 = getelementptr inbounds %"struct.HIR::PathParams", ptr %26, i32 0, i32 1
  %1448 = load i64, ptr %127, align 8, !tbaa !19
  %1449 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1447, i64 noundef %1448)
          to label %1450 unwind label %1457

1450:                                             ; preds = %1446
  %1451 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1445, ptr noundef nonnull align 8 dereferenceable(8) %1449)
          to label %1452 unwind label %1457

1452:                                             ; preds = %1450
  %1453 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1451, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1454 unwind label %1457

1454:                                             ; preds = %1452
  %1455 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1453, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1456 unwind label %1457

1456:                                             ; preds = %1454
  br label %1470

1457:                                             ; preds = %1454, %1452, %1450, %1446, %1444, %1441, %1438, %1434, %1429, %1421, %1412
  %1458 = landingpad { ptr, i32 }
          cleanup
  %1459 = extractvalue { ptr, i32 } %1458, 0
  store ptr %1459, ptr %24, align 8
  %1460 = extractvalue { ptr, i32 } %1458, 1
  store i32 %1460, ptr %25, align 4
  br label %1481

1461:                                             ; preds = %1425
  %1462 = landingpad { ptr, i32 }
          cleanup
  %1463 = extractvalue { ptr, i32 } %1462, 0
  store ptr %1463, ptr %24, align 8
  %1464 = extractvalue { ptr, i32 } %1462, 1
  store i32 %1464, ptr %25, align 4
  br label %1469

1465:                                             ; preds = %1426
  %1466 = landingpad { ptr, i32 }
          cleanup
  %1467 = extractvalue { ptr, i32 } %1466, 0
  store ptr %1467, ptr %24, align 8
  %1468 = extractvalue { ptr, i32 } %1466, 1
  store i32 %1468, ptr %25, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %128) #10
  br label %1469

1469:                                             ; preds = %1465, %1461
  call void @llvm.lifetime.end.p0(i64 8, ptr %128) #10
  br label %1481

1470:                                             ; preds = %1456, %1440
  br label %1471

1471:                                             ; preds = %1470
  br label %1472

1472:                                             ; preds = %1471
  store i1 false, ptr %10, align 1
  store i32 1, ptr %74, align 4
  br label %1479

1473:                                             ; preds = %1436
  br label %1474

1474:                                             ; preds = %1473, %1428
  br label %1475

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

1476:                                             ; preds = %1475
  %1477 = load i64, ptr %127, align 8, !tbaa !19
  %1478 = add i64 %1477, 1
  store i64 %1478, ptr %127, align 8, !tbaa !19
  br label %1405, !llvm.loop !64

1479:                                             ; preds = %1472, %1411
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  %1480 = load i32, ptr %74, align 4
  switch i32 %1480, label %1491 [
    i32 56, label %1482
  ]

1481:                                             ; preds = %1469, %1457
  call void @llvm.lifetime.end.p0(i64 8, ptr %127) #10
  br label %1492

1482:                                             ; preds = %1479
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %129, ptr noundef nonnull align 8 dereferenceable(24) %26)
          to label %1483 unwind label %1387

1483:                                             ; preds = %1482
  %1484 = load i32, ptr %30, align 4, !tbaa !9
  %1485 = invoke noundef zeroext i1 @_ZNKSt8functionIFbN3HIR10PathParamsENS0_7CompareEEEclES1_S2_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef %129, i32 noundef %1484)
          to label %1486 unwind label %1487

1486:                                             ; preds = %1483
  store i1 %1485, ptr %10, align 1
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #10
  store i32 1, ptr %74, align 4
  br label %1491

1487:                                             ; preds = %1483
  %1488 = landingpad { ptr, i32 }
          cleanup
  %1489 = extractvalue { ptr, i32 } %1488, 0
  store ptr %1489, ptr %24, align 8
  %1490 = extractvalue { ptr, i32 } %1488, 1
  store i32 %1490, ptr %25, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %129) #10
  br label %1492

1491:                                             ; preds = %1486, %1479, %1240
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %93) #10
  call void @llvm.lifetime.end.p0(i64 160, ptr %93) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %80) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %79) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %1497

1492:                                             ; preds = %1487, %1481, %1387, %1370, %1300, %1239
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %93) #10
  br label %1493

1493:                                             ; preds = %1492, %849, %837
  call void @llvm.lifetime.end.p0(i64 160, ptr %93) #10
  br label %1494

1494:                                             ; preds = %1493, %820, %755, %671
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %80) #10
  br label %1495

1495:                                             ; preds = %1494, %560
  call void @llvm.lifetime.end.p0(i64 24, ptr %80) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %79) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %79) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #10
  br label %1496

1496:                                             ; preds = %1495, %559
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #10
  br label %1499

1497:                                             ; preds = %1491, %522
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #10
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @_ZN12_GLOBAL__N_19GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  %1498 = load i1, ptr %10, align 1
  ret i1 %1498

1499:                                             ; preds = %1496, %502, %244, %216, %215, %198
  call void @llvm.lifetime.end.p0(i64 12, ptr %31) #10
  br label %1500

1500:                                             ; preds = %1499, %194
  call void @llvm.lifetime.end.p0(i64 4, ptr %30) #10
  call void @_ZN12_GLOBAL__N_19GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #10
  br label %1501

1501:                                             ; preds = %1500, %190, %186
  call void @llvm.lifetime.end.p0(i64 32, ptr %28) #10
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %27) #10
  call void @llvm.lifetime.end.p0(i64 120, ptr %27) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %26) #10
  br label %1502

1502:                                             ; preds = %1501, %182
  call void @llvm.lifetime.end.p0(i64 24, ptr %26) #10
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %21) #10
  br label %1503

1503:                                             ; preds = %1502, %178
  call void @llvm.lifetime.end.p0(i64 40, ptr %21) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #10
  br label %1504

1504:                                             ; preds = %1503
  %1505 = load ptr, ptr %24, align 8
  %1506 = load i32, ptr %25, align 4
  %1507 = insertvalue { ptr, i32 } poison, ptr %1505, 0
  %1508 = insertvalue { ptr, i32 } %1507, i32 %1506, 1
  resume { ptr, i32 } %1508

1509:                                             ; preds = %481, %446, %407, %177
  unreachable
}

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19GetParamsC2E4SpanRKN3HIR13GenericParamsERNS2_10PathParamsERNS0_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #4 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)) #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN22BaseImplPlaceholderIdxC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) 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)) #3

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEENK3$_9clERKNS3_11LifetimeRefE"(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) #7 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) #7

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) #6 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) #6 align 2

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_3vEEOT_"(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 i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_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 void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

; 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 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: 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 @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40), i64 noundef, i1 noundef zeroext) #4 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: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef, i32 noundef) unnamed_addr #7 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: 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: 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(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24), i64 noundef) #6 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 uwtable
declare dso_local void @_ZN3HIR12ConstGeneric12make_GenericENS_10GenericRefE(ptr dead_on_unwind noalias writable sret(%"class.HIR::ConstGeneric") align 8, ptr noundef) #4 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 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 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

; 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 nounwind uwtable
declare dso_local void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12)) unnamed_addr #3 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 void @_ZN3HIR11LifetimeRefC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #6 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(144)) #4 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 nounwind uwtable
declare dso_local noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48)) #6 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24)) #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: mustprogress uwtable
declare dso_local noundef zeroext i1 @_ZNKSt8functionIFbN3HIR10PathParamsENS0_7CompareEEEclES1_S2_(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, i32 noundef) #4 align 2

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #3 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #6 = { 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 = { 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 #8 = { 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 #9 = { nocallback nofree nounwind willreturn memory(argmem: readwrite) }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { 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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"_ZTSZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEE22BaseImplPlaceholderIdx", !12, i64 0, !12, i64 4, !12, i64 8}
!15 = !{!14, !12, i64 4}
!16 = !{!14, !12, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = !{!20, !20, i64 0}
!20 = !{!"long", !7, i64 0}
!21 = distinct !{!21, !22}
!22 = !{!"llvm.loop.mustprogress"}
!23 = distinct !{!23, !22}
!24 = distinct !{!24, !22}
!25 = !{i64 0, i64 4, !11}
!26 = distinct !{!26, !22}
!27 = !{!28, !6, i64 152}
!28 = !{!"_ZTSN3HIR12GenericBound15Data_TraitBoundE", !29, i64 0, !35, i64 8, !36, i64 16}
!29 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !30, i64 0}
!30 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !31, i64 0}
!31 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !33, i64 0}
!33 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !34, i64 0}
!34 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!35 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!36 = !{!"_ZTSN3HIR9TraitPathE", !29, i64 0, !37, i64 8, !44, i64 40, !52, i64 88, !6, i64 136}
!37 = !{!"_ZTSN3HIR11GenericPathE", !38, i64 0, !40, i64 8}
!38 = !{!"_ZTSN3HIR10SimplePathE", !39, i64 0}
!39 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!40 = !{!"_ZTSN3HIR10PathParamsE", !41, i64 0, !42, i64 8, !43, i64 16}
!41 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!42 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!43 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!44 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !45, i64 0}
!45 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !46, i64 0}
!46 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !47, i64 0, !49, i64 8}
!47 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !48, i64 0}
!48 = !{!"_ZTSSt4lessI8RcStringE"}
!49 = !{!"_ZTSSt15_Rb_tree_header", !50, i64 0, !20, i64 32}
!50 = !{!"_ZTSSt18_Rb_tree_node_base", !51, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!51 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!52 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !53, i64 0}
!53 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !54, i64 0}
!54 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !47, i64 0, !49, i64 8}
!55 = !{!56, !6, i64 16}
!56 = !{!"_ZTSZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEE3$_6", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!57 = !{i8 0, i8 2}
!58 = !{}
!59 = distinct !{!59, !22}
!60 = distinct !{!60, !22}
!61 = !{!62, !18, i64 16}
!62 = !{!"_ZTSN3HIR12TypeParamDefE", !63, i64 0, !35, i64 8, !18, i64 16}
!63 = !{!"_ZTS8RcString", !6, i64 0}
!64 = distinct !{!64, !22}


; 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::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map", %"class.std::map.47", ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.47" = type { %"class.std::_Rb_tree.48" }
%"class.std::_Rb_tree.48" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.HIR::ResolvePlaceholdersNop" = type { %"class.HIR::ResolvePlaceholders" }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function.0" }
%"class.std::function.0" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.462 = type { ptr, ptr, ptr, ptr }
%"struct.(anonymous namespace)::GetParams::ParamsSet" = type { %"class.std::vector.463", %"class.std::vector.463", %"class.std::vector.463" }
%"class.std::vector.463" = type { %"struct.std::_Bvector_base" }
%"struct.std::_Bvector_base" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl" = type { %"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" }
%"struct.std::_Bvector_base<std::allocator<bool>>::_Bvector_impl_data" = type { %"struct.std::_Bit_iterator", %"struct.std::_Bit_iterator", ptr }
%"struct.std::_Bit_iterator" = type { %"struct.std::_Bit_iterator_base.base", [4 x i8] }
%"struct.std::_Bit_iterator_base.base" = type <{ ptr, i32 }>
%"class.(anonymous namespace)::GetParams" = type { %"class.HIR::MatchGenerics", %struct.Span, ptr, ptr }
%"class.HIR::MatchGenerics" = type { ptr }
%struct.Span = type { ptr }
%struct.BaseImplPlaceholderIdx = type { i32, i32, i32 }
%class.anon.467 = type { ptr, ptr, ptr }
%class.anon.468 = type { ptr }
%"class.std::function.434" = type { %"class.std::_Function_base", ptr }
%class.anon.469 = type { ptr, ptr }
%"struct.std::_Bit_reference" = type { ptr, i64 }
%class.anon.470 = type { i8 }
%class.anon.472 = type { i8 }
%class.anon.474 = type { i8 }
%class.RcString = type { ptr }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon.322 }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon.322 = 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 }
%"class.HIR::TypeRef" = type { ptr }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.67", [8 x i8] }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"struct.HIR::GenericRef" = type <{ %class.RcString, i32, [4 x i8] }>
%"struct.HIR::LifetimeRef" = type { i32 }
%struct.Matcher = type { %"class.HIR::MatchGenerics", %class.Monomorphiser, %struct.Span, ptr, ptr, ptr, %class.RcString, ptr, ptr }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.407" = type { ptr }
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%class.anon.476 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.477 = type { i8 }
%class.anon.479 = type { i8 }

@.str = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.23 = external hidden unnamed_addr constant [3 x i8], align 1
@.str.25 = external hidden unnamed_addr constant [2 x i8], align 1
@__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE = external hidden unnamed_addr constant [27 x i8], align 1
@.str.28 = external hidden unnamed_addr constant [17 x i8], align 1
@.str.29 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.30 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.31 = external hidden unnamed_addr constant [8 x i8], align 1
@.str.32 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.33 = external hidden unnamed_addr constant [4 x i8], align 1
@.str.34 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.35 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.36 = external hidden unnamed_addr constant [21 x i8], align 1
@.str.37 = external hidden unnamed_addr constant [16 x i8], align 1
@.str.38 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.39 = external hidden unnamed_addr constant [5 x i8], align 1
@.str.40 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.41 = external hidden unnamed_addr constant [10 x i8], align 1
@.str.42 = external hidden unnamed_addr constant [15 x i8], align 1
@.str.43 = external hidden unnamed_addr constant [61 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE = external hidden unnamed_addr constant [288 x i8], align 1
@.str.44 = external hidden unnamed_addr constant [26 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_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 #2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, 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 %8) local_unnamed_addr #3 align 2 personality ptr @__gxx_personality_v0 {
  %10 = alloca ptr, align 8
  %11 = alloca %"class.HIR::ResolvePlaceholdersNop", align 8
  %12 = alloca %class.TraceLog, align 8
  %13 = alloca %"class.std::function.0", align 8
  %14 = alloca %class.anon.462, align 8
  %15 = alloca %"struct.HIR::PathParams", align 8
  %16 = alloca %"struct.(anonymous namespace)::GetParams::ParamsSet", align 8
  %17 = alloca %"class.(anonymous namespace)::GetParams", align 8
  %18 = alloca %struct.Span, align 8
  %19 = alloca i32, align 4
  %20 = alloca %struct.BaseImplPlaceholderIdx, align 4
  %21 = alloca %struct.Span, align 8
  %22 = alloca %"class.std::function.0", align 8
  %23 = alloca %class.anon.467, align 8
  %24 = alloca i32, align 4
  %25 = alloca i32, align 4
  %26 = alloca i32, align 4
  %27 = alloca %class.anon.468, align 8
  %28 = alloca %"class.std::function.434", align 8
  %29 = alloca %class.anon.469, align 8
  %30 = alloca i8, align 1
  %31 = alloca i8, align 1
  %32 = alloca %"struct.std::_Bit_reference", align 8
  %33 = alloca %struct.Span, align 8
  %34 = alloca %"class.std::function.0", align 8
  %35 = alloca %class.anon.470, align 1
  %36 = alloca %struct.Span, align 8
  %37 = alloca %"class.std::function.0", align 8
  %38 = alloca %class.anon.472, align 1
  %39 = alloca %struct.Span, align 8
  %40 = alloca %"class.std::function.0", align 8
  %41 = alloca %class.anon.474, align 1
  %42 = alloca %class.RcString, align 8
  %43 = alloca %"class.std::__cxx11::basic_string", align 8
  %44 = alloca %"class.std::__cxx11::basic_ostringstream", align 8
  %45 = alloca ptr, align 8
  %46 = alloca %"struct.(anonymous namespace)::GetParams::ParamsSet", align 8
  %47 = alloca %"struct.HIR::PathParams", align 8
  %48 = alloca %"struct.std::_Bit_reference", align 8
  %49 = alloca %"class.HIR::TypeRef", align 8
  %50 = alloca %class.RcString, align 8
  %51 = alloca %"struct.std::_Bit_reference", align 8
  %52 = alloca %"class.HIR::ConstGeneric", align 8
  %53 = alloca %"struct.HIR::GenericRef", align 8
  %54 = alloca %class.RcString, align 8
  %55 = alloca %"struct.std::_Bit_reference", align 8
  %56 = alloca %"struct.HIR::LifetimeRef", align 4
  %57 = alloca %struct.Matcher, align 8
  %58 = alloca %struct.Span, align 8
  %59 = alloca %class.RcString, align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.407", align 8
  %62 = alloca %"class.HIR::TypeRef", align 8
  %63 = alloca %"class.HIR::TraitPath", align 8
  %64 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %65 = alloca %"struct.std::_Rb_tree_iterator", align 8
  %66 = alloca %"class.HIR::GenericPath", align 8
  %67 = alloca %"class.std::function", align 8
  %68 = alloca %class.anon.476, align 8
  %69 = alloca %"class.std::function", align 8
  %70 = alloca %class.anon.477, align 1
  %71 = alloca %"class.std::function.434", align 8
  %72 = alloca %class.anon.479, align 1
  %73 = alloca %"struct.std::_Bit_reference", align 8
  %74 = alloca %"struct.std::_Bit_reference", align 8
  %75 = alloca %"struct.std::_Bit_reference", align 8
  %76 = alloca %"struct.std::_Bit_reference", align 8
  %77 = alloca %"struct.HIR::LifetimeRef", align 4
  %78 = alloca %"class.HIR::TypeRef", align 8
  %79 = alloca %"struct.HIR::PathParams", align 8
  store ptr %3, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  store i64 0, ptr %11, align 8
  call void @_ZN3HIR22ResolvePlaceholdersNopC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %12) #8
  %80 = call noundef zeroext i1 @_Z13debug_enabledv()
  %81 = select i1 %80, ptr @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %14) #8
  store ptr %5, ptr %14, align 8, !tbaa !5
  %82 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %2, ptr %82, align 8, !tbaa !5
  %83 = getelementptr inbounds i8, ptr %14, i64 16
  store ptr %6, ptr %83, align 8, !tbaa !5
  %84 = getelementptr inbounds i8, ptr %14, i64 24
  store ptr %7, ptr %84, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(32) %14)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %12, ptr noundef %81, ptr noundef nonnull %13)
          to label %85 unwind label %107

85:                                               ; preds = %9
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %15) #8
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %86 unwind label %109

86:                                               ; preds = %85
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %16) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %17) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %87 unwind label %111

87:                                               ; preds = %86
  invoke void @_ZN12_GLOBAL__N_19GetParamsC2E4SpanRKN3HIR13GenericParamsERNS2_10PathParamsERNS0_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull %18, ptr noundef nonnull align 8 dereferenceable(96) %5, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(120) %16)
          to label %88 unwind label %113

88:                                               ; preds = %87
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %19) #8
  %89 = 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) %11, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %90 unwind label %115

90:                                               ; preds = %88
  store i32 %89, ptr %19, align 4, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 12, ptr nonnull %20) #8
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN22BaseImplPlaceholderIdxC2Ev(ptr noundef nonnull align 4 dereferenceable(12) %20) #8
  %.not = icmp eq ptr %3, null
  br i1 %.not, label %255, label %91

91:                                               ; preds = %90
  %92 = getelementptr inbounds i8, ptr %3, i64 8
  %93 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %94 unwind label %117

94:                                               ; preds = %91
  %95 = getelementptr inbounds i8, ptr %6, i64 8
  %96 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %95)
          to label %97 unwind label %117

97:                                               ; preds = %94
  %98 = icmp eq i64 %93, %96
  br i1 %98, label %129, label %99

99:                                               ; preds = %97
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %100 unwind label %119

100:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %23) #8
  store ptr %2, ptr %23, align 8, !tbaa !5
  %101 = getelementptr inbounds i8, ptr %23, i64 8
  store ptr %10, ptr %101, align 8, !tbaa !5
  %102 = getelementptr inbounds i8, ptr %23, i64 16
  store ptr %6, ptr %102, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(24) %23)
          to label %103 unwind label %121

103:                                              ; preds = %100
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull %22)
          to label %104 unwind label %123

104:                                              ; preds = %103
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  %105 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %105, ptr noundef nonnull @.str)
          to label %106 unwind label %127

106:                                              ; preds = %104
  invoke void @__cxa_throw(ptr nonnull %105, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %815 unwind label %117

107:                                              ; preds = %9
  %108 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %14) #8
  br label %814

109:                                              ; preds = %85
  %110 = landingpad { ptr, i32 }
          cleanup
  br label %813

111:                                              ; preds = %86
  %112 = landingpad { ptr, i32 }
          cleanup
  br label %812

113:                                              ; preds = %87
  %114 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  br label %812

115:                                              ; preds = %88
  %116 = landingpad { ptr, i32 }
          cleanup
  br label %811

117:                                              ; preds = %268, %266, %264, %261, %258, %106, %94, %91
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %810

119:                                              ; preds = %99
  %120 = landingpad { ptr, i32 }
          cleanup
  br label %126

121:                                              ; preds = %100
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %125

123:                                              ; preds = %103
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %125

125:                                              ; preds = %123, %121
  %.pn = phi { ptr, i32 } [ %124, %123 ], [ %122, %121 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %23) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %21) #8
  br label %126

126:                                              ; preds = %125, %119
  %.pn.pn = phi { ptr, i32 } [ %.pn, %125 ], [ %120, %119 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #8
  br label %810

127:                                              ; preds = %104
  %128 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %105) #8
  br label %810

129:                                              ; preds = %97
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %24) #8
  %130 = 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) %11, ptr noundef nonnull align 8 dereferenceable(8) %17)
          to label %131 unwind label %138

131:                                              ; preds = %129
  store i32 %130, ptr %24, align 4, !tbaa !9
  %132 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN3HIRaNERNS_7CompareERKS0_(ptr noundef nonnull align 4 dereferenceable(4) %19, ptr noundef nonnull align 4 dereferenceable(4) %24)
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %25) #8
  store i32 0, ptr %25, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %26) #8
  store i32 0, ptr %26, align 4, !tbaa !11
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  store ptr %26, ptr %27, align 8, !tbaa !5
  %133 = call noundef ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
  %134 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %.preheader341 unwind label %140

.preheader341:                                    ; preds = %131
  %.not242369 = icmp eq ptr %133, %134
  br i1 %.not242369, label %._crit_edge, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader341
  %135 = getelementptr inbounds i8, ptr %29, i64 8
  br label %142

._crit_edge:                                      ; preds = %144, %.preheader341
  %136 = call noundef ptr @_ZNK10ThinVectorIN3HIR11LifetimeRefEE5beginEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %137 = invoke noundef ptr @_ZNK10ThinVectorIN3HIR11LifetimeRefEE3endEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %.preheader340 unwind label %157

.preheader340:                                    ; preds = %._crit_edge
  %.not243371 = icmp eq ptr %136, %137
  br i1 %.not243371, label %._crit_edge374, label %.lr.ph373

138:                                              ; preds = %129
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %24) #8
  br label %810

140:                                              ; preds = %131
  %141 = landingpad { ptr, i32 }
          cleanup
  br label %254

142:                                              ; preds = %.lr.ph, %144
  %.0221370 = phi ptr [ %133, %.lr.ph ], [ %145, %144 ]
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #8
  store ptr %25, ptr %29, align 8, !tbaa !5
  store ptr %27, ptr %135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsES3_RKNS0_13GenericParamsERSF_S3_S_IFbSE_NS0_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %28, ptr noundef nonnull align 8 dereferenceable(16) %29) #8
  %143 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %.0221370, ptr noundef nonnull %28)
          to label %144 unwind label %146

144:                                              ; preds = %142
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  %145 = getelementptr inbounds i8, ptr %.0221370, i64 8
  %.not242 = icmp eq ptr %145, %134
  br i1 %.not242, label %._crit_edge, label %142

146:                                              ; preds = %142
  %147 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %28) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #8
  br label %254

._crit_edge374:                                   ; preds = %159, %.preheader340
  %148 = load i32, ptr %25, align 4, !tbaa !11
  %149 = add i32 %148, 1
  store i32 %149, ptr %20, align 4, !tbaa !13
  %150 = getelementptr inbounds i8, ptr %20, i64 4
  store i32 1, ptr %150, align 4, !tbaa !15
  %151 = load i32, ptr %26, align 4, !tbaa !11
  %152 = add i32 %151, 1
  %153 = getelementptr inbounds i8, ptr %20, i64 8
  store i32 %152, ptr %153, align 4, !tbaa !16
  %154 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  %.fca.0.extract96 = extractvalue { ptr, i32 } %154, 0
  %.fca.1.extract97 = extractvalue { ptr, i32 } %154, 1
  %155 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %16) #8
  %.fca.0.extract90 = extractvalue { ptr, i32 } %155, 0
  %.fca.1.extract91 = extractvalue { ptr, i32 } %155, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %30) #8
  store i8 0, ptr %30, align 1, !tbaa !17
  %156 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %.fca.0.extract96, i32 %.fca.1.extract97, ptr %.fca.0.extract90, i32 %.fca.1.extract91, ptr noundef nonnull align 1 dereferenceable(1) %30)
          to label %163 unwind label %177

157:                                              ; preds = %._crit_edge
  %158 = landingpad { ptr, i32 }
          cleanup
  br label %254

.lr.ph373:                                        ; preds = %.preheader340, %159
  %.0222372 = phi ptr [ %160, %159 ], [ %136, %.preheader340 ]
  invoke void @"_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEENK3$_9clERKNS3_11LifetimeRefE"(ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 4 dereferenceable(4) %.0222372)
          to label %159 unwind label %161

159:                                              ; preds = %.lr.ph373
  %160 = getelementptr inbounds i8, ptr %.0222372, i64 4
  %.not243 = icmp eq ptr %160, %137
  br i1 %.not243, label %._crit_edge374, label %.lr.ph373

161:                                              ; preds = %.lr.ph373
  %162 = landingpad { ptr, i32 }
          cleanup
  br label %254

163:                                              ; preds = %._crit_edge374
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  %164 = getelementptr inbounds i8, ptr %16, i64 80
  %165 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40) %164) #8
  %.fca.0.extract83 = extractvalue { ptr, i32 } %165, 0
  %.fca.1.extract84 = extractvalue { ptr, i32 } %165, 1
  %166 = call { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40) %164) #8
  %.fca.0.extract = extractvalue { ptr, i32 } %166, 0
  %.fca.1.extract = extractvalue { ptr, i32 } %166, 1
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %31) #8
  store i8 0, ptr %31, align 1, !tbaa !17
  %167 = invoke noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr %.fca.0.extract83, i32 %.fca.1.extract84, ptr %.fca.0.extract, i32 %.fca.1.extract, ptr noundef nonnull align 1 dereferenceable(1) %31)
          to label %168 unwind label %179

168:                                              ; preds = %163
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  %169 = getelementptr inbounds i8, ptr %16, i64 40
  %170 = getelementptr inbounds i8, ptr %32, i64 8
  br label %171

171:                                              ; preds = %185, %168
  %.0225 = phi i32 [ 0, %168 ], [ %189, %185 ]
  %172 = zext i32 %.0225 to i64
  %173 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %174 unwind label %181

174:                                              ; preds = %171
  %175 = icmp ugt i64 %173, %172
  br i1 %175, label %183, label %176

176:                                              ; preds = %174
  %.not244 = icmp eq i64 %156, 0
  br i1 %.not244, label %213, label %192

177:                                              ; preds = %._crit_edge374
  %178 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %30) #8
  br label %254

179:                                              ; preds = %163
  %180 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %31) #8
  br label %254

181:                                              ; preds = %171
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %254

183:                                              ; preds = %174
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #8
  %184 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %169, i64 noundef %172)
          to label %185 unwind label %190

185:                                              ; preds = %183
  %186 = extractvalue { ptr, i64 } %184, 0
  store ptr %186, ptr %32, align 8
  %187 = extractvalue { ptr, i64 } %184, 1
  store i64 %187, ptr %170, align 8
  %188 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %32) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  %189 = add i32 %.0225, 1
  br label %171, !llvm.loop !19

190:                                              ; preds = %183
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #8
  br label %254

192:                                              ; preds = %176
  %193 = load i32, ptr %20, align 4, !tbaa !13
  %194 = getelementptr inbounds i8, ptr %15, i64 8
  %195 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %196 unwind label %204

196:                                              ; preds = %192
  %197 = zext i32 %193 to i64
  %198 = add i64 %195, %197
  %199 = icmp ult i64 %198, 257
  br i1 %199, label %213, label %200

200:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %33) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %201 unwind label %206

201:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %35) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 1 dereferenceable(1) %35) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %33, ptr noundef nonnull %34)
          to label %202 unwind label %208

202:                                              ; preds = %201
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  %203 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %203, ptr noundef nonnull @.str)
          to label %.invoke unwind label %211

204:                                              ; preds = %.invoke, %234, %214, %192
  %205 = landingpad { ptr, i32 }
          cleanup
  br label %254

206:                                              ; preds = %200
  %207 = landingpad { ptr, i32 }
          cleanup
  br label %210

208:                                              ; preds = %201
  %209 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %35) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #8
  br label %210

210:                                              ; preds = %208, %206
  %.pn245 = phi { ptr, i32 } [ %209, %208 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %33) #8
  br label %254

211:                                              ; preds = %202
  %212 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %203) #8
  br label %254

213:                                              ; preds = %196, %176
  %.not247 = icmp eq i64 %167, 0
  br i1 %.not247, label %233, label %214

214:                                              ; preds = %213
  %215 = load i32, ptr %150, align 4, !tbaa !15
  %216 = getelementptr inbounds i8, ptr %15, i64 16
  %217 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %216)
          to label %218 unwind label %204

218:                                              ; preds = %214
  %219 = zext i32 %215 to i64
  %220 = add i64 %217, %219
  %221 = icmp ult i64 %220, 257
  br i1 %221, label %233, label %222

222:                                              ; preds = %218
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %223 unwind label %226

223:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %38) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull align 1 dereferenceable(1) %38) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull %37)
          to label %224 unwind label %228

224:                                              ; preds = %223
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %38) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  %225 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %225, ptr noundef nonnull @.str)
          to label %.invoke unwind label %231

226:                                              ; preds = %222
  %227 = landingpad { ptr, i32 }
          cleanup
  br label %230

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

230:                                              ; preds = %228, %226
  %.pn248 = phi { ptr, i32 } [ %229, %228 ], [ %227, %226 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #8
  br label %254

231:                                              ; preds = %224
  %232 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %225) #8
  br label %254

233:                                              ; preds = %218, %213
  br i1 %.not244, label %253, label %234

234:                                              ; preds = %233
  %235 = load i32, ptr %153, align 4, !tbaa !16
  %236 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %237 unwind label %204

237:                                              ; preds = %234
  %238 = zext i32 %235 to i64
  %239 = add i64 %236, %238
  %240 = icmp ult i64 %239, 257
  br i1 %240, label %253, label %241

241:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %39) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %242 unwind label %246

242:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %41) #8
  call void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 1 dereferenceable(1) %41) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull %40)
          to label %243 unwind label %248

243:                                              ; preds = %242
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  %244 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %244, ptr noundef nonnull @.str)
          to label %.invoke unwind label %251

.invoke:                                          ; preds = %202, %243, %224
  %245 = phi ptr [ %225, %224 ], [ %244, %243 ], [ %203, %202 ]
  invoke void @__cxa_throw(ptr nonnull %245, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #9
          to label %.cont unwind label %204

.cont:                                            ; preds = %.invoke
  unreachable

246:                                              ; preds = %241
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %250

248:                                              ; preds = %242
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %41) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  br label %250

250:                                              ; preds = %248, %246
  %.pn250 = phi { ptr, i32 } [ %249, %248 ], [ %247, %246 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %39) #8
  br label %254

251:                                              ; preds = %243
  %252 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %244) #8
  br label %254

253:                                              ; preds = %237, %233
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #8
  br label %255

254:                                              ; preds = %177, %204, %210, %211, %230, %231, %250, %251, %190, %181, %179, %157, %161, %140, %146
  %.pn301.pn = phi { ptr, i32 } [ %147, %146 ], [ %141, %140 ], [ %162, %161 ], [ %158, %157 ], [ %178, %177 ], [ %180, %179 ], [ %205, %204 ], [ %252, %251 ], [ %.pn250, %250 ], [ %232, %231 ], [ %.pn248, %230 ], [ %212, %211 ], [ %.pn245, %210 ], [ %191, %190 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %26) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %25) #8
  br label %810

255:                                              ; preds = %253, %90
  %256 = load i32, ptr %19, align 4, !tbaa !9
  %257 = icmp eq i32 %256, 2
  br i1 %257, label %258, label %270

258:                                              ; preds = %255
  %259 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %260 unwind label %117

260:                                              ; preds = %258
  br i1 %259, label %261, label %809

261:                                              ; preds = %260
  %262 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %263 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %262, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %264 unwind label %117

264:                                              ; preds = %261
  %265 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %263, ptr noundef nonnull @.str.28)
          to label %266 unwind label %117

266:                                              ; preds = %264
  %267 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %265, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %268 unwind label %117

268:                                              ; preds = %266
  %269 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %267, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %809 unwind label %117

270:                                              ; preds = %255
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 376, ptr nonnull %44) #8
  invoke void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44)
          to label %271 unwind label %292

271:                                              ; preds = %270
  %272 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEA8_cEOT_S8_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %44, ptr noundef nonnull align 1 dereferenceable(8) @.str.29)
          to label %273 unwind label %294

273:                                              ; preds = %271
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store ptr %5, ptr %45, align 8, !tbaa !5
  %274 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZStlsINSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEEPKN3HIR13GenericParamsEEOT_SB_RKT0_(ptr noundef nonnull align 8 dereferenceable(112) %272, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %275 unwind label %296

275:                                              ; preds = %273
  invoke void @_ZNKSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEE3strEv(ptr dead_on_unwind nonnull writable sret(%"class.std::__cxx11::basic_string") align 8 %43, ptr noundef nonnull align 8 dereferenceable(112) %274)
          to label %276 unwind label %296

276:                                              ; preds = %275
  invoke void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %42, ptr noundef nonnull align 8 dereferenceable(32) %43)
          to label %277 unwind label %298

277:                                              ; preds = %276
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44) #8
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  call void @llvm.lifetime.start.p0(i64 120, ptr nonnull %46) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetC2Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %47) #8
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %.preheader339 unwind label %303

.preheader339:                                    ; preds = %277
  %278 = getelementptr inbounds i8, ptr %15, i64 8
  %279 = getelementptr inbounds i8, ptr %48, i64 8
  %280 = getelementptr inbounds i8, ptr %47, i64 8
  br label %281

281:                                              ; preds = %.preheader339, %357
  %.0235 = phi i32 [ %358, %357 ], [ 0, %.preheader339 ]
  %282 = zext i32 %.0235 to i64
  %283 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %284 unwind label %305

284:                                              ; preds = %281
  %285 = icmp ugt i64 %283, %282
  br i1 %285, label %307, label %.preheader338

.preheader338:                                    ; preds = %284
  %286 = getelementptr inbounds i8, ptr %15, i64 16
  %287 = getelementptr inbounds i8, ptr %16, i64 80
  %288 = getelementptr inbounds i8, ptr %51, i64 8
  %289 = getelementptr inbounds i8, ptr %47, i64 16
  %290 = getelementptr inbounds i8, ptr %46, i64 80
  %291 = getelementptr inbounds i8, ptr %20, i64 4
  br label %359

292:                                              ; preds = %270
  %293 = landingpad { ptr, i32 }
          cleanup
  br label %302

294:                                              ; preds = %271
  %295 = landingpad { ptr, i32 }
          cleanup
  br label %301

296:                                              ; preds = %275, %273
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %300

298:                                              ; preds = %276
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEED2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #8
  br label %300

300:                                              ; preds = %298, %296
  %.pn252 = phi { ptr, i32 } [ %299, %298 ], [ %297, %296 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  br label %301

301:                                              ; preds = %300, %294
  %.pn252.pn = phi { ptr, i32 } [ %.pn252, %300 ], [ %295, %294 ]
  call void @_ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEED1Ev(ptr noundef nonnull align 8 dereferenceable(112) %44) #8
  br label %302

302:                                              ; preds = %301, %292
  %.pn252.pn.pn = phi { ptr, i32 } [ %.pn252.pn, %301 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 376, ptr nonnull %44) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %43) #8
  br label %808

303:                                              ; preds = %277
  %304 = landingpad { ptr, i32 }
          cleanup
  br label %807

305:                                              ; preds = %353, %351, %348, %346, %344, %342, %339, %337, %334, %329, %322, %320, %319, %317, %313, %281
  %306 = landingpad { ptr, i32 }
          cleanup
  br label %806

307:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %48) #8
  %308 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef %282)
          to label %309 unwind label %323

309:                                              ; preds = %307
  %310 = extractvalue { ptr, i64 } %308, 0
  store ptr %310, ptr %48, align 8
  %311 = extractvalue { ptr, i64 } %308, 1
  store i64 %311, ptr %279, align 8
  %312 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %48) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  br i1 %312, label %357, label %313

313:                                              ; preds = %309
  %314 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %280)
          to label %315 unwind label %305

315:                                              ; preds = %313
  %316 = icmp eq i64 %314, 0
  br i1 %316, label %317, label %325

317:                                              ; preds = %315
  %318 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %319 unwind label %305

319:                                              ; preds = %317
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %280, i64 noundef %318)
          to label %320 unwind label %305

320:                                              ; preds = %319
  %321 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %322 unwind label %305

322:                                              ; preds = %320
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %46, i64 noundef %321, i1 noundef zeroext false)
          to label %325 unwind label %305

323:                                              ; preds = %307
  %324 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %48) #8
  br label %806

325:                                              ; preds = %322, %315
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %49) #8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %42)
  %326 = load i32, ptr %20, align 4, !tbaa !13
  %327 = add i32 %.0235, 512
  %328 = add i32 %327, %326
  invoke void @_ZN3HIR7TypeRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull %50, i32 noundef %328)
          to label %329 unwind label %355

329:                                              ; preds = %325
  %330 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %280, i64 noundef %282)
  %331 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %330, ptr noundef nonnull align 8 dereferenceable(8) %49)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  %332 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %333 unwind label %305

333:                                              ; preds = %329
  br i1 %332, label %334, label %357

334:                                              ; preds = %333
  %335 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %336 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %335, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %337 unwind label %305

337:                                              ; preds = %334
  %338 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %336, ptr noundef nonnull @.str.30)
          to label %339 unwind label %305

339:                                              ; preds = %337
  %340 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %280, i64 noundef %282)
  %341 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %338, ptr noundef nonnull align 8 dereferenceable(8) %340)
          to label %342 unwind label %305

342:                                              ; preds = %339
  %343 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %341, ptr noundef nonnull @.str.31)
          to label %344 unwind label %305

344:                                              ; preds = %342
  %345 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEj(ptr noundef nonnull align 8 dereferenceable(8) %343, i32 noundef %.0235)
          to label %346 unwind label %305

346:                                              ; preds = %344
  %347 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull @.str.25)
          to label %348 unwind label %305

348:                                              ; preds = %346
  %349 = call noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %282) #8
  %350 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %347, ptr noundef nonnull align 8 dereferenceable(8) %349)
          to label %351 unwind label %305

351:                                              ; preds = %348
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %350, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %353 unwind label %305

353:                                              ; preds = %351
  %354 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %352, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %357 unwind label %305

355:                                              ; preds = %325
  %356 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %49) #8
  br label %806

357:                                              ; preds = %309, %353, %333
  %358 = add i32 %.0235, 1
  br label %281, !llvm.loop !21

359:                                              ; preds = %.preheader338, %405
  %.0234 = phi i64 [ %406, %405 ], [ 0, %.preheader338 ]
  %360 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %286)
          to label %361 unwind label %367

361:                                              ; preds = %359
  %362 = icmp ult i64 %.0234, %360
  br i1 %362, label %369, label %.preheader337

.preheader337:                                    ; preds = %361
  %363 = getelementptr inbounds i8, ptr %16, i64 40
  %364 = getelementptr inbounds i8, ptr %55, i64 8
  %365 = getelementptr inbounds i8, ptr %46, i64 40
  %366 = getelementptr inbounds i8, ptr %20, i64 8
  br label %407

367:                                              ; preds = %384, %382, %381, %379, %375, %359
  %368 = landingpad { ptr, i32 }
          cleanup
  br label %806

369:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %51) #8
  %370 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %287, i64 noundef %.0234)
          to label %371 unwind label %385

371:                                              ; preds = %369
  %372 = extractvalue { ptr, i64 } %370, 0
  store ptr %372, ptr %51, align 8
  %373 = extractvalue { ptr, i64 } %370, 1
  store i64 %373, ptr %288, align 8
  %374 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %51) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  br i1 %374, label %405, label %375

375:                                              ; preds = %371
  %376 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %289)
          to label %377 unwind label %367

377:                                              ; preds = %375
  %378 = icmp eq i64 %376, 0
  br i1 %378, label %379, label %387

379:                                              ; preds = %377
  %380 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %286)
          to label %381 unwind label %367

381:                                              ; preds = %379
  invoke void @_ZN10ThinVectorIN3HIR12ConstGenericEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %289, i64 noundef %380)
          to label %382 unwind label %367

382:                                              ; preds = %381
  %383 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR12ConstGenericEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %286)
          to label %384 unwind label %367

384:                                              ; preds = %382
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %290, i64 noundef %383, i1 noundef zeroext false)
          to label %387 unwind label %367

385:                                              ; preds = %369
  %386 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %51) #8
  br label %806

387:                                              ; preds = %384, %377
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %52) #8
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(8) %42)
  %388 = load i32, ptr %291, align 4, !tbaa !15
  %389 = trunc i64 %.0234 to i32
  %390 = add i32 %389, 512
  %391 = add i32 %390, %388
  invoke void @_ZN3HIR10GenericRefC2E8RcStringj(ptr noundef nonnull align 8 dereferenceable(12) %53, ptr noundef nonnull %54, i32 noundef %391)
          to label %392 unwind label %397

392:                                              ; preds = %387
  invoke void @_ZN3HIR12ConstGeneric12make_GenericENS_10GenericRefE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::ConstGeneric") align 8 %52, ptr noundef nonnull %53)
          to label %393 unwind label %399

393:                                              ; preds = %392
  %394 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZN10ThinVectorIN3HIR12ConstGenericEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %289, i64 noundef %.0234)
  %395 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZN3HIR12ConstGenericaSEOS0_(ptr noundef nonnull align 8 dereferenceable(24) %394, ptr noundef nonnull align 8 dereferenceable(24) %52)
          to label %396 unwind label %401

396:                                              ; preds = %393
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %53) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #8
  br label %405

397:                                              ; preds = %387
  %398 = landingpad { ptr, i32 }
          cleanup
  br label %404

399:                                              ; preds = %392
  %400 = landingpad { ptr, i32 }
          cleanup
  br label %403

401:                                              ; preds = %393
  %402 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR12ConstGenericD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %52) #8
  br label %403

403:                                              ; preds = %401, %399
  %.pn285 = phi { ptr, i32 } [ %402, %401 ], [ %400, %399 ]
  call void @_ZN3HIR10GenericRefD2Ev(ptr noundef nonnull align 8 dereferenceable(12) %53) #8
  br label %404

404:                                              ; preds = %403, %397
  %.pn285.pn = phi { ptr, i32 } [ %.pn285, %403 ], [ %398, %397 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %52) #8
  br label %806

405:                                              ; preds = %371, %396
  %406 = add nuw i64 %.0234, 1
  br label %359, !llvm.loop !22

407:                                              ; preds = %.preheader337, %439
  %.0233 = phi i64 [ %440, %439 ], [ 0, %.preheader337 ]
  %408 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %409 unwind label %412

409:                                              ; preds = %407
  %410 = icmp ult i64 %.0233, %408
  br i1 %410, label %414, label %411

411:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 160, ptr nonnull %57) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %441 unwind label %458

412:                                              ; preds = %429, %427, %426, %424, %420, %407
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %806

414:                                              ; preds = %409
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %55) #8
  %415 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %363, i64 noundef %.0233)
          to label %416 unwind label %430

416:                                              ; preds = %414
  %417 = extractvalue { ptr, i64 } %415, 0
  store ptr %417, ptr %55, align 8
  %418 = extractvalue { ptr, i64 } %415, 1
  store i64 %418, ptr %364, align 8
  %419 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %55) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  br i1 %419, label %439, label %420

420:                                              ; preds = %416
  %421 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %47)
          to label %422 unwind label %412

422:                                              ; preds = %420
  %423 = icmp eq i64 %421, 0
  br i1 %423, label %424, label %432

424:                                              ; preds = %422
  %425 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %426 unwind label %412

426:                                              ; preds = %424
  invoke void @_ZN10ThinVectorIN3HIR11LifetimeRefEE6resizeEm(ptr noundef nonnull align 8 dereferenceable(8) %47, i64 noundef %425)
          to label %427 unwind label %412

427:                                              ; preds = %426
  %428 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %429 unwind label %412

429:                                              ; preds = %427
  invoke void @_ZNSt6vectorIbSaIbEE6resizeEmb(ptr noundef nonnull align 8 dereferenceable(40) %365, i64 noundef %428, i1 noundef zeroext false)
          to label %432 unwind label %412

430:                                              ; preds = %414
  %431 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %55) #8
  br label %806

432:                                              ; preds = %429, %422
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %56) #8
  %433 = load i32, ptr %366, align 4, !tbaa !16
  %434 = trunc i64 %.0233 to i32
  %435 = add i32 %434, 512
  %436 = add i32 %435, %433
  call void @_ZN3HIR11LifetimeRefC2Ej(ptr noundef nonnull align 4 dereferenceable(4) %56, i32 noundef %436)
  %437 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %47, i64 noundef %.0233)
  %438 = load i32, ptr %56, align 4, !tbaa !11
  store i32 %438, ptr %437, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %56) #8
  br label %439

439:                                              ; preds = %416, %432
  %440 = add nuw i64 %.0233, 1
  br label %407, !llvm.loop !23

441:                                              ; preds = %411
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %42)
  invoke void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherC2ES0_SG_RKN12_GLOBAL__N_19GetParams9ParamsSetE8RcStringRKZNKS_26find_impl__check_crate_rawES2_S6_S9_SC_SF_SG_SC_SK_E22BaseImplPlaceholderIdxRS7_RSO_(ptr noundef nonnull align 8 dereferenceable(160) %57, ptr noundef nonnull %58, ptr noundef nonnull align 8 dereferenceable(24) %15, ptr noundef nonnull align 8 dereferenceable(120) %16, ptr noundef nonnull %59, ptr noundef nonnull align 4 dereferenceable(12) %20, ptr noundef nonnull align 8 dereferenceable(24) %47, ptr noundef nonnull align 8 dereferenceable(120) %46)
          to label %442 unwind label %460

442:                                              ; preds = %441
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  %443 = getelementptr inbounds i8, ptr %5, i64 72
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %60) #8
  %444 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %443) #8
  store ptr %444, ptr %60, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %61) #8
  %445 = call ptr @_ZNKSt6vectorIN3HIR12GenericBoundESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %443) #8
  store ptr %445, ptr %61, align 8
  %446 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br i1 %446, label %.lr.ph379, label %.loopexit416

.lr.ph379:                                        ; preds = %442
  %447 = getelementptr inbounds i8, ptr %57, i64 8
  %448 = getelementptr inbounds i8, ptr %63, i64 40
  %449 = getelementptr inbounds i8, ptr %63, i64 8
  %450 = getelementptr inbounds i8, ptr %68, i64 8
  %451 = getelementptr inbounds i8, ptr %68, i64 16
  %452 = getelementptr inbounds i8, ptr %68, i64 24
  %453 = getelementptr inbounds i8, ptr %68, i64 32
  %454 = getelementptr inbounds i8, ptr %68, i64 40
  %455 = getelementptr inbounds i8, ptr %68, i64 48
  %456 = getelementptr inbounds i8, ptr %66, i64 8
  %457 = getelementptr inbounds i8, ptr %63, i64 16
  br label %462

458:                                              ; preds = %411
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %805

460:                                              ; preds = %441
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %805

462:                                              ; preds = %.lr.ph379, %.thread329
  %463 = call noundef nonnull align 8 dereferenceable(168) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %464 = call noundef ptr @_ZNK3HIR12GenericBound14opt_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168) %463)
  %.not256 = icmp eq ptr %464, null
  br i1 %.not256, label %.thread329, label %465

465:                                              ; preds = %462
  %466 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %467 unwind label %485

467:                                              ; preds = %465
  br i1 %466, label %468, label %487

468:                                              ; preds = %467
  %469 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %470 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %469, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %471 unwind label %485

471:                                              ; preds = %468
  %472 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull @.str.32)
          to label %473 unwind label %485

473:                                              ; preds = %471
  %474 = getelementptr inbounds i8, ptr %464, i64 8
  %475 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %472, ptr noundef nonnull align 8 dereferenceable(8) %474)
          to label %476 unwind label %485

476:                                              ; preds = %473
  %477 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull @.str.33)
          to label %478 unwind label %485

478:                                              ; preds = %476
  %479 = getelementptr inbounds i8, ptr %464, i64 16
  %480 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef nonnull align 8 dereferenceable(144) %479)
          to label %481 unwind label %485

481:                                              ; preds = %478
  %482 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %480, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %483 unwind label %485

483:                                              ; preds = %481
  %484 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %487 unwind label %485

485:                                              ; preds = %483, %481, %478, %476, %473, %471, %468, %465
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %669

487:                                              ; preds = %483, %467
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #8
  %488 = getelementptr inbounds i8, ptr %464, i64 8
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %62, ptr noundef nonnull align 8 dereferenceable(96) %447, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %488, i1 noundef zeroext true)
          to label %489 unwind label %511

489:                                              ; preds = %487
  invoke void @_ZNK18StaticTraitResolve23expand_associated_typesERK4SpanRN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %490 unwind label %513

490:                                              ; preds = %489
  call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %63) #8
  %491 = getelementptr inbounds i8, ptr %464, i64 16
  invoke void @_ZNK13Monomorphiser19monomorph_traitpathERK4SpanRKN3HIR9TraitPathEbb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TraitPath") align 8 %63, ptr noundef nonnull align 8 dereferenceable(96) %447, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %491, i1 noundef zeroext false, i1 noundef zeroext false)
          to label %492 unwind label %515

492:                                              ; preds = %490
  invoke void @_ZNK18StaticTraitResolve26expand_associated_types_tpERK4SpanRN3HIR9TraitPathE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(144) %63)
          to label %493 unwind label %517

493:                                              ; preds = %492
  %494 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %495 unwind label %517

495:                                              ; preds = %493
  br i1 %494, label %496, label %519

496:                                              ; preds = %495
  %497 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %498 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %497, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %499 unwind label %517

499:                                              ; preds = %496
  %500 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %498, ptr noundef nonnull @.str.34)
          to label %501 unwind label %517

501:                                              ; preds = %499
  %502 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %500, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %503 unwind label %517

503:                                              ; preds = %501
  %504 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %502, ptr noundef nonnull @.str.35)
          to label %505 unwind label %517

505:                                              ; preds = %503
  %506 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %504, ptr noundef nonnull align 8 dereferenceable(144) %63)
          to label %507 unwind label %517

507:                                              ; preds = %505
  %508 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %506, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %509 unwind label %517

509:                                              ; preds = %507
  %510 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %519 unwind label %517

511:                                              ; preds = %487
  %512 = landingpad { ptr, i32 }
          cleanup
  br label %668

513:                                              ; preds = %489
  %514 = landingpad { ptr, i32 }
          cleanup
  br label %667

515:                                              ; preds = %490
  %516 = landingpad { ptr, i32 }
          cleanup
  br label %666

517:                                              ; preds = %509, %507, %505, %503, %501, %499, %496, %493, %492
  %518 = landingpad { ptr, i32 }
          cleanup
  br label %665

519:                                              ; preds = %509, %495
  %520 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %521 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %520)
  br i1 %521, label %.thread327.thread, label %522

522:                                              ; preds = %519
  %523 = call noundef i64 @_ZNKSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(48) %448) #8
  %.not257 = icmp eq i64 %523, 0
  br i1 %.not257, label %598, label %524

524:                                              ; preds = %522
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %64) #8
  %525 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE5beginEv(ptr noundef nonnull align 8 dereferenceable(48) %448) #8
  store ptr %525, ptr %64, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %65) #8
  %526 = call ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %448) #8
  store ptr %526, ptr %65, align 8
  %527 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br i1 %527, label %.lr.ph376, label %._crit_edge377

.lr.ph376:                                        ; preds = %524
  %528 = getelementptr inbounds i8, ptr %464, i64 152
  br label %529

529:                                              ; preds = %.lr.ph376, %.thread
  %530 = call noundef nonnull align 8 dereferenceable(48) ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  %531 = getelementptr inbounds i8, ptr %530, i64 40
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %66) #8
  invoke void @_ZN3HIR11GenericPathC1Ev(ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %532 unwind label %559

532:                                              ; preds = %529
  %533 = load ptr, ptr %528, align 8, !tbaa !24
  %534 = call noundef ptr @_ZNK8RcString5c_strEv(ptr noundef nonnull align 8 dereferenceable(8) %530)
  %535 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve19trait_contains_typeERK4SpanRKN3HIR11GenericPathERKNS3_5TraitEPKcRS4_(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(32) %449, ptr noundef nonnull align 8 dereferenceable(400) %533, ptr noundef %534, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %536 unwind label %561

536:                                              ; preds = %532
  %537 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %538 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %537)
  br i1 %538, label %539, label %563

539:                                              ; preds = %536
  %540 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %541 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %540)
  %542 = call noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %541)
  br i1 %542, label %543, label %563

543:                                              ; preds = %539
  %544 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %545 unwind label %.loopexit332

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

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

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

551:                                              ; preds = %549
  %552 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %550, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %553 unwind label %.loopexit332

553:                                              ; preds = %551
  %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.37)
          to label %555 unwind label %.loopexit332

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 %.loopexit332

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 %.thread unwind label %.loopexit332

559:                                              ; preds = %529
  %560 = landingpad { ptr, i32 }
          cleanup
  br label %597

561:                                              ; preds = %532
  %562 = landingpad { ptr, i32 }
          cleanup
  br label %596

.loopexit332:                                     ; preds = %543, %546, %549, %551, %553, %555, %557
  %lpad.loopexit334 = landingpad { ptr, i32 }
          cleanup
  br label %596

.loopexit.split-lp333:                            ; preds = %572, %575, %578, %580, %582, %584, %586, %588, %590, %592
  %lpad.loopexit.split-lp335 = landingpad { ptr, i32 }
          cleanup
  br label %596

563:                                              ; preds = %539, %536
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %68) #8
  store ptr %530, ptr %68, align 8, !tbaa !5
  store ptr %66, ptr %450, align 8, !tbaa !5
  store ptr %0, ptr %451, align 8, !tbaa !53
  store ptr %1, ptr %452, align 8, !tbaa !5
  store ptr %531, ptr %453, align 8, !tbaa !5
  store ptr %11, ptr %454, align 8, !tbaa !5
  store ptr %57, ptr %455, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %67, ptr noundef nonnull align 8 dereferenceable(56) %68)
          to label %564 unwind label %566

564:                                              ; preds = %563
  %565 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(24) %456, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull %67)
          to label %571 unwind label %568

566:                                              ; preds = %563
  %567 = landingpad { ptr, i32 }
          cleanup
  br label %570

568:                                              ; preds = %564
  %569 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  br label %570

570:                                              ; preds = %568, %566
  %.pn258 = phi { ptr, i32 } [ %569, %568 ], [ %567, %566 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %68) #8
  br label %596

571:                                              ; preds = %564
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #8
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %68) #8
  br i1 %565, label %.thread, label %572

572:                                              ; preds = %571
  %573 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %574 unwind label %.loopexit.split-lp333

574:                                              ; preds = %572
  br i1 %573, label %575, label %.thread314

575:                                              ; preds = %574
  %576 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %577 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %576, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %578 unwind label %.loopexit.split-lp333

578:                                              ; preds = %575
  %579 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %577, ptr noundef nonnull @.str.38)
          to label %580 unwind label %.loopexit.split-lp333

580:                                              ; preds = %578
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZlsRSoRK8RcString(ptr noundef nonnull align 8 dereferenceable(8) %579, ptr noundef nonnull align 8 dereferenceable(8) %530)
          to label %582 unwind label %.loopexit.split-lp333

582:                                              ; preds = %580
  %583 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %581, ptr noundef nonnull @.str.39)
          to label %584 unwind label %.loopexit.split-lp333

584:                                              ; preds = %582
  %585 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %583, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %586 unwind label %.loopexit.split-lp333

586:                                              ; preds = %584
  %587 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %585, ptr noundef nonnull @.str.33)
          to label %588 unwind label %.loopexit.split-lp333

588:                                              ; preds = %586
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(8) %587, ptr noundef nonnull align 8 dereferenceable(32) %66)
          to label %590 unwind label %.loopexit.split-lp333

590:                                              ; preds = %588
  %591 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %589, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %592 unwind label %.loopexit.split-lp333

592:                                              ; preds = %590
  %593 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %591, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread314 unwind label %.loopexit.split-lp333

.thread314:                                       ; preds = %592, %574
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %672

.thread:                                          ; preds = %545, %557, %571
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  %594 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %64) #8
  %595 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIK8RcStringN3HIR9TraitPath8AtyEqualEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %64, ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br i1 %595, label %529, label %._crit_edge377

596:                                              ; preds = %.loopexit332, %.loopexit.split-lp333, %570, %561
  %.pn260.pn = phi { ptr, i32 } [ %562, %561 ], [ %.pn258, %570 ], [ %lpad.loopexit334, %.loopexit332 ], [ %lpad.loopexit.split-lp335, %.loopexit.split-lp333 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %66) #8
  br label %597

597:                                              ; preds = %596, %559
  %.pn260.pn.pn = phi { ptr, i32 } [ %.pn260.pn, %596 ], [ %560, %559 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %66) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %665

._crit_edge377:                                   ; preds = %.thread, %524
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %65) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %64) #8
  br label %598

598:                                              ; preds = %._crit_edge377, %522
  %599 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %600 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %599)
  br i1 %600, label %601, label %621

601:                                              ; preds = %598
  %602 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %62)
  %603 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %602)
  %604 = call noundef zeroext i1 @_ZNK3HIR10GenericRef14is_placeholderEv(ptr noundef nonnull align 8 dereferenceable(12) %603)
  br i1 %604, label %605, label %621

605:                                              ; preds = %601
  %606 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %607 unwind label %.loopexit412

607:                                              ; preds = %605
  br i1 %606, label %608, label %.thread317

608:                                              ; preds = %607
  %609 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %610 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %609, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %611 unwind label %.loopexit412

611:                                              ; preds = %608
  %612 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %610, ptr noundef nonnull @.str.36)
          to label %613 unwind label %.loopexit412

613:                                              ; preds = %611
  %614 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %612, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %615 unwind label %.loopexit412

615:                                              ; preds = %613
  %616 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %614, ptr noundef nonnull @.str.37)
          to label %617 unwind label %.loopexit412

617:                                              ; preds = %615
  %618 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %616, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %619 unwind label %.loopexit412

619:                                              ; preds = %617
  %620 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %618, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread317 unwind label %.loopexit412

.loopexit412:                                     ; preds = %605, %608, %611, %613, %615, %617, %619, %629, %632, %635, %637, %639, %641, %643
  %lpad.loopexit414 = landingpad { ptr, i32 }
          cleanup
  br label %665

.loopexit.split-lp413:                            ; preds = %647, %650, %653, %655, %657, %659, %661, %663
  %lpad.loopexit.split-lp415 = landingpad { ptr, i32 }
          cleanup
  br label %665

621:                                              ; preds = %601, %598
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %70) #8
  call void @"_ZNSt8functionIFb7ImplRefbEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %69, ptr noundef nonnull align 1 dereferenceable(1) %70) #8
  %622 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve9find_implERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefbEE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %449, ptr noundef nonnull align 8 dereferenceable(24) %457, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull %69)
          to label %625 unwind label %623

623:                                              ; preds = %621
  %624 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #8
  br label %665

.thread317:                                       ; preds = %619, %607
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #8
  br label %.thread409

625:                                              ; preds = %621
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %69) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %70) #8
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %72) #8
  br i1 %622, label %.thread409, label %626

626:                                              ; preds = %625
  call void @"_ZNSt8functionIFbRKN3HIR7TypeRefEEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsES3_RKNS0_13GenericParamsERSF_S3_S_IFbSE_NS0_7CompareEEEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull align 1 dereferenceable(1) %72) #8
  %627 = invoke noundef zeroext i1 @_Z13visit_ty_withRKN3HIR7TypeRefESt8functionIFbS2_EE(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull %71)
          to label %628 unwind label %645

.thread409:                                       ; preds = %625, %.thread317
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #8
  br label %.thread327.thread

628:                                              ; preds = %626
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #8
  br i1 %627, label %629, label %647

629:                                              ; preds = %628
  %630 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %631 unwind label %.loopexit412

631:                                              ; preds = %629
  br i1 %630, label %632, label %.thread327.thread

632:                                              ; preds = %631
  %633 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %634 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %633, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %635 unwind label %.loopexit412

635:                                              ; preds = %632
  %636 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %634, ptr noundef nonnull @.str.40)
          to label %637 unwind label %.loopexit412

637:                                              ; preds = %635
  %638 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %636, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %639 unwind label %.loopexit412

639:                                              ; preds = %637
  %640 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %638, ptr noundef nonnull @.str.37)
          to label %641 unwind label %.loopexit412

641:                                              ; preds = %639
  %642 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %640, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %643 unwind label %.loopexit412

643:                                              ; preds = %641
  %644 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %642, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %.thread327.thread unwind label %.loopexit412

645:                                              ; preds = %626
  %646 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #8
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %72) #8
  br label %665

647:                                              ; preds = %628
  %648 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %649 unwind label %.loopexit.split-lp413

649:                                              ; preds = %647
  br i1 %648, label %650, label %672

650:                                              ; preds = %649
  %651 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %652 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %651, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %653 unwind label %.loopexit.split-lp413

653:                                              ; preds = %650
  %654 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %652, ptr noundef nonnull @.str.41)
          to label %655 unwind label %.loopexit.split-lp413

655:                                              ; preds = %653
  %656 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %654, ptr noundef nonnull align 8 dereferenceable(8) %62)
          to label %657 unwind label %.loopexit.split-lp413

657:                                              ; preds = %655
  %658 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %656, ptr noundef nonnull @.str.23)
          to label %659 unwind label %.loopexit.split-lp413

659:                                              ; preds = %657
  %660 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9TraitPathE(ptr noundef nonnull align 8 dereferenceable(8) %658, ptr noundef nonnull align 8 dereferenceable(144) %63)
          to label %661 unwind label %.loopexit.split-lp413

661:                                              ; preds = %659
  %662 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %660, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %663 unwind label %.loopexit.split-lp413

663:                                              ; preds = %661
  %664 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %662, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %672 unwind label %.loopexit.split-lp413

.thread327.thread:                                ; preds = %519, %643, %631, %.thread409
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %63) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %.thread329

665:                                              ; preds = %.loopexit412, %.loopexit.split-lp413, %623, %645, %597, %517
  %.pn264.pn = phi { ptr, i32 } [ %.pn260.pn.pn, %597 ], [ %518, %517 ], [ %646, %645 ], [ %624, %623 ], [ %lpad.loopexit414, %.loopexit412 ], [ %lpad.loopexit.split-lp415, %.loopexit.split-lp413 ]
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #8
  br label %666

666:                                              ; preds = %665, %515
  %.pn264.pn.pn = phi { ptr, i32 } [ %.pn264.pn, %665 ], [ %516, %515 ]
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %63) #8
  br label %667

667:                                              ; preds = %666, %513
  %.pn264.pn.pn.pn = phi { ptr, i32 } [ %.pn264.pn.pn, %666 ], [ %514, %513 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  br label %668

668:                                              ; preds = %667, %511
  %.pn264.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn264.pn.pn.pn, %667 ], [ %512, %511 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %669

669:                                              ; preds = %668, %485
  %.pn264.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn264.pn.pn.pn.pn, %668 ], [ %486, %485 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  br label %804

.thread329:                                       ; preds = %.thread327.thread, %462
  %670 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #8
  %671 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR12GenericBoundESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #8
  br i1 %671, label %462, label %.loopexit416

672:                                              ; preds = %649, %663, %.thread314
  call void @_ZN3HIR9TraitPathD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #8
  call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %63) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  br label %803

.loopexit416:                                     ; preds = %.thread329, %442
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %60) #8
  %673 = getelementptr inbounds i8, ptr %73, i64 8
  %674 = getelementptr inbounds i8, ptr %74, i64 8
  br label %675

675:                                              ; preds = %702, %.loopexit416
  %.0158 = phi i64 [ 0, %.loopexit416 ], [ %703, %702 ]
  %676 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %677 unwind label %681

677:                                              ; preds = %675
  %678 = icmp ult i64 %.0158, %676
  br i1 %678, label %683, label %.preheader331

.preheader331:                                    ; preds = %677
  %679 = getelementptr inbounds i8, ptr %75, i64 8
  %680 = getelementptr inbounds i8, ptr %76, i64 8
  br label %704

681:                                              ; preds = %675
  %682 = landingpad { ptr, i32 }
          cleanup
  br label %804

683:                                              ; preds = %677
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %73) #8
  %684 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %16, i64 noundef %.0158)
          to label %685 unwind label %698

685:                                              ; preds = %683
  %686 = extractvalue { ptr, i64 } %684, 0
  store ptr %686, ptr %73, align 8
  %687 = extractvalue { ptr, i64 } %684, 1
  store i64 %687, ptr %673, align 8
  %688 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %73) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #8
  br i1 %688, label %702, label %689

689:                                              ; preds = %685
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #8
  %690 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %46, i64 noundef %.0158)
          to label %691 unwind label %700

691:                                              ; preds = %689
  %692 = extractvalue { ptr, i64 } %690, 0
  store ptr %692, ptr %74, align 8
  %693 = extractvalue { ptr, i64 } %690, 1
  store i64 %693, ptr %674, align 8
  %694 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %74) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #8
  %695 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %280, i64 noundef %.0158)
  %696 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %278, i64 noundef %.0158)
  %697 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %696, ptr noundef nonnull align 8 dereferenceable(8) %695)
  br label %702

698:                                              ; preds = %683
  %699 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %73) #8
  br label %804

700:                                              ; preds = %689
  %701 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #8
  br label %804

702:                                              ; preds = %685, %691
  %703 = add nuw i64 %.0158, 1
  br label %675, !llvm.loop !55

704:                                              ; preds = %.preheader331, %737
  %.0157 = phi i64 [ %738, %737 ], [ 0, %.preheader331 ]
  %705 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR11LifetimeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %15)
          to label %706 unwind label %710

706:                                              ; preds = %704
  %707 = icmp ult i64 %.0157, %705
  br i1 %707, label %712, label %708

708:                                              ; preds = %706
  %709 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %739 unwind label %751

710:                                              ; preds = %704
  %711 = landingpad { ptr, i32 }
          cleanup
  br label %804

712:                                              ; preds = %706
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %75) #8
  %713 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %363, i64 noundef %.0157)
          to label %714 unwind label %729

714:                                              ; preds = %712
  %715 = extractvalue { ptr, i64 } %713, 0
  store ptr %715, ptr %75, align 8
  %716 = extractvalue { ptr, i64 } %713, 1
  store i64 %716, ptr %679, align 8
  %717 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %75) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  br i1 %717, label %737, label %718

718:                                              ; preds = %714
  %719 = load ptr, ptr %10, align 8, !tbaa !5
  %.not276 = icmp eq ptr %719, null
  br i1 %.not276, label %733, label %720

720:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %76) #8
  %721 = invoke { ptr, i64 } @_ZNSt6vectorIbSaIbEEixEm(ptr noundef nonnull align 8 dereferenceable(40) %365, i64 noundef %.0157)
          to label %722 unwind label %731

722:                                              ; preds = %720
  %723 = extractvalue { ptr, i64 } %721, 0
  store ptr %723, ptr %76, align 8
  %724 = extractvalue { ptr, i64 } %721, 1
  store i64 %724, ptr %680, align 8
  %725 = call noundef zeroext i1 @_ZNKSt14_Bit_referencecvbEv(ptr noundef nonnull align 8 dereferenceable(16) %76) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  br i1 %725, label %733, label %726

726:                                              ; preds = %722
  call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %77) #8
  call void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4) %77)
  %727 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %.0157)
  %728 = load i32, ptr %77, align 4, !tbaa !11
  store i32 %728, ptr %727, align 4, !tbaa !11
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %77) #8
  br label %737

729:                                              ; preds = %712
  %730 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %75) #8
  br label %804

731:                                              ; preds = %720
  %732 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %76) #8
  br label %804

733:                                              ; preds = %722, %718
  %734 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %47, i64 noundef %.0157)
  %735 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZN10ThinVectorIN3HIR11LifetimeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %15, i64 noundef %.0157)
  %736 = load i32, ptr %734, align 4, !tbaa !11
  store i32 %736, ptr %735, align 4, !tbaa !11
  br label %737

737:                                              ; preds = %714, %733, %726
  %738 = add nuw i64 %.0157, 1
  br label %704, !llvm.loop !56

739:                                              ; preds = %708
  br i1 %709, label %740, label %753

740:                                              ; preds = %739
  %741 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %742 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %741, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %743 unwind label %751

743:                                              ; preds = %740
  %744 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %742, ptr noundef nonnull @.str.42)
          to label %745 unwind label %751

745:                                              ; preds = %743
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(8) %744, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %747 unwind label %751

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

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

751:                                              ; preds = %.critedge312, %753, %749, %747, %745, %743, %740, %708
  %752 = landingpad { ptr, i32 }
          cleanup
  br label %804

753:                                              ; preds = %749, %739
  %754 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %755 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %278)
          to label %756 unwind label %751

756:                                              ; preds = %753
  %757 = icmp eq i64 %754, %755
  br i1 %757, label %.preheader, label %759

.preheader:                                       ; preds = %756
  %758 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %.not275380.not = icmp eq i64 %758, 0
  br i1 %.not275380.not, label %.critedge312, label %.lr.ph382

759:                                              ; preds = %756
  call void @__assert_fail(ptr noundef nonnull @.str.43, ptr noundef nonnull @.str.5, i32 noundef 1287, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE) #10
  unreachable

.lr.ph382:                                        ; preds = %.preheader, %794
  %.0381 = phi i64 [ %795, %794 ], [ 0, %.preheader ]
  %760 = invoke noundef nonnull align 8 dereferenceable(17) ptr @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %5, i64 noundef %.0381)
          to label %761 unwind label %.loopexit

761:                                              ; preds = %.lr.ph382
  %762 = getelementptr inbounds i8, ptr %760, i64 16
  %763 = load i8, ptr %762, align 8, !tbaa !57, !range !60, !noundef !61
  %764 = trunc nuw i8 %763 to i1
  br i1 %764, label %765, label %794

765:                                              ; preds = %761
  %766 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %278, i64 noundef %.0381)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %767 unwind label %789

767:                                              ; preds = %765
  %768 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %766, ptr noundef nonnull align 8 dereferenceable(8) %78)
          to label %769 unwind label %791

769:                                              ; preds = %767
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br i1 %768, label %770, label %794

770:                                              ; preds = %769
  %771 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %278, i64 noundef %.0381)
  %772 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %771)
          to label %773 unwind label %.loopexit

773:                                              ; preds = %770
  br i1 %772, label %794, label %774

774:                                              ; preds = %773
  %775 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %776 unwind label %.loopexit.split-lp

776:                                              ; preds = %774
  br i1 %775, label %777, label %803

777:                                              ; preds = %776
  %778 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !11
  %779 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %778, ptr noundef nonnull @__func__._ZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEE)
          to label %780 unwind label %.loopexit.split-lp

780:                                              ; preds = %777
  %781 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %779, ptr noundef nonnull @.str.44)
          to label %782 unwind label %.loopexit.split-lp

782:                                              ; preds = %780
  %783 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %278, i64 noundef %.0381)
  %784 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %781, ptr noundef nonnull align 8 dereferenceable(8) %783)
          to label %785 unwind label %.loopexit.split-lp

785:                                              ; preds = %782
  %786 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %784, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %787 unwind label %.loopexit.split-lp

787:                                              ; preds = %785
  %788 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %786, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %803 unwind label %.loopexit.split-lp

.loopexit:                                        ; preds = %.lr.ph382, %770
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %804

.loopexit.split-lp:                               ; preds = %774, %777, %780, %782, %785, %787
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %804

789:                                              ; preds = %765
  %790 = landingpad { ptr, i32 }
          cleanup
  br label %793

791:                                              ; preds = %767
  %792 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %78) #8
  br label %793

793:                                              ; preds = %791, %789
  %.pn271 = phi { ptr, i32 } [ %792, %791 ], [ %790, %789 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #8
  br label %804

794:                                              ; preds = %761, %773, %769
  %795 = add nuw i64 %.0381, 1
  %796 = call noundef i64 @_ZNKSt6vectorIN3HIR12TypeParamDefESaIS1_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %5) #8
  %.not275 = icmp ult i64 %795, %796
  br i1 %.not275, label %.lr.ph382, label %.critedge312, !llvm.loop !62

.critedge312:                                     ; preds = %794, %.preheader
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %79, ptr noundef nonnull align 8 dereferenceable(24) %15)
          to label %797 unwind label %751

797:                                              ; preds = %.critedge312
  %798 = load i32, ptr %19, align 4, !tbaa !9
  %799 = invoke noundef zeroext i1 @_ZNKSt8functionIFbN3HIR10PathParamsENS0_7CompareEEEclES1_S2_(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull %79, i32 noundef %798)
          to label %800 unwind label %801

800:                                              ; preds = %797
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #8
  br label %803

801:                                              ; preds = %797
  %802 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %79) #8
  br label %804

803:                                              ; preds = %672, %787, %776, %800
  %.11 = phi i1 [ %799, %800 ], [ false, %672 ], [ false, %776 ], [ false, %787 ]
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %57) #8
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %57) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %46) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %809

804:                                              ; preds = %.loopexit, %.loopexit.split-lp, %793, %710, %729, %731, %681, %698, %700, %801, %751, %669
  %.pn279.pn = phi { ptr, i32 } [ %802, %801 ], [ %752, %751 ], [ %.pn264.pn.pn.pn.pn.pn, %669 ], [ %701, %700 ], [ %699, %698 ], [ %682, %681 ], [ %732, %731 ], [ %730, %729 ], [ %711, %710 ], [ %.pn271, %793 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(160) %57) #8
  br label %805

805:                                              ; preds = %804, %460, %458
  %.pn279.pn.pn = phi { ptr, i32 } [ %.pn279.pn, %804 ], [ %461, %460 ], [ %459, %458 ]
  call void @llvm.lifetime.end.p0(i64 160, ptr nonnull %57) #8
  br label %806

806:                                              ; preds = %412, %430, %367, %385, %404, %305, %323, %355, %805
  %.pn289.pn = phi { ptr, i32 } [ %.pn279.pn.pn, %805 ], [ %306, %305 ], [ %356, %355 ], [ %324, %323 ], [ %.pn285.pn, %404 ], [ %368, %367 ], [ %386, %385 ], [ %413, %412 ], [ %431, %430 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #8
  br label %807

807:                                              ; preds = %806, %303
  %.pn289.pn.pn = phi { ptr, i32 } [ %.pn289.pn, %806 ], [ %304, %303 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %47) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %46) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %46) #8
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %808

808:                                              ; preds = %807, %302
  %.pn289.pn.pn.pn = phi { ptr, i32 } [ %.pn289.pn.pn, %807 ], [ %.pn252.pn.pn, %302 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %810

809:                                              ; preds = %260, %268, %803
  %.12 = phi i1 [ %.11, %803 ], [ false, %268 ], [ false, %260 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #8
  call void @_ZN12_GLOBAL__N_19GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %16) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  ret i1 %.12

810:                                              ; preds = %808, %254, %138, %127, %126, %117
  %.pn301.pn.pn = phi { ptr, i32 } [ %.pn301.pn, %254 ], [ %118, %117 ], [ %.pn289.pn.pn.pn, %808 ], [ %139, %138 ], [ %128, %127 ], [ %.pn.pn, %126 ]
  call void @llvm.lifetime.end.p0(i64 12, ptr nonnull %20) #8
  br label %811

811:                                              ; preds = %810, %115
  %.pn301.pn.pn.pn = phi { ptr, i32 } [ %.pn301.pn.pn, %810 ], [ %116, %115 ]
  call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %19) #8
  call void @_ZN12_GLOBAL__N_19GetParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  br label %812

812:                                              ; preds = %811, %113, %111
  %.pn301.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn301.pn.pn.pn, %811 ], [ %114, %113 ], [ %112, %111 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %17) #8
  call void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120) %16) #8
  call void @llvm.lifetime.end.p0(i64 120, ptr nonnull %16) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %15) #8
  br label %813

813:                                              ; preds = %812, %109
  %.pn301.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn301.pn.pn.pn.pn, %812 ], [ %110, %109 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %15) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %12) #8
  br label %814

814:                                              ; preds = %813, %107
  %.pn301.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn301.pn.pn.pn.pn.pn, %813 ], [ %108, %107 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %12) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  resume { ptr, i32 } %.pn301.pn.pn.pn.pn.pn.pn

815:                                              ; preds = %106
  unreachable
}

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_19GetParams9ParamsSetC2Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2 align 2

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_19GetParamsC2E4SpanRKN3HIR13GenericParamsERNS2_10PathParamsERNS0_9ParamsSetE(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef, ptr noundef nonnull align 8 dereferenceable(96), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #3 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 #1

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN22BaseImplPlaceholderIdxC2Ev(ptr noundef nonnull align 4 dereferenceable(12)) unnamed_addr #2 align 2

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefERKNS8_13GenericParamsERSD_SH_S_IFbSC_NS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #3 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 #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 #1

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden void @"_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEENK3$_9clERKNS3_11LifetimeRefE"(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 4 dereferenceable(4)) local_unnamed_addr #6 align 2

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local noundef i64 @_ZSt5countISt13_Bit_iteratorbENSt15iterator_traitsIT_E15difference_typeES2_S2_RKT0_(ptr, i32, ptr, i32, ptr noundef nonnull align 1 dereferenceable(1)) local_unnamed_addr #6

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE5beginEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local { ptr, i32 } @_ZNSt6vectorIbSaIbEE3endEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR11LifetimeRefC2Ej(ptr noundef nonnull align 4 dereferenceable(4), i32 noundef) unnamed_addr #5 align 2

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3HIR12GenericBound14opt_TraitBoundEv(ptr noundef nonnull align 8 dereferenceable(168)) local_unnamed_addr #5 align 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 #1

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR11LifetimeRefC2Ev(ptr noundef nonnull align 4 dereferenceable(4)) 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 #5 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 #3 align 2

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEEN7MatcherD2Ev(ptr noundef nonnull align 8 dereferenceable(160)) unnamed_addr #2 align 2

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare hidden void @_ZN12_GLOBAL__N_19GetParams9ParamsSetD2Ev(ptr noundef nonnull align 8 dereferenceable(120)) unnamed_addr #2 align 2

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { mustprogress 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 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 }
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, !12, i64 0}
!12 = !{!"int", !7, i64 0}
!13 = !{!14, !12, i64 0}
!14 = !{!"_ZTSZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEE22BaseImplPlaceholderIdx", !12, i64 0, !12, i64 4, !12, i64 8}
!15 = !{!14, !12, i64 4}
!16 = !{!14, !12, i64 8}
!17 = !{!18, !18, i64 0}
!18 = !{!"bool", !7, i64 0}
!19 = distinct !{!19, !20}
!20 = !{!"llvm.loop.mustprogress"}
!21 = distinct !{!21, !20}
!22 = distinct !{!22, !20}
!23 = distinct !{!23, !20}
!24 = !{!25, !6, i64 152}
!25 = !{!"_ZTSN3HIR12GenericBound15Data_TraitBoundE", !26, i64 0, !32, i64 8, !33, i64 16}
!26 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !28, i64 0}
!28 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !29, i64 0}
!29 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !30, i64 0}
!30 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !31, i64 0}
!31 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!32 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!33 = !{!"_ZTSN3HIR9TraitPathE", !26, i64 0, !34, i64 8, !41, i64 40, !50, i64 88, !6, i64 136}
!34 = !{!"_ZTSN3HIR11GenericPathE", !35, i64 0, !37, i64 8}
!35 = !{!"_ZTSN3HIR10SimplePathE", !36, i64 0}
!36 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!37 = !{!"_ZTSN3HIR10PathParamsE", !38, i64 0, !39, i64 8, !40, i64 16}
!38 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!39 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!40 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!41 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !42, i64 0}
!42 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !43, i64 0}
!43 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !44, i64 0, !46, i64 8}
!44 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !45, i64 0}
!45 = !{!"_ZTSSt4lessI8RcStringE"}
!46 = !{!"_ZTSSt15_Rb_tree_header", !47, i64 0, !49, i64 32}
!47 = !{!"_ZTSSt18_Rb_tree_node_base", !48, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!48 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!49 = !{!"long", !7, i64 0}
!50 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !51, i64 0}
!51 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !52, i64 0}
!52 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !44, i64 0, !46, i64 8}
!53 = !{!54, !6, i64 16}
!54 = !{!"_ZTSZNK18StaticTraitResolve26find_impl__check_crate_rawERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefERKNS3_13GenericParamsERS8_SC_St8functionIFbS7_NS3_7CompareEEEE3$_6", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!55 = distinct !{!55, !20}
!56 = distinct !{!56, !20}
!57 = !{!58, !18, i64 16}
!58 = !{!"_ZTSN3HIR12TypeParamDefE", !59, i64 0, !32, i64 8, !18, i64 16}
!59 = !{!"_ZTS8RcString", !6, i64 0}
!60 = !{i8 0, i8 2}
!61 = !{}
!62 = distinct !{!62, !20}


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