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

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

%"class.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::vector.551" = type { %"struct.std::_Vector_base.552" }
%"struct.std::_Vector_base.552" = type { %"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.557" = type { %"struct.std::_Vector_base.558" }
%"struct.std::_Vector_base.558" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.550 = type { ptr, ptr, ptr }
%struct.StackEnt = type { ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.556" = type { ptr }
%struct.StackHandle = type { ptr }
%"class.__gnu_cxx::__normal_iterator.562" = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::tuple.563" = type { %"struct.std::_Tuple_impl.564" }
%"struct.std::_Tuple_impl.564" = type { %"struct.std::_Tuple_impl.565", %"struct.std::_Head_base.569" }
%"struct.std::_Tuple_impl.565" = type { %"struct.std::_Tuple_impl.566", %"struct.std::_Head_base.568" }
%"struct.std::_Tuple_impl.566" = type { %"struct.std::_Head_base.567" }
%"struct.std::_Head_base.567" = type { ptr }
%"struct.std::_Head_base.568" = type { ptr }
%"struct.std::_Head_base.569" = type { ptr }
%struct.Guard = type { i8 }
%"struct.std::_Rb_tree_iterator.570" = type { ptr }
%struct.Span = type { ptr }
%class.anon.573 = type { ptr }
%"class.std::function.574" = type { %"class.std::_Function_base", ptr }
%class.anon.577 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.578 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.579 = type { ptr, ptr }
%"struct.std::pair.583" = type { %"struct.HIR::SimplePath", %"struct.HIR::TraitMarkings::AutoMarking" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::TraitMarkings::AutoMarking" = type <{ %"class.std::vector.60", i8, [7 x i8] }>
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.std::pair.580" = type <{ %"struct.std::_Rb_tree_iterator.570", i8, [7 x i8] }>
%"class.std::function.585" = type { %"class.std::_Function_base", ptr }
%class.anon.588 = type { ptr, ptr, ptr, ptr, ptr, ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.205", %class.RangeVecMap, %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath", %"struct.HIR::SimplePath" }
%"class.std::map.205" = type { %"class.std::_Rb_tree.206" }
%"class.std::_Rb_tree.206" = type { %"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::TypeRef, std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>, std::_Select1st<std::pair<const HIR::TypeRef, TraitResolveCommon::CachedEquality>>, std::less<HIR::TypeRef>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%class.RangeVecMap = type <{ %"class.std::vector.211", [8 x i8] }>
%"class.std::vector.211" = type { %"struct.std::_Vector_base.212" }
%"struct.std::_Vector_base.212" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.50", i8, %"class.std::unordered_map.385", %"class.std::unordered_map.399", %"class.std::unordered_multimap", %"class.std::unordered_map.426", i32, %"class.std::vector.50", %"struct.HIR::SimplePath" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::unordered_map.385" = type { %"class.std::_Hashtable.386" }
%"class.std::_Hashtable.386" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.399" = type { %"class.std::_Hashtable.400" }
%"class.std::_Hashtable.400" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.413" }
%"class.std::_Hashtable.413" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.426" = type { %"class.std::_Hashtable.427" }
%"class.std::_Hashtable.427" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.50" = type { %"struct.std::_Vector_base.51" }
%"struct.std::_Vector_base.51" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr.29" }
%"class.HIR::Path" = type { %"class.HIR::Path::Data" }
%"class.HIR::Path::Data" = type { i32, %"union.HIR::Path::Data::DataUnion" }
%"union.HIR::Path::Data::DataUnion" = type { %"struct.HIR::Path::Data::Data_UfcsKnown" }
%"struct.HIR::Path::Data::Data_UfcsKnown" = type { %"class.HIR::TypeRef", %"class.HIR::GenericPath", %class.RcString, %"struct.HIR::PathParams", %"class.std::unique_ptr.29" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%class.RcString = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.469" }
%"class.std::map.469" = type { %"class.std::_Rb_tree.470" }
%"class.std::_Rb_tree.470" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::pair.571" = type { %"struct.HIR::SimplePath", %"struct.HIR::TraitMarkings::AutoMarking" }
%class.TraitResolution = type { %struct.TraitResolveCommon, ptr, ptr, ptr, ptr, ptr, %"class.std::vector.216" }
%"class.std::vector.216" = type { %"struct.std::_Vector_base.217" }
%"struct.std::_Vector_base.217" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::TypeRef>, std::allocator<std::unique_ptr<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global i64, align 8
@__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [23 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack = external hidden global %"class.std::vector.551", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack = external hidden global i64, align 8
@.str.122 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZTIN15TraitResolution17RecursionDetectedE = external dso_local constant { ptr, ptr }, align 8
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack = external hidden global %"class.std::vector.557", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack = external hidden global i64, align 8
@.str.123 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #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: nounwind
declare i32 @__cxa_guard_acquire(ptr) #0

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) #4 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca i1, align 1
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca %class.TraceLog, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.550, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i32, align 4
  %19 = alloca %struct.StackEnt, align 8
  %20 = alloca %"class.__gnu_cxx::__normal_iterator.556", align 8
  %21 = alloca %"class.__gnu_cxx::__normal_iterator.556", align 8
  %22 = alloca %struct.StackHandle, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.__gnu_cxx::__normal_iterator.562", align 8
  %25 = alloca %"class.__gnu_cxx::__normal_iterator.562", align 8
  %26 = alloca i32, align 4
  %27 = alloca ptr, align 8
  %28 = alloca %struct.ImplRef, align 8
  %29 = alloca %"class.std::tuple.563", align 8
  %30 = alloca ptr, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %struct.Guard, align 1
  %33 = alloca %struct.ImplRef, align 8
  %34 = alloca ptr, align 8
  %35 = alloca ptr, align 8
  %36 = alloca %"struct.std::_Rb_tree_iterator.570", align 8
  %37 = alloca %"struct.std::_Rb_tree_iterator.570", align 8
  %38 = alloca ptr, align 8
  %39 = alloca %struct.Span, align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.573, align 8
  %42 = alloca %struct.ImplRef, align 8
  %43 = alloca i8, align 1
  %44 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %45 = alloca %"class.std::function.574", align 8
  %46 = alloca %class.anon.577, align 8
  %47 = alloca i8, align 1
  %48 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %49 = alloca %"class.std::function.574", align 8
  %50 = alloca %class.anon.578, align 8
  %51 = alloca i32, align 4
  %52 = alloca %struct.Span, align 8
  %53 = alloca %"class.std::function", align 8
  %54 = alloca %class.anon.579, align 8
  %55 = alloca %"struct.std::pair.583", align 8
  %56 = alloca %"struct.HIR::TraitMarkings::AutoMarking", align 8
  %57 = alloca %"struct.std::pair.580", align 8
  %58 = alloca %struct.ImplRef, align 8
  %59 = alloca %"struct.std::pair.583", align 8
  %60 = alloca %"struct.HIR::TraitMarkings::AutoMarking", align 8
  %61 = alloca %"struct.std::pair.580", align 8
  %62 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %63 = alloca %"class.std::function.585", align 8
  %64 = alloca %class.anon.588, align 8
  store ptr %0, ptr %8, align 8, !tbaa !5
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  %65 = load ptr, ptr %8, align 8
  %66 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc acquire, align 8
  %67 = icmp eq i8 %66, 0
  br i1 %67, label %68, label %73, !prof !9

68:                                               ; preds = %6
  %69 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  %70 = icmp ne i32 %69, 0
  br i1 %70, label %71, label %73

71:                                               ; preds = %68
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  %72 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  br label %73

73:                                               ; preds = %71, %68, %6
  call void @llvm.lifetime.start.p0(i64 40, ptr %14) #0
  %74 = call noundef zeroext i1 @_Z13debug_enabledv()
  %75 = zext i1 %74 to i64
  %76 = select i1 %74, ptr @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %16) #0
  %77 = getelementptr inbounds %class.anon.550, ptr %16, i32 0, i32 0
  %78 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %78, ptr %77, align 8, !tbaa !5
  %79 = getelementptr inbounds %class.anon.550, ptr %16, i32 0, i32 1
  store ptr %11, ptr %79, align 8, !tbaa !5
  %80 = getelementptr inbounds %class.anon.550, ptr %16, i32 0, i32 2
  %81 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %81, ptr %80, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(24) %16)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %14, ptr noundef %76, ptr noundef %15)
          to label %82 unwind label %120

82:                                               ; preds = %73
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #0
  %83 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack acquire, align 8
  %84 = icmp eq i8 %83, 0
  br i1 %84, label %85, label %90, !prof !9

85:                                               ; preds = %82
  %86 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #0
  %87 = icmp ne i32 %86, 0
  br i1 %87, label %88, label %90

88:                                               ; preds = %85
  call void @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #0
  %89 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EED2Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #0
  br label %90

90:                                               ; preds = %88, %85, %82
  call void @llvm.lifetime.start.p0(i64 24, ptr %19) #0
  %91 = load ptr, ptr %10, align 8, !tbaa !5
  %92 = load ptr, ptr %11, align 8, !tbaa !5
  %93 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN8StackEntC2ES6_S9_SC_(ptr noundef nonnull align 8 dereferenceable(24) %19, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef %92, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %94 unwind label %124

94:                                               ; preds = %90
  %95 = call ptr @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #0
  %96 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %20, i32 0, i32 0
  store ptr %95, ptr %96, align 8
  %97 = call ptr @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #0
  %98 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %21, i32 0, i32 0
  store ptr %97, ptr %98, align 8
  %99 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %20, i32 0, i32 0
  %100 = load ptr, ptr %99, align 8
  %101 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.556", ptr %21, i32 0, i32 0
  %102 = load ptr, ptr %101, align 8
  %103 = invoke noundef i64 @_ZSt5countIN9__gnu_cxx17__normal_iteratorIPZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS6_10PathParamsERKNS6_7TypeRefESt8functionIFb7ImplRefNS6_7CompareEEEE8StackEntSt6vectorISL_SaISL_EEEESL_ENSt15iterator_traitsIT_E15difference_typeESS_SS_RKT0_(ptr %100, ptr %102, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %104 unwind label %124

104:                                              ; preds = %94
  %105 = icmp sgt i64 %103, 1
  br i1 %105, label %106, label %132

106:                                              ; preds = %104
  br label %107

107:                                              ; preds = %106
  %108 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %109 unwind label %124

109:                                              ; preds = %107
  br i1 %108, label %110, label %128

110:                                              ; preds = %109
  %111 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %111, ptr noundef @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %113 unwind label %124

113:                                              ; preds = %110
  %114 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef @.str.122)
          to label %115 unwind label %124

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef @_ZSt3decRSt8ios_base)
          to label %117 unwind label %124

117:                                              ; preds = %115
  %118 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %119 unwind label %124

119:                                              ; preds = %117
  br label %128

120:                                              ; preds = %73
  %121 = landingpad { ptr, i32 }
          cleanup
  %122 = extractvalue { ptr, i32 } %121, 0
  store ptr %122, ptr %17, align 8
  %123 = extractvalue { ptr, i32 } %121, 1
  store i32 %123, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %16) #0
  br label %643

124:                                              ; preds = %132, %130, %117, %115, %113, %110, %107, %94, %90
  %125 = landingpad { ptr, i32 }
          cleanup
  %126 = extractvalue { ptr, i32 } %125, 0
  store ptr %126, ptr %17, align 8
  %127 = extractvalue { ptr, i32 } %125, 1
  store i32 %127, ptr %18, align 4
  br label %642

128:                                              ; preds = %119, %109
  br label %129

129:                                              ; preds = %128
  br label %130

130:                                              ; preds = %129
  %131 = call ptr @__cxa_allocate_exception(i64 1) #0
  invoke void @__cxa_throw(ptr %131, ptr @_ZTIN15TraitResolution17RecursionDetectedE, ptr null) #9
          to label %649 unwind label %124

132:                                              ; preds = %104
  invoke void @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE9push_backERKSJ_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack, ptr noundef nonnull align 8 dereferenceable(24) %19)
          to label %133 unwind label %124

133:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #0
  invoke void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleC2ERSt6vectorIZNKS_22find_trait_impls_crateES2_S6_S9_SC_SH_E8StackEntSaISK_EE(ptr noundef nonnull align 8 dereferenceable(8) %22, ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack)
          to label %134 unwind label %160

134:                                              ; preds = %133
  %135 = getelementptr inbounds %struct.TraitResolveCommon, ptr %65, i32 0, i32 0
  %136 = load ptr, ptr %135, align 8, !tbaa !12
  %137 = load ptr, ptr %9, align 8, !tbaa !5
  %138 = load ptr, ptr %10, align 8, !tbaa !5
  %139 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %136, ptr noundef nonnull align 8 dereferenceable(8) %137, ptr noundef nonnull align 8 dereferenceable(8) %138)
          to label %140 unwind label %164

140:                                              ; preds = %134
  %141 = getelementptr inbounds %"class.HIR::Trait", ptr %139, i32 0, i32 3
  %142 = load i8, ptr %141, align 8, !tbaa !31, !range !67, !noundef !68
  %143 = trunc i8 %142 to i1
  br i1 %143, label %144, label %589

144:                                              ; preds = %140
  %145 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack acquire, align 8
  %146 = icmp eq i8 %145, 0
  br i1 %146, label %147, label %152, !prof !9

147:                                              ; preds = %144
  %148 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #0
  %149 = icmp ne i32 %148, 0
  br i1 %149, label %150, label %152

150:                                              ; preds = %147
  call void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #0
  %151 = call i32 @__cxa_atexit(ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EED2Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #0
  br label %152

152:                                              ; preds = %150, %147, %144
  call void @llvm.lifetime.start.p0(i64 8, ptr %23) #0
  store ptr @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #0
  %153 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #0
  %154 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.562", ptr %24, i32 0, i32 0
  store ptr %153, ptr %154, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #0
  %155 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #0
  %156 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.562", ptr %25, i32 0, i32 0
  store ptr %155, ptr %156, align 8
  br label %157

157:                                              ; preds = %218, %152
  %158 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %25) #0
  br i1 %158, label %168, label %159

159:                                              ; preds = %157
  store i32 4, ptr %26, align 4
  br label %220

160:                                              ; preds = %133
  %161 = landingpad { ptr, i32 }
          cleanup
  %162 = extractvalue { ptr, i32 } %161, 0
  store ptr %162, ptr %17, align 8
  %163 = extractvalue { ptr, i32 } %161, 1
  store i32 %163, ptr %18, align 4
  br label %641

164:                                              ; preds = %600, %598, %595, %592, %589, %134
  %165 = landingpad { ptr, i32 }
          cleanup
  %166 = extractvalue { ptr, i32 } %165, 0
  store ptr %166, ptr %17, align 8
  %167 = extractvalue { ptr, i32 } %165, 1
  store i32 %167, ptr %18, align 4
  br label %640

168:                                              ; preds = %157
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #0
  %169 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  store ptr %169, ptr %27, align 8, !tbaa !5
  %170 = load ptr, ptr %27, align 8, !tbaa !5
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %170) #0
  %172 = load ptr, ptr %171, align 8, !tbaa !5
  %173 = load ptr, ptr %10, align 8, !tbaa !5
  %174 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %172, ptr noundef nonnull align 8 dereferenceable(8) %173)
          to label %175 unwind label %177

175:                                              ; preds = %168
  br i1 %174, label %176, label %181

176:                                              ; preds = %175
  store i32 5, ptr %26, align 4
  br label %215

177:                                              ; preds = %205, %197, %189, %168
  %178 = landingpad { ptr, i32 }
          cleanup
  %179 = extractvalue { ptr, i32 } %178, 0
  store ptr %179, ptr %17, align 8
  %180 = extractvalue { ptr, i32 } %178, 1
  store i32 %180, ptr %18, align 4
  br label %217

181:                                              ; preds = %175
  %182 = load ptr, ptr %27, align 8, !tbaa !5
  %183 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %182) #0
  %184 = load ptr, ptr %183, align 8, !tbaa !5
  %185 = icmp ne ptr %184, null
  br i1 %185, label %186, label %197

186:                                              ; preds = %181
  %187 = load ptr, ptr %11, align 8, !tbaa !5
  %188 = icmp ne ptr %187, null
  br i1 %188, label %189, label %197

189:                                              ; preds = %186
  %190 = load ptr, ptr %27, align 8, !tbaa !5
  %191 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %190) #0
  %192 = load ptr, ptr %191, align 8, !tbaa !5
  %193 = load ptr, ptr %11, align 8, !tbaa !5
  %194 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %192, ptr noundef nonnull align 8 dereferenceable(24) %193)
          to label %195 unwind label %177

195:                                              ; preds = %189
  br i1 %194, label %196, label %197

196:                                              ; preds = %195
  store i32 5, ptr %26, align 4
  br label %215

197:                                              ; preds = %195, %186, %181
  %198 = load ptr, ptr %27, align 8, !tbaa !5
  %199 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm2EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %198) #0
  %200 = load ptr, ptr %199, align 8, !tbaa !5
  %201 = load ptr, ptr %12, align 8, !tbaa !5
  %202 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %200, ptr noundef nonnull align 8 dereferenceable(8) %201)
          to label %203 unwind label %177

203:                                              ; preds = %197
  br i1 %202, label %204, label %205

204:                                              ; preds = %203
  store i32 5, ptr %26, align 4
  br label %215

205:                                              ; preds = %203
  %206 = load ptr, ptr %12, align 8, !tbaa !5
  %207 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %28, ptr noundef null, ptr noundef %206, ptr noundef %207, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %208 unwind label %177

208:                                              ; preds = %205
  %209 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %28, i32 noundef 0)
          to label %210 unwind label %211

210:                                              ; preds = %208
  store i1 %209, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #0
  store i32 1, ptr %26, align 4
  br label %215

211:                                              ; preds = %208
  %212 = landingpad { ptr, i32 }
          cleanup
  %213 = extractvalue { ptr, i32 } %212, 0
  store ptr %213, ptr %17, align 8
  %214 = extractvalue { ptr, i32 } %212, 1
  store i32 %214, ptr %18, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #0
  br label %217

215:                                              ; preds = %210, %204, %196, %176
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  %216 = load i32, ptr %26, align 4
  switch i32 %216, label %220 [
    i32 5, label %218
  ]

217:                                              ; preds = %211, %177
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  br label %640

218:                                              ; preds = %215
  %219 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %24) #0
  br label %157

220:                                              ; preds = %215, %159
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %23) #0
  %221 = load i32, ptr %26, align 4
  switch i32 %221, label %638 [
    i32 4, label %222
  ]

222:                                              ; preds = %220
  call void @llvm.lifetime.start.p0(i64 24, ptr %29) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #0
  %223 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %223, ptr %30, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #0
  %224 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %224, ptr %31, align 8, !tbaa !5
  invoke void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind writable sret(%"class.std::tuple.563") align 8 %29, ptr noundef nonnull align 8 dereferenceable(8) %30, ptr noundef nonnull align 8 dereferenceable(8) %11, ptr noundef nonnull align 8 dereferenceable(8) %31)
          to label %225 unwind label %238

225:                                              ; preds = %222
  invoke void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE9push_backEOSB_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack, ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %226 unwind label %238

226:                                              ; preds = %225
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #0
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #0
  %227 = load ptr, ptr %12, align 8, !tbaa !5
  %228 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %227)
          to label %229 unwind label %242

229:                                              ; preds = %226
  %230 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %228)
          to label %231 unwind label %242

231:                                              ; preds = %229
  br i1 %230, label %232, label %250

232:                                              ; preds = %231
  %233 = load ptr, ptr %12, align 8, !tbaa !5
  %234 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %33, ptr noundef null, ptr noundef %233, ptr noundef %234, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %235 unwind label %242

235:                                              ; preds = %232
  %236 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %33, i32 noundef 1)
          to label %237 unwind label %246

237:                                              ; preds = %235
  store i1 %236, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %33) #0
  store i32 1, ptr %26, align 4
  br label %587

238:                                              ; preds = %225, %222
  %239 = landingpad { ptr, i32 }
          cleanup
  %240 = extractvalue { ptr, i32 } %239, 0
  store ptr %240, ptr %17, align 8
  %241 = extractvalue { ptr, i32 } %239, 1
  store i32 %241, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %29) #0
  br label %640

242:                                              ; preds = %232, %229, %226
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %17, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %18, align 4
  br label %588

246:                                              ; preds = %235
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %17, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %18, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %33) #0
  br label %588

250:                                              ; preds = %231
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #0
  store ptr null, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #0
  %251 = load ptr, ptr %12, align 8, !tbaa !5
  %252 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %251)
          to label %253 unwind label %280

253:                                              ; preds = %250
  %254 = invoke noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %252)
          to label %255 unwind label %280

255:                                              ; preds = %253
  store ptr %254, ptr %35, align 8, !tbaa !5
  %256 = load ptr, ptr %35, align 8, !tbaa !5
  %257 = icmp ne ptr %256, null
  br i1 %257, label %258, label %285

258:                                              ; preds = %255
  %259 = load ptr, ptr %35, align 8, !tbaa !5
  %260 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %259, i32 0, i32 0
  %261 = getelementptr inbounds %"class.HIR::Path", ptr %260, i32 0, i32 0
  %262 = invoke noundef zeroext i1 @_ZNK3HIR4Path4Data10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %261)
          to label %263 unwind label %280

263:                                              ; preds = %258
  br i1 %262, label %264, label %284

264:                                              ; preds = %263
  %265 = load ptr, ptr %35, align 8, !tbaa !5
  %266 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %265, i32 0, i32 0
  %267 = getelementptr inbounds %"class.HIR::Path", ptr %266, i32 0, i32 0
  %268 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %267)
          to label %269 unwind label %280

269:                                              ; preds = %264
  %270 = getelementptr inbounds %"class.HIR::GenericPath", ptr %268, i32 0, i32 1
  %271 = getelementptr inbounds %"struct.HIR::PathParams", ptr %270, i32 0, i32 1
  %272 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %271)
          to label %273 unwind label %280

273:                                              ; preds = %269
  %274 = icmp eq i64 %272, 0
  br i1 %274, label %275, label %284

275:                                              ; preds = %273
  %276 = load ptr, ptr %35, align 8, !tbaa !5
  %277 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %276, i32 0, i32 1
  %278 = invoke noundef ptr @_ZNK3HIR15TypePathBinding18get_trait_markingsEv(ptr noundef nonnull align 8 dereferenceable(16) %277)
          to label %279 unwind label %280

279:                                              ; preds = %275
  store ptr %278, ptr %34, align 8, !tbaa !5
  br label %284

280:                                              ; preds = %275, %269, %264, %258, %253, %250
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %17, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %18, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  br label %586

284:                                              ; preds = %279, %273, %263
  br label %285

285:                                              ; preds = %284, %255
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #0
  %286 = load ptr, ptr %34, align 8, !tbaa !5
  %287 = icmp ne ptr %286, null
  br i1 %287, label %288, label %360

288:                                              ; preds = %285
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #0
  %289 = load ptr, ptr %34, align 8, !tbaa !5
  %290 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %289, i32 0, i32 3
  %291 = load ptr, ptr %10, align 8, !tbaa !5
  %292 = invoke ptr @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %290, ptr noundef nonnull align 8 dereferenceable(8) %291)
          to label %293 unwind label %313

293:                                              ; preds = %288
  %294 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.570", ptr %36, i32 0, i32 0
  store ptr %292, ptr %294, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %37) #0
  %295 = load ptr, ptr %34, align 8, !tbaa !5
  %296 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %295, i32 0, i32 3
  %297 = call ptr @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %296) #0
  %298 = getelementptr inbounds %"struct.std::_Rb_tree_iterator.570", ptr %37, i32 0, i32 0
  store ptr %297, ptr %298, align 8
  %299 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %37) #0
  br i1 %299, label %300, label %355

300:                                              ; preds = %293
  %301 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  %302 = getelementptr inbounds %"struct.std::pair.571", ptr %301, i32 0, i32 1
  %303 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %302, i32 0, i32 0
  %304 = call noundef zeroext i1 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %303) #0
  br i1 %304, label %337, label %305

305:                                              ; preds = %300
  br label %306

306:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #0
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %38, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #0
  %307 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) %307)
          to label %308 unwind label %317

308:                                              ; preds = %306
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #0
  %309 = getelementptr inbounds %class.anon.573, ptr %41, i32 0, i32 0
  store ptr %38, ptr %309, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(8) %41) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef %40)
          to label %310 unwind label %321

310:                                              ; preds = %308
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  %311 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %311, ptr noundef @.str.70)
          to label %312 unwind label %326

312:                                              ; preds = %310
  invoke void @__cxa_throw(ptr %311, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %649 unwind label %330

313:                                              ; preds = %343, %288
  %314 = landingpad { ptr, i32 }
          cleanup
  %315 = extractvalue { ptr, i32 } %314, 0
  store ptr %315, ptr %17, align 8
  %316 = extractvalue { ptr, i32 } %314, 1
  store i32 %316, ptr %18, align 4
  br label %359

317:                                              ; preds = %306
  %318 = landingpad { ptr, i32 }
          cleanup
  %319 = extractvalue { ptr, i32 } %318, 0
  store ptr %319, ptr %17, align 8
  %320 = extractvalue { ptr, i32 } %318, 1
  store i32 %320, ptr %18, align 4
  br label %325

321:                                              ; preds = %308
  %322 = landingpad { ptr, i32 }
          cleanup
  %323 = extractvalue { ptr, i32 } %322, 0
  store ptr %323, ptr %17, align 8
  %324 = extractvalue { ptr, i32 } %322, 1
  store i32 %324, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #0
  br label %325

325:                                              ; preds = %321, %317
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #0
  br label %334

326:                                              ; preds = %310
  %327 = landingpad { ptr, i32 }
          cleanup
  %328 = extractvalue { ptr, i32 } %327, 0
  store ptr %328, ptr %17, align 8
  %329 = extractvalue { ptr, i32 } %327, 1
  store i32 %329, ptr %18, align 4
  call void @__cxa_free_exception(ptr %311) #0
  br label %334

330:                                              ; preds = %312
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %17, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %18, align 4
  br label %334

334:                                              ; preds = %330, %326, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #0
  br label %359

335:                                              ; No predecessors!
  br label %336

336:                                              ; preds = %335
  br label %354

337:                                              ; preds = %300
  %338 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %36) #0
  %339 = getelementptr inbounds %"struct.std::pair.571", ptr %338, i32 0, i32 1
  %340 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %339, i32 0, i32 1
  %341 = load i8, ptr %340, align 8, !tbaa !69, !range !67, !noundef !68
  %342 = trunc i8 %341 to i1
  br i1 %342, label %343, label %353

343:                                              ; preds = %337
  %344 = load ptr, ptr %12, align 8, !tbaa !5
  %345 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %42, ptr noundef null, ptr noundef %344, ptr noundef %345, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %346 unwind label %313

346:                                              ; preds = %343
  %347 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %42, i32 noundef 0)
          to label %348 unwind label %349

348:                                              ; preds = %346
  store i1 %347, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #0
  store i32 1, ptr %26, align 4
  br label %356

349:                                              ; preds = %346
  %350 = landingpad { ptr, i32 }
          cleanup
  %351 = extractvalue { ptr, i32 } %350, 0
  store ptr %351, ptr %17, align 8
  %352 = extractvalue { ptr, i32 } %350, 1
  store i32 %352, ptr %18, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #0
  br label %359

353:                                              ; preds = %337
  store i1 false, ptr %7, align 1
  store i32 1, ptr %26, align 4
  br label %356

354:                                              ; preds = %336
  br label %355

355:                                              ; preds = %354, %293
  store i32 0, ptr %26, align 4
  br label %356

356:                                              ; preds = %355, %353, %348
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  %357 = load i32, ptr %26, align 4
  switch i32 %357, label %585 [
    i32 0, label %358
  ]

358:                                              ; preds = %356
  br label %360

359:                                              ; preds = %349, %334, %313
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #0
  br label %586

360:                                              ; preds = %358, %285
  br label %361

361:                                              ; preds = %360
  %362 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %363 unwind label %374

363:                                              ; preds = %361
  br i1 %362, label %364, label %378

364:                                              ; preds = %363
  %365 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %366 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %365, ptr noundef @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %367 unwind label %374

367:                                              ; preds = %364
  %368 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %366, ptr noundef @.str.123)
          to label %369 unwind label %374

369:                                              ; preds = %367
  %370 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %368, ptr noundef @_ZSt3decRSt8ios_base)
          to label %371 unwind label %374

371:                                              ; preds = %369
  %372 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %370, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %373 unwind label %374

373:                                              ; preds = %371
  br label %378

374:                                              ; preds = %371, %369, %367, %364, %361
  %375 = landingpad { ptr, i32 }
          cleanup
  %376 = extractvalue { ptr, i32 } %375, 0
  store ptr %376, ptr %17, align 8
  %377 = extractvalue { ptr, i32 } %375, 1
  store i32 %377, ptr %18, align 4
  br label %586

378:                                              ; preds = %373, %363
  br label %379

379:                                              ; preds = %378
  br label %380

380:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #0
  store i8 0, ptr %43, align 1, !tbaa !76
  %381 = getelementptr inbounds %struct.TraitResolveCommon, ptr %65, i32 0, i32 0
  %382 = load ptr, ptr %381, align 8, !tbaa !12
  %383 = load ptr, ptr %10, align 8, !tbaa !5
  %384 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %44) #0
  %385 = getelementptr inbounds %class.TraitResolution, ptr %65, i32 0, i32 2
  %386 = load ptr, ptr %385, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %44, ptr noundef nonnull align 8 dereferenceable(49) %386)
          to label %387 unwind label %404

387:                                              ; preds = %380
  call void @llvm.lifetime.start.p0(i64 56, ptr %46) #0
  %388 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 0
  %389 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %389, ptr %388, align 8, !tbaa !5
  %390 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 1
  store ptr %65, ptr %390, align 8, !tbaa !83
  %391 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 2
  %392 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %392, ptr %391, align 8, !tbaa !5
  %393 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 3
  store ptr %11, ptr %393, align 8, !tbaa !5
  %394 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 4
  %395 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %395, ptr %394, align 8, !tbaa !5
  %396 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 5
  store ptr %43, ptr %396, align 8, !tbaa !5
  %397 = getelementptr inbounds %class.anon.577, ptr %46, i32 0, i32 6
  store ptr %5, ptr %397, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %45, ptr noundef nonnull align 8 dereferenceable(56) %46)
          to label %398 unwind label %408

398:                                              ; preds = %387
  %399 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %382, ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull align 8 dereferenceable(8) %384, ptr noundef nonnull align 8 dereferenceable(8) %44, ptr noundef %45)
          to label %400 unwind label %412

400:                                              ; preds = %398
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #0
  call void @llvm.lifetime.end.p0(i64 56, ptr %46) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #0
  %401 = load i8, ptr %43, align 1, !tbaa !76, !range !67, !noundef !68
  %402 = trunc i8 %401 to i1
  br i1 %402, label %403, label %418

403:                                              ; preds = %400
  store i1 true, ptr %7, align 1
  store i32 1, ptr %26, align 4
  br label %583

404:                                              ; preds = %380
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %17, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %18, align 4
  br label %417

408:                                              ; preds = %387
  %409 = landingpad { ptr, i32 }
          cleanup
  %410 = extractvalue { ptr, i32 } %409, 0
  store ptr %410, ptr %17, align 8
  %411 = extractvalue { ptr, i32 } %409, 1
  store i32 %411, ptr %18, align 4
  br label %416

412:                                              ; preds = %398
  %413 = landingpad { ptr, i32 }
          cleanup
  %414 = extractvalue { ptr, i32 } %413, 0
  store ptr %414, ptr %17, align 8
  %415 = extractvalue { ptr, i32 } %413, 1
  store i32 %415, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #0
  br label %416

416:                                              ; preds = %412, %408
  call void @llvm.lifetime.end.p0(i64 56, ptr %46) #0
  br label %417

417:                                              ; preds = %416, %404
  call void @llvm.lifetime.end.p0(i64 16, ptr %44) #0
  br label %584

418:                                              ; preds = %400
  br label %419

419:                                              ; preds = %418
  %420 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %421 unwind label %432

421:                                              ; preds = %419
  br i1 %420, label %422, label %436

422:                                              ; preds = %421
  %423 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %423, ptr noundef @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %425 unwind label %432

425:                                              ; preds = %422
  %426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %424, ptr noundef @.str.124)
          to label %427 unwind label %432

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

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

431:                                              ; preds = %429
  br label %436

432:                                              ; preds = %429, %427, %425, %422, %419
  %433 = landingpad { ptr, i32 }
          cleanup
  %434 = extractvalue { ptr, i32 } %433, 0
  store ptr %434, ptr %17, align 8
  %435 = extractvalue { ptr, i32 } %433, 1
  store i32 %435, ptr %18, align 4
  br label %584

436:                                              ; preds = %431, %421
  br label %437

437:                                              ; preds = %436
  br label %438

438:                                              ; preds = %437
  call void @llvm.lifetime.start.p0(i64 1, ptr %47) #0
  %439 = getelementptr inbounds %struct.TraitResolveCommon, ptr %65, i32 0, i32 0
  %440 = load ptr, ptr %439, align 8, !tbaa !12
  %441 = load ptr, ptr %10, align 8, !tbaa !5
  %442 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %48) #0
  %443 = getelementptr inbounds %class.TraitResolution, ptr %65, i32 0, i32 2
  %444 = load ptr, ptr %443, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %48, ptr noundef nonnull align 8 dereferenceable(49) %444)
          to label %445 unwind label %461

445:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 40, ptr %50) #0
  %446 = getelementptr inbounds %class.anon.578, ptr %50, i32 0, i32 0
  %447 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %447, ptr %446, align 8, !tbaa !5
  %448 = getelementptr inbounds %class.anon.578, ptr %50, i32 0, i32 1
  store ptr %65, ptr %448, align 8, !tbaa !85
  %449 = getelementptr inbounds %class.anon.578, ptr %50, i32 0, i32 2
  %450 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %450, ptr %449, align 8, !tbaa !5
  %451 = getelementptr inbounds %class.anon.578, ptr %50, i32 0, i32 3
  store ptr %11, ptr %451, align 8, !tbaa !5
  %452 = getelementptr inbounds %class.anon.578, ptr %50, i32 0, i32 4
  %453 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %453, ptr %452, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull align 8 dereferenceable(40) %50)
          to label %454 unwind label %465

454:                                              ; preds = %445
  %455 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %440, ptr noundef nonnull align 8 dereferenceable(8) %441, ptr noundef nonnull align 8 dereferenceable(8) %442, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef %49)
          to label %456 unwind label %469

456:                                              ; preds = %454
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %50) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #0
  %457 = zext i1 %455 to i8
  store i8 %457, ptr %47, align 1, !tbaa !76
  %458 = load i8, ptr %47, align 1, !tbaa !76, !range !67, !noundef !68
  %459 = trunc i8 %458 to i1
  br i1 %459, label %460, label %475

460:                                              ; preds = %456
  store i1 false, ptr %7, align 1
  store i32 1, ptr %26, align 4
  br label %581

461:                                              ; preds = %438
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %17, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %18, align 4
  br label %474

465:                                              ; preds = %445
  %466 = landingpad { ptr, i32 }
          cleanup
  %467 = extractvalue { ptr, i32 } %466, 0
  store ptr %467, ptr %17, align 8
  %468 = extractvalue { ptr, i32 } %466, 1
  store i32 %468, ptr %18, align 4
  br label %473

469:                                              ; preds = %454
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %17, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #0
  br label %473

473:                                              ; preds = %469, %465
  call void @llvm.lifetime.end.p0(i64 40, ptr %50) #0
  br label %474

474:                                              ; preds = %473, %461
  call void @llvm.lifetime.end.p0(i64 16, ptr %48) #0
  br label %582

475:                                              ; preds = %456
  call void @llvm.lifetime.start.p0(i64 4, ptr %51) #0
  %476 = load ptr, ptr %9, align 8, !tbaa !5
  %477 = load ptr, ptr %10, align 8, !tbaa !5
  %478 = load ptr, ptr %11, align 8, !tbaa !5
  %479 = load ptr, ptr %12, align 8, !tbaa !5
  %480 = invoke noundef i32 @_ZNK15TraitResolution33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %65, ptr noundef nonnull align 8 dereferenceable(8) %476, ptr noundef nonnull align 8 dereferenceable(8) %477, ptr noundef %478, ptr noundef nonnull align 8 dereferenceable(8) %479)
          to label %481 unwind label %501

481:                                              ; preds = %475
  store i32 %480, ptr %51, align 4, !tbaa !87
  %482 = load i32, ptr %51, align 4, !tbaa !87
  %483 = icmp ne i32 %482, 2
  br i1 %483, label %484, label %553

484:                                              ; preds = %481
  %485 = load ptr, ptr %34, align 8, !tbaa !5
  %486 = icmp ne ptr %485, null
  br i1 %486, label %487, label %542

487:                                              ; preds = %484
  br label %488

488:                                              ; preds = %487
  %489 = load i32, ptr %51, align 4, !tbaa !87
  %490 = icmp eq i32 %489, 0
  br i1 %490, label %518, label %491

491:                                              ; preds = %488
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #0
  %492 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %492)
          to label %493 unwind label %505

493:                                              ; preds = %491
  call void @llvm.lifetime.start.p0(i64 16, ptr %54) #0
  %494 = getelementptr inbounds %class.anon.579, ptr %54, i32 0, i32 0
  %495 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %495, ptr %494, align 8, !tbaa !5
  %496 = getelementptr inbounds %class.anon.579, ptr %54, i32 0, i32 1
  %497 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %497, ptr %496, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %53, ptr noundef nonnull align 8 dereferenceable(16) %54) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef %53)
          to label %498 unwind label %509

498:                                              ; preds = %493
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  %499 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %499, ptr noundef @.str.8)
          to label %500 unwind label %514

500:                                              ; preds = %498
  invoke void @__cxa_throw(ptr %499, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #9
          to label %649 unwind label %501

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

505:                                              ; preds = %491
  %506 = landingpad { ptr, i32 }
          cleanup
  %507 = extractvalue { ptr, i32 } %506, 0
  store ptr %507, ptr %17, align 8
  %508 = extractvalue { ptr, i32 } %506, 1
  store i32 %508, ptr %18, align 4
  br label %513

509:                                              ; preds = %493
  %510 = landingpad { ptr, i32 }
          cleanup
  %511 = extractvalue { ptr, i32 } %510, 0
  store ptr %511, ptr %17, align 8
  %512 = extractvalue { ptr, i32 } %510, 1
  store i32 %512, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %54) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  br label %513

513:                                              ; preds = %509, %505
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #0
  br label %580

514:                                              ; preds = %498
  %515 = landingpad { ptr, i32 }
          cleanup
  %516 = extractvalue { ptr, i32 } %515, 0
  store ptr %516, ptr %17, align 8
  %517 = extractvalue { ptr, i32 } %515, 1
  store i32 %517, ptr %18, align 4
  call void @__cxa_free_exception(ptr %499) #0
  br label %580

518:                                              ; preds = %488
  br label %519

519:                                              ; preds = %518
  br label %520

520:                                              ; preds = %519
  %521 = load ptr, ptr %34, align 8, !tbaa !5
  %522 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %521, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 40, ptr %55) #0
  %523 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %56) #0
  %524 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %56, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %524, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %524) #0
  %525 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %56, i32 0, i32 1
  store i8 1, ptr %525, align 8, !tbaa !89
  invoke void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.583") align 8 %55, ptr noundef nonnull align 8 dereferenceable(8) %523, ptr noundef nonnull align 8 dereferenceable(25) %56)
          to label %526 unwind label %533

526:                                              ; preds = %520
  %527 = invoke { ptr, i8 } @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE6insertIS6_IS1_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %522, ptr noundef nonnull align 8 dereferenceable(40) %55)
          to label %528 unwind label %537

528:                                              ; preds = %526
  %529 = getelementptr inbounds { ptr, i8 }, ptr %57, i32 0, i32 0
  %530 = extractvalue { ptr, i8 } %527, 0
  store ptr %530, ptr %529, align 8
  %531 = getelementptr inbounds { ptr, i8 }, ptr %57, i32 0, i32 1
  %532 = extractvalue { ptr, i8 } %527, 1
  store i8 %532, ptr %531, align 8
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #0
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %56) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #0
  br label %542

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

537:                                              ; preds = %526
  %538 = landingpad { ptr, i32 }
          cleanup
  %539 = extractvalue { ptr, i32 } %538, 0
  store ptr %539, ptr %17, align 8
  %540 = extractvalue { ptr, i32 } %538, 1
  store i32 %540, ptr %18, align 4
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %55) #0
  br label %541

541:                                              ; preds = %537, %533
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %56) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %56) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %55) #0
  br label %580

542:                                              ; preds = %528, %484
  %543 = load ptr, ptr %12, align 8, !tbaa !5
  %544 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %58, ptr noundef null, ptr noundef %543, ptr noundef %544, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %545 unwind label %501

545:                                              ; preds = %542
  %546 = load i32, ptr %51, align 4, !tbaa !87
  %547 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %58, i32 noundef %546)
          to label %548 unwind label %549

548:                                              ; preds = %545
  store i1 %547, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %58) #0
  store i32 1, ptr %26, align 4
  br label %579

549:                                              ; preds = %545
  %550 = landingpad { ptr, i32 }
          cleanup
  %551 = extractvalue { ptr, i32 } %550, 0
  store ptr %551, ptr %17, align 8
  %552 = extractvalue { ptr, i32 } %550, 1
  store i32 %552, ptr %18, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %58) #0
  br label %580

553:                                              ; preds = %481
  %554 = load ptr, ptr %34, align 8, !tbaa !5
  %555 = icmp ne ptr %554, null
  br i1 %555, label %556, label %578

556:                                              ; preds = %553
  %557 = load ptr, ptr %34, align 8, !tbaa !5
  %558 = getelementptr inbounds %"struct.HIR::TraitMarkings", ptr %557, i32 0, i32 3
  call void @llvm.lifetime.start.p0(i64 40, ptr %59) #0
  %559 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %60) #0
  %560 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %60, i32 0, i32 0
  call void @llvm.memset.p0.i64(ptr align 8 %560, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %560) #0
  %561 = getelementptr inbounds %"struct.HIR::TraitMarkings::AutoMarking", ptr %60, i32 0, i32 1
  store i8 0, ptr %561, align 8, !tbaa !89
  invoke void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.583") align 8 %59, ptr noundef nonnull align 8 dereferenceable(8) %559, ptr noundef nonnull align 8 dereferenceable(25) %60)
          to label %562 unwind label %569

562:                                              ; preds = %556
  %563 = invoke { ptr, i8 } @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE6insertIS6_IS1_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %558, ptr noundef nonnull align 8 dereferenceable(40) %59)
          to label %564 unwind label %573

564:                                              ; preds = %562
  %565 = getelementptr inbounds { ptr, i8 }, ptr %61, i32 0, i32 0
  %566 = extractvalue { ptr, i8 } %563, 0
  store ptr %566, ptr %565, align 8
  %567 = getelementptr inbounds { ptr, i8 }, ptr %61, i32 0, i32 1
  %568 = extractvalue { ptr, i8 } %563, 1
  store i8 %568, ptr %567, align 8
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %59) #0
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %60) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %59) #0
  br label %578

569:                                              ; preds = %556
  %570 = landingpad { ptr, i32 }
          cleanup
  %571 = extractvalue { ptr, i32 } %570, 0
  store ptr %571, ptr %17, align 8
  %572 = extractvalue { ptr, i32 } %570, 1
  store i32 %572, ptr %18, align 4
  br label %577

573:                                              ; preds = %562
  %574 = landingpad { ptr, i32 }
          cleanup
  %575 = extractvalue { ptr, i32 } %574, 0
  store ptr %575, ptr %17, align 8
  %576 = extractvalue { ptr, i32 } %574, 1
  store i32 %576, ptr %18, align 4
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %59) #0
  br label %577

577:                                              ; preds = %573, %569
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %60) #0
  call void @llvm.lifetime.end.p0(i64 32, ptr %60) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %59) #0
  br label %580

578:                                              ; preds = %564, %553
  store i1 false, ptr %7, align 1
  store i32 1, ptr %26, align 4
  br label %579

579:                                              ; preds = %578, %548
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #0
  br label %581

580:                                              ; preds = %577, %549, %541, %514, %513, %501
  call void @llvm.lifetime.end.p0(i64 4, ptr %51) #0
  br label %582

581:                                              ; preds = %579, %460
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  br label %583

582:                                              ; preds = %580, %474
  call void @llvm.lifetime.end.p0(i64 1, ptr %47) #0
  br label %584

583:                                              ; preds = %581, %403
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #0
  br label %585

584:                                              ; preds = %582, %432, %417
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #0
  br label %586

585:                                              ; preds = %583, %356
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %587

586:                                              ; preds = %584, %374, %359, %280
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #0
  br label %588

587:                                              ; preds = %585, %237
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #0
  br label %638

588:                                              ; preds = %586, %246, %242
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %32) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #0
  br label %640

589:                                              ; preds = %140
  %590 = load ptr, ptr %12, align 8, !tbaa !5
  %591 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %590)
          to label %592 unwind label %164

592:                                              ; preds = %589
  %593 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %591)
          to label %594 unwind label %164

594:                                              ; preds = %592
  br i1 %593, label %595, label %604

595:                                              ; preds = %594
  %596 = load ptr, ptr %12, align 8, !tbaa !5
  %597 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %596)
          to label %598 unwind label %164

598:                                              ; preds = %595
  %599 = invoke noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %597)
          to label %600 unwind label %164

600:                                              ; preds = %598
  %601 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %599)
          to label %602 unwind label %164

602:                                              ; preds = %600
  br i1 %601, label %604, label %603

603:                                              ; preds = %602
  store i1 false, ptr %7, align 1
  store i32 1, ptr %26, align 4
  br label %638

604:                                              ; preds = %602, %594
  %605 = getelementptr inbounds %struct.TraitResolveCommon, ptr %65, i32 0, i32 0
  %606 = load ptr, ptr %605, align 8, !tbaa !12
  %607 = load ptr, ptr %10, align 8, !tbaa !5
  %608 = load ptr, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %62) #0
  %609 = getelementptr inbounds %class.TraitResolution, ptr %65, i32 0, i32 2
  %610 = load ptr, ptr %609, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %62, ptr noundef nonnull align 8 dereferenceable(49) %610)
          to label %611 unwind label %624

611:                                              ; preds = %604
  call void @llvm.lifetime.start.p0(i64 48, ptr %64) #0
  %612 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 0
  %613 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %613, ptr %612, align 8, !tbaa !5
  %614 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 1
  store ptr %65, ptr %614, align 8, !tbaa !90
  %615 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 2
  %616 = load ptr, ptr %9, align 8, !tbaa !5
  store ptr %616, ptr %615, align 8, !tbaa !5
  %617 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 3
  store ptr %11, ptr %617, align 8, !tbaa !5
  %618 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 4
  %619 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %619, ptr %618, align 8, !tbaa !5
  %620 = getelementptr inbounds %class.anon.588, ptr %64, i32 0, i32 5
  store ptr %5, ptr %620, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %63, ptr noundef nonnull align 8 dereferenceable(48) %64)
          to label %621 unwind label %628

621:                                              ; preds = %611
  %622 = invoke noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %606, ptr noundef nonnull align 8 dereferenceable(8) %607, ptr noundef nonnull align 8 dereferenceable(8) %608, ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef %63)
          to label %623 unwind label %632

623:                                              ; preds = %621
  store i1 %622, ptr %7, align 1
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #0
  store i32 1, ptr %26, align 4
  br label %638

624:                                              ; preds = %604
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %17, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %18, align 4
  br label %637

628:                                              ; preds = %611
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %17, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %18, align 4
  br label %636

632:                                              ; preds = %621
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %17, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %18, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %63) #0
  br label %636

636:                                              ; preds = %632, %628
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #0
  br label %637

637:                                              ; preds = %636, %624
  call void @llvm.lifetime.end.p0(i64 16, ptr %62) #0
  br label %640

638:                                              ; preds = %623, %603, %587, %220
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #0
  %639 = load i1, ptr %7, align 1
  ret i1 %639

640:                                              ; preds = %637, %588, %238, %217, %164
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #0
  br label %641

641:                                              ; preds = %640, %160
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #0
  br label %642

642:                                              ; preds = %641, %124
  call void @llvm.lifetime.end.p0(i64 24, ptr %19) #0
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %14) #0
  br label %643

643:                                              ; preds = %642, %120
  call void @llvm.lifetime.end.p0(i64 40, ptr %14) #0
  br label %644

644:                                              ; preds = %643
  %645 = load ptr, ptr %17, align 8
  %646 = load i32, ptr %18, align 4
  %647 = insertvalue { ptr, i32 } poison, ptr %645, 0
  %648 = insertvalue { ptr, i32 } %647, i32 %646, 1
  resume { ptr, i32 } %648

649:                                              ; preds = %500, %312, %130
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE9push_backEOSB_(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 @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind noalias writable sret(%"class.std::tuple.563") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #6

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

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

declare noundef ptr @_ZNK3HIR15TypePathBinding18get_trait_markingsEv(ptr noundef nonnull align 8 dereferenceable(16)) #2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.583") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(25)) #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 0}
!13 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !23, i64 72, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208}
!14 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!29 = !{!"_ZTSN3HIR10SimplePathE", !30, i64 0}
!30 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!31 = !{!32, !55, i64 128}
!32 = !{!"_ZTSN3HIR5TraitE", !33, i64 0, !50, i64 96, !51, i64 104, !55, i64 128, !56, i64 136, !61, i64 192, !63, i64 248, !65, i64 304, !11, i64 360, !51, i64 368, !29, i64 392}
!33 = !{!"_ZTSN3HIR13GenericParamsE", !34, i64 0, !38, i64 24, !42, i64 48, !46, i64 72}
!34 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSN3HIR11LifetimeRefE", !11, i64 0}
!51 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"bool", !7, i64 0}
!56 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !57, i64 0}
!57 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!58 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!59 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !60, i64 0, !22, i64 8}
!60 = !{!"float", !7, i64 0}
!61 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !62, i64 0}
!62 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!63 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!65 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !66, i64 0}
!66 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!70, !55, i64 32}
!70 = !{!"_ZTSSt4pairIKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEE", !29, i64 0, !71, i64 8}
!71 = !{!"_ZTSN3HIR13TraitMarkings11AutoMarkingE", !72, i64 0, !55, i64 24}
!72 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!55, !55, i64 0}
!77 = !{!78, !6, i64 224}
!78 = !{!"_ZTS15TraitResolution", !13, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !79, i64 256}
!79 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!84, !6, i64 8}
!84 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!85 = !{!86, !6, i64 8}
!86 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!87 = !{!88, !88, i64 0}
!88 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!89 = !{!71, !55, i64 24}
!90 = !{!91, !6, i64 8}
!91 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


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

%"class.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::vector.551" = type { %"struct.std::_Vector_base.552" }
%"struct.std::_Vector_base.552" = type { %"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl" }
%"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl" = type { %"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl_data" }
%"struct.std::_Vector_base<StackEnt, std::allocator<StackEnt>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.557" = type { %"struct.std::_Vector_base.558" }
%"struct.std::_Vector_base.558" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>, std::allocator<std::tuple<const HIR::SimplePath *, const HIR::PathParams *, const HIR::TypeRef *>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.550 = type { ptr, ptr, ptr }
%struct.StackEnt = type { ptr, ptr, ptr }
%struct.StackHandle = type { ptr }
%"class.__gnu_cxx::__normal_iterator.562" = type { ptr }
%struct.ImplRef = type { %"class.ImplRef::Data" }
%"class.ImplRef::Data" = type { i32, %"union.ImplRef::Data::DataUnion" }
%"union.ImplRef::Data::DataUnion" = type { %"struct.ImplRef::Data::Data_Bounded" }
%"struct.ImplRef::Data::Data_Bounded" = type { %"class.HIR::GenericParams", %"class.HIR::TypeRef", %"struct.HIR::PathParams", %"class.std::map" }
%"class.HIR::GenericParams" = type { %"class.std::vector.65", %"class.std::vector.70", %"class.std::vector.75", %"class.std::vector.80" }
%"class.std::vector.65" = type { %"struct.std::_Vector_base.66" }
%"struct.std::_Vector_base.66" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.70" = type { %"struct.std::_Vector_base.71" }
%"struct.std::_Vector_base.71" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.75" = type { %"struct.std::_Vector_base.76" }
%"struct.std::_Vector_base.76" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.80" = type { %"struct.std::_Vector_base.81" }
%"struct.std::_Vector_base.81" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::tuple.563" = type { %"struct.std::_Tuple_impl.564" }
%"struct.std::_Tuple_impl.564" = type { %"struct.std::_Tuple_impl.565", %"struct.std::_Head_base.569" }
%"struct.std::_Tuple_impl.565" = type { %"struct.std::_Tuple_impl.566", %"struct.std::_Head_base.568" }
%"struct.std::_Tuple_impl.566" = type { %"struct.std::_Head_base.567" }
%"struct.std::_Head_base.567" = type { ptr }
%"struct.std::_Head_base.568" = type { ptr }
%"struct.std::_Head_base.569" = type { ptr }
%struct.Guard = type { i8 }
%"struct.std::_Rb_tree_iterator.570" = type { ptr }
%struct.Span = type { ptr }
%class.anon.573 = type { ptr }
%"class.std::function.574" = type { %"class.std::_Function_base", ptr }
%class.anon.577 = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%class.anon.578 = type { ptr, ptr, ptr, ptr, ptr }
%class.anon.579 = type { ptr, ptr }
%"struct.std::pair.583" = type { %"struct.HIR::SimplePath", %"struct.HIR::TraitMarkings::AutoMarking" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::TraitMarkings::AutoMarking" = type <{ %"class.std::vector.60", i8, [7 x i8] }>
%"class.std::vector.60" = type { %"struct.std::_Vector_base.61" }
%"struct.std::_Vector_base.61" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::function.585" = type { %"class.std::_Function_base", ptr }
%class.anon.588 = type { ptr, ptr, ptr, ptr, ptr, ptr }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global i64, align 8
@__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [23 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack = external hidden global %"class.std::vector.551", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack = external hidden global i64, align 8
@.str.122 = external hidden unnamed_addr constant [47 x i8], align 1
@_ZTIN15TraitResolution17RecursionDetectedE = external dso_local constant { ptr, ptr }, align 8
@_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack = external hidden global %"class.std::vector.557", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack = external hidden global i64, align 8
@.str.123 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.124 = external hidden unnamed_addr constant [24 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) local_unnamed_addr #4 align 2 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.550, align 8
  %11 = alloca %struct.StackEnt, align 8
  %12 = alloca %struct.StackHandle, align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.562", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.562", align 8
  %15 = alloca %struct.ImplRef, align 8
  %16 = alloca %"class.std::tuple.563", align 8
  %17 = alloca ptr, align 8
  %18 = alloca ptr, align 8
  %19 = alloca %struct.Guard, align 1
  %20 = alloca %struct.ImplRef, align 8
  %21 = alloca %"struct.std::_Rb_tree_iterator.570", align 8
  %22 = alloca %"struct.std::_Rb_tree_iterator.570", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.573, align 8
  %27 = alloca %struct.ImplRef, align 8
  %28 = alloca i8, align 1
  %29 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %30 = alloca %"class.std::function.574", align 8
  %31 = alloca %class.anon.577, align 8
  %32 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %33 = alloca %"class.std::function.574", align 8
  %34 = alloca %class.anon.578, align 8
  %35 = alloca %struct.Span, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.579, align 8
  %38 = alloca %"struct.std::pair.583", align 8
  %39 = alloca %"struct.HIR::TraitMarkings::AutoMarking", align 8
  %40 = alloca %struct.ImplRef, align 8
  %41 = alloca %"struct.std::pair.583", align 8
  %42 = alloca %"struct.HIR::TraitMarkings::AutoMarking", align 8
  %43 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %44 = alloca %"class.std::function.585", align 8
  %45 = alloca %class.anon.588, align 8
  store ptr %3, ptr %7, align 8, !tbaa !5
  %46 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc acquire, align 8
  %47 = icmp eq i8 %46, 0
  br i1 %47, label %48, label %52, !prof !9

48:                                               ; preds = %6
  %49 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #9
  %.not = icmp eq i32 %49, 0
  br i1 %.not, label %52, label %50

50:                                               ; preds = %48
  tail call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #9
  %51 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc, ptr nonnull @__dso_handle) #9
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #9
  br label %52

52:                                               ; preds = %50, %48, %6
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #9
  %53 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %54 = select i1 %53, ptr @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %10) #9
  store ptr %2, ptr %10, align 8, !tbaa !5
  %55 = getelementptr inbounds i8, ptr %10, i64 8
  store ptr %7, ptr %55, align 8, !tbaa !5
  %56 = getelementptr inbounds i8, ptr %10, i64 16
  store ptr %4, ptr %56, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(24) %10)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %54, ptr noundef nonnull %9)
          to label %57 unwind label %83

57:                                               ; preds = %52
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  %58 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack acquire, align 8
  %59 = icmp eq i8 %58, 0
  br i1 %59, label %60, label %64, !prof !9

60:                                               ; preds = %57
  %61 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #9
  %.not112 = icmp eq i32 %61, 0
  br i1 %.not112, label %64, label %62

62:                                               ; preds = %60
  call void @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #9
  %63 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EED2Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack, ptr nonnull @__dso_handle) #9
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #9
  br label %64

64:                                               ; preds = %62, %60, %57
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %11) #9
  %65 = load ptr, ptr %7, align 8, !tbaa !5
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN8StackEntC2ES6_S9_SC_(ptr noundef nonnull align 8 dereferenceable(24) %11, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %65, ptr noundef nonnull align 8 dereferenceable(8) %4)
  %66 = call ptr @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #9
  %67 = call ptr @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack) #9
  %68 = invoke noundef i64 @_ZSt5countIN9__gnu_cxx17__normal_iteratorIPZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS6_10PathParamsERKNS6_7TypeRefESt8functionIFb7ImplRefNS6_7CompareEEEE8StackEntSt6vectorISL_SaISL_EEEESL_ENSt15iterator_traitsIT_E15difference_typeESS_SS_RKT0_(ptr %66, ptr %67, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %69 unwind label %85

69:                                               ; preds = %64
  %70 = icmp sgt i64 %68, 1
  br i1 %70, label %71, label %89

71:                                               ; preds = %69
  %72 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %73 unwind label %85

73:                                               ; preds = %71
  br i1 %72, label %74, label %87

74:                                               ; preds = %73
  %75 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %76 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %75, ptr noundef nonnull @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %77 unwind label %85

77:                                               ; preds = %74
  %78 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull @.str.122)
          to label %79 unwind label %85

79:                                               ; preds = %77
  %80 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %78, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %81 unwind label %85

81:                                               ; preds = %79
  %82 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %80, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %87 unwind label %85

83:                                               ; preds = %52
  %84 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %10) #9
  br label %371

85:                                               ; preds = %89, %87, %81, %79, %77, %74, %71, %64
  %86 = landingpad { ptr, i32 }
          cleanup
  br label %370

87:                                               ; preds = %81, %73
  %88 = call ptr @__cxa_allocate_exception(i64 1) #9
  invoke void @__cxa_throw(ptr %88, ptr nonnull @_ZTIN15TraitResolution17RecursionDetectedE, ptr null) #10
          to label %372 unwind label %85

89:                                               ; preds = %69
  invoke void @_ZNSt6vectorIZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS4_10PathParamsERKNS4_7TypeRefESt8functionIFb7ImplRefNS4_7CompareEEEE8StackEntSaISJ_EE9push_backERKSJ_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack, ptr noundef nonnull align 8 dereferenceable(24) %11)
          to label %90 unwind label %85

90:                                               ; preds = %89
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #9
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleC2ERSt6vectorIZNKS_22find_trait_impls_crateES2_S6_S9_SC_SH_E8StackEntSaISK_EE(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE15s_recurse_stack)
  %91 = load ptr, ptr %0, align 8, !tbaa !12
  %92 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %91, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %93 unwind label %108

93:                                               ; preds = %90
  %94 = getelementptr inbounds i8, ptr %92, i64 128
  %95 = load i8, ptr %94, align 8, !tbaa !31, !range !67, !noundef !68
  %96 = trunc nuw i8 %95 to i1
  br i1 %96, label %97, label %339

97:                                               ; preds = %93
  %98 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack acquire, align 8
  %99 = icmp eq i8 %98, 0
  br i1 %99, label %100, label %104, !prof !9

100:                                              ; preds = %97
  %101 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #9
  %.not115 = icmp eq i32 %101, 0
  br i1 %.not115, label %104, label %102

102:                                              ; preds = %100
  call void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #9
  %103 = call i32 @__cxa_atexit(ptr nonnull @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EED2Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack, ptr nonnull @__dso_handle) #9
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #9
  br label %104

104:                                              ; preds = %102, %100, %97
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #9
  %105 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #9
  store ptr %105, ptr %13, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #9
  %106 = call ptr @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack) #9
  store ptr %106, ptr %14, align 8
  %107 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br i1 %107, label %.lr.ph, label %._crit_edge

108:                                              ; preds = %342, %90
  %109 = landingpad { ptr, i32 }
          cleanup
  br label %369

.lr.ph:                                           ; preds = %104, %139
  %110 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm0EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %110) #9
  %112 = load ptr, ptr %111, align 8, !tbaa !5
  %113 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePathneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %112, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %114 unwind label %.loopexit

114:                                              ; preds = %.lr.ph
  br i1 %113, label %139, label %115

.loopexit:                                        ; preds = %.lr.ph, %121, %127
  %lpad.loopexit = landingpad { ptr, i32 }
          cleanup
  br label %138

.loopexit.split-lp:                               ; preds = %132
  %lpad.loopexit.split-lp = landingpad { ptr, i32 }
          cleanup
  br label %138

115:                                              ; preds = %114
  %116 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %110) #9
  %117 = load ptr, ptr %116, align 8, !tbaa !5
  %118 = icmp ne ptr %117, null
  %119 = load ptr, ptr %7, align 8
  %120 = icmp ne ptr %119, null
  %or.cond = select i1 %118, i1 %120, i1 false
  br i1 %or.cond, label %121, label %127

121:                                              ; preds = %115
  %122 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm1EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %110) #9
  %123 = load ptr, ptr %122, align 8, !tbaa !5
  %124 = load ptr, ptr %7, align 8, !tbaa !5
  %125 = invoke noundef zeroext i1 @_ZNK3HIR10PathParamsneERKS0_(ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef nonnull align 8 dereferenceable(24) %124)
          to label %126 unwind label %.loopexit

126:                                              ; preds = %121
  br i1 %125, label %139, label %127

127:                                              ; preds = %126, %115
  %128 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZSt3getILm2EJPKN3HIR10SimplePathEPKNS0_10PathParamsEPKNS0_7TypeRefEEERKNSt13tuple_elementIXT_ESt5tupleIJDpT0_EEE4typeERKSE_(ptr noundef nonnull align 8 dereferenceable(24) %110) #9
  %129 = load ptr, ptr %128, align 8, !tbaa !5
  %130 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %129, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %131 unwind label %.loopexit

131:                                              ; preds = %127
  br i1 %130, label %139, label %132

132:                                              ; preds = %131
  %133 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %15, ptr noundef null, ptr noundef nonnull %4, ptr noundef %133, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %134 unwind label %.loopexit.split-lp

134:                                              ; preds = %132
  %135 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %15, i32 noundef 0)
          to label %.thread153 unwind label %136

136:                                              ; preds = %134
  %137 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #9
  br label %138

.thread153:                                       ; preds = %134
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %15) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %368

138:                                              ; preds = %.loopexit, %.loopexit.split-lp, %136
  %.pn116 = phi { ptr, i32 } [ %137, %136 ], [ %lpad.loopexit, %.loopexit ], [ %lpad.loopexit.split-lp, %.loopexit.split-lp ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  br label %369

139:                                              ; preds = %114, %126, %131
  %140 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %13) #9
  %141 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %14) #9
  br i1 %141, label %.lr.ph, label %._crit_edge

._crit_edge:                                      ; preds = %139, %104
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #9
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #9
  store ptr %2, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #9
  store ptr %4, ptr %18, align 8, !tbaa !5
  call void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind nonnull writable sret(%"class.std::tuple.563") align 8 %16, ptr noundef nonnull align 8 dereferenceable(8) %17, ptr noundef nonnull align 8 dereferenceable(8) %7, ptr noundef nonnull align 8 dereferenceable(8) %18)
  invoke void @_ZNSt6vectorISt5tupleIJPKN3HIR10SimplePathEPKNS1_10PathParamsEPKNS1_7TypeRefEEESaISB_EE9push_backEOSB_(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE5stack, ptr noundef nonnull align 8 dereferenceable(24) %16)
          to label %142 unwind label %150

142:                                              ; preds = %._crit_edge
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %19) #9
  %143 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %144 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %143)
  br i1 %144, label %145, label %156

145:                                              ; preds = %142
  %146 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %20, ptr noundef null, ptr noundef nonnull %4, ptr noundef %146, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %147 unwind label %152

147:                                              ; preds = %145
  %148 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %20, i32 noundef 1)
          to label %149 unwind label %154

149:                                              ; preds = %147
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #9
  br label %337

150:                                              ; preds = %._crit_edge
  %151 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %16) #9
  br label %369

152:                                              ; preds = %145
  %153 = landingpad { ptr, i32 }
          cleanup
  br label %338

154:                                              ; preds = %147
  %155 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %20) #9
  br label %338

156:                                              ; preds = %142
  %157 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %158 = call noundef ptr @_ZNK3HIR8TypeData8opt_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %157)
  %.not118 = icmp eq ptr %158, null
  br i1 %.not118, label %.thread156, label %159

159:                                              ; preds = %156
  %160 = call noundef zeroext i1 @_ZNK3HIR4Path4Data10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %158)
  br i1 %160, label %161, label %.thread156

161:                                              ; preds = %159
  %162 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %158)
  %163 = getelementptr inbounds i8, ptr %162, i64 16
  %164 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %163)
  %165 = icmp eq i64 %164, 0
  br i1 %165, label %166, label %.thread156

166:                                              ; preds = %161
  %167 = getelementptr inbounds i8, ptr %158, i64 88
  %168 = invoke noundef ptr @_ZNK3HIR15TypePathBinding18get_trait_markingsEv(ptr noundef nonnull align 8 dereferenceable(16) %167)
          to label %171 unwind label %169

169:                                              ; preds = %166
  %170 = landingpad { ptr, i32 }
          cleanup
  br label %338

171:                                              ; preds = %166
  %.not119 = icmp eq ptr %168, null
  br i1 %.not119, label %.thread156, label %172

172:                                              ; preds = %171
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %21) #9
  %173 = getelementptr inbounds i8, ptr %168, i64 8
  %174 = invoke ptr @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE4findERS7_(ptr noundef nonnull align 8 dereferenceable(48) %173, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %175 unwind label %187

175:                                              ; preds = %172
  store ptr %174, ptr %21, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %22) #9
  %176 = call ptr @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE3endEv(ptr noundef nonnull align 8 dereferenceable(48) %173) #9
  store ptr %176, ptr %22, align 8
  %177 = call noundef zeroext i1 @_ZStneRKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEES9_(ptr noundef nonnull align 8 dereferenceable(8) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %22) #9
  br i1 %177, label %178, label %211

178:                                              ; preds = %175
  %179 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %180 = getelementptr inbounds i8, ptr %179, i64 8
  %181 = call noundef zeroext i1 @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5emptyEv(ptr noundef nonnull align 8 dereferenceable(24) %180) #9
  br i1 %181, label %199, label %182

182:                                              ; preds = %178
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %24) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %183 unwind label %189

183:                                              ; preds = %182
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  store ptr %23, ptr %26, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull %25)
          to label %184 unwind label %191

184:                                              ; preds = %183
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  %185 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %185, ptr noundef nonnull @.str.70)
          to label %186 unwind label %194

186:                                              ; preds = %184
  invoke void @__cxa_throw(ptr nonnull %185, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %372 unwind label %196

187:                                              ; preds = %204, %172
  %188 = landingpad { ptr, i32 }
          cleanup
  br label %212

189:                                              ; preds = %182
  %190 = landingpad { ptr, i32 }
          cleanup
  br label %193

191:                                              ; preds = %183
  %192 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #9
  br label %193

193:                                              ; preds = %191, %189
  %.pn120 = phi { ptr, i32 } [ %192, %191 ], [ %190, %189 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %24) #9
  br label %198

194:                                              ; preds = %184
  %195 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %185) #9
  br label %198

196:                                              ; preds = %186
  %197 = landingpad { ptr, i32 }
          cleanup
  br label %198

198:                                              ; preds = %196, %194, %193
  %.pn122 = phi { ptr, i32 } [ %197, %196 ], [ %195, %194 ], [ %.pn120, %193 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %212

199:                                              ; preds = %178
  %200 = call noundef ptr @_ZNKSt17_Rb_tree_iteratorISt4pairIKN3HIR10SimplePathENS1_13TraitMarkings11AutoMarkingEEEptEv(ptr noundef nonnull align 8 dereferenceable(8) %21) #9
  %201 = getelementptr inbounds i8, ptr %200, i64 32
  %202 = load i8, ptr %201, align 8, !tbaa !69, !range !67, !noundef !68
  %203 = trunc nuw i8 %202 to i1
  br i1 %203, label %204, label %.thread162

204:                                              ; preds = %199
  %205 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %27, ptr noundef null, ptr noundef nonnull %4, ptr noundef %205, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %206 unwind label %187

206:                                              ; preds = %204
  %207 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %27, i32 noundef 0)
          to label %208 unwind label %209

208:                                              ; preds = %206
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #9
  br label %.thread162

209:                                              ; preds = %206
  %210 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #9
  br label %212

.thread162:                                       ; preds = %199, %208
  %.3.ph = phi i1 [ false, %199 ], [ %207, %208 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %337

211:                                              ; preds = %175
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %.thread156

212:                                              ; preds = %209, %198, %187
  %.pn124 = phi { ptr, i32 } [ %210, %209 ], [ %188, %187 ], [ %.pn122, %198 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %21) #9
  br label %338

.thread156:                                       ; preds = %156, %159, %161, %211, %171
  %.not119160 = phi i1 [ true, %171 ], [ false, %211 ], [ true, %161 ], [ true, %159 ], [ true, %156 ]
  %.0109159 = phi ptr [ null, %171 ], [ %168, %211 ], [ null, %161 ], [ null, %159 ], [ null, %156 ]
  %213 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %214 unwind label %224

214:                                              ; preds = %.thread156
  br i1 %213, label %215, label %226

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

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

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

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

224:                                              ; preds = %222, %220, %218, %215, %.thread156
  %225 = landingpad { ptr, i32 }
          cleanup
  br label %338

226:                                              ; preds = %222, %214
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %28) #9
  store i8 0, ptr %28, align 1, !tbaa !76
  %227 = load ptr, ptr %0, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %29) #9
  %228 = getelementptr inbounds i8, ptr %0, i64 224
  %229 = load ptr, ptr %228, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %29, ptr noundef nonnull align 8 dereferenceable(49) %229)
          to label %230 unwind label %242

230:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %31) #9
  store ptr %2, ptr %31, align 8, !tbaa !5
  %231 = getelementptr inbounds i8, ptr %31, i64 8
  store ptr %0, ptr %231, align 8, !tbaa !83
  %232 = getelementptr inbounds i8, ptr %31, i64 16
  store ptr %1, ptr %232, align 8, !tbaa !5
  %233 = getelementptr inbounds i8, ptr %31, i64 24
  store ptr %7, ptr %233, align 8, !tbaa !5
  %234 = getelementptr inbounds i8, ptr %31, i64 32
  store ptr %4, ptr %234, align 8, !tbaa !5
  %235 = getelementptr inbounds i8, ptr %31, i64 40
  store ptr %28, ptr %235, align 8, !tbaa !5
  %236 = getelementptr inbounds i8, ptr %31, i64 48
  store ptr %5, ptr %236, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %30, ptr noundef nonnull align 8 dereferenceable(56) %31)
          to label %237 unwind label %244

237:                                              ; preds = %230
  %238 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %227, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull %30)
          to label %239 unwind label %246

239:                                              ; preds = %237
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %31) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  %240 = load i8, ptr %28, align 1, !tbaa !76, !range !67, !noundef !68
  %241 = trunc nuw i8 %240 to i1
  br i1 %241, label %335, label %250

242:                                              ; preds = %226
  %243 = landingpad { ptr, i32 }
          cleanup
  br label %249

244:                                              ; preds = %230
  %245 = landingpad { ptr, i32 }
          cleanup
  br label %248

246:                                              ; preds = %237
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %248

248:                                              ; preds = %246, %244
  %.pn126 = phi { ptr, i32 } [ %247, %246 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %31) #9
  br label %249

249:                                              ; preds = %248, %242
  %.pn126.pn = phi { ptr, i32 } [ %.pn126, %248 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %29) #9
  br label %336

250:                                              ; preds = %239
  %251 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %252 unwind label %262

252:                                              ; preds = %250
  br i1 %251, label %253, label %264

253:                                              ; preds = %252
  %254 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !10
  %255 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %254, ptr noundef nonnull @__func__._ZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %256 unwind label %262

256:                                              ; preds = %253
  %257 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %255, ptr noundef nonnull @.str.124)
          to label %258 unwind label %262

258:                                              ; preds = %256
  %259 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %257, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %260 unwind label %262

260:                                              ; preds = %258
  %261 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %259, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %264 unwind label %262

262:                                              ; preds = %260, %258, %256, %253, %250
  %263 = landingpad { ptr, i32 }
          cleanup
  br label %336

264:                                              ; preds = %260, %252
  %265 = load ptr, ptr %0, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %32) #9
  %266 = load ptr, ptr %228, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %32, ptr noundef nonnull align 8 dereferenceable(49) %266)
          to label %267 unwind label %275

267:                                              ; preds = %264
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %34) #9
  store ptr %2, ptr %34, align 8, !tbaa !5
  %268 = getelementptr inbounds i8, ptr %34, i64 8
  store ptr %0, ptr %268, align 8, !tbaa !85
  %269 = getelementptr inbounds i8, ptr %34, i64 16
  store ptr %1, ptr %269, align 8, !tbaa !5
  %270 = getelementptr inbounds i8, ptr %34, i64 24
  store ptr %7, ptr %270, align 8, !tbaa !5
  %271 = getelementptr inbounds i8, ptr %34, i64 32
  store ptr %4, ptr %271, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR10MarkerImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull align 8 dereferenceable(40) %34)
          to label %272 unwind label %277

272:                                              ; preds = %267
  %273 = invoke noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %265, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull %33)
          to label %274 unwind label %279

274:                                              ; preds = %272
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %34) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #9
  br i1 %273, label %335, label %283

275:                                              ; preds = %264
  %276 = landingpad { ptr, i32 }
          cleanup
  br label %282

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

279:                                              ; preds = %272
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #9
  br label %281

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

282:                                              ; preds = %281, %275
  %.pn129.pn = phi { ptr, i32 } [ %.pn129, %281 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %32) #9
  br label %336

283:                                              ; preds = %274
  %284 = load ptr, ptr %7, align 8, !tbaa !5
  %285 = invoke noundef i32 @_ZNK15TraitResolution33check_auto_trait_impl_destructureERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef %284, ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %286 unwind label %296

286:                                              ; preds = %283
  %.not132 = icmp eq i32 %285, 2
  br i1 %.not132, label %323, label %287

287:                                              ; preds = %286
  br i1 %.not119160, label %316, label %288

288:                                              ; preds = %287
  %289 = icmp eq i32 %285, 0
  br i1 %289, label %305, label %290

290:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %35) #9
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %291 unwind label %298

291:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %37) #9
  store ptr %2, ptr %37, align 8, !tbaa !5
  %292 = getelementptr inbounds i8, ptr %37, i64 8
  store ptr %4, ptr %292, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(16) %37) #9
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %35, ptr noundef nonnull %36)
          to label %293 unwind label %300

293:                                              ; preds = %291
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  %294 = call ptr @__cxa_allocate_exception(i64 16) #9
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %294, ptr noundef nonnull @.str.8)
          to label %295 unwind label %303

295:                                              ; preds = %293
  invoke void @__cxa_throw(ptr nonnull %294, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %372 unwind label %296

296:                                              ; preds = %316, %295, %283
  %297 = landingpad { ptr, i32 }
          cleanup
  br label %336

298:                                              ; preds = %290
  %299 = landingpad { ptr, i32 }
          cleanup
  br label %302

300:                                              ; preds = %291
  %301 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %37) #9
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %35) #9
  br label %302

302:                                              ; preds = %300, %298
  %.pn135 = phi { ptr, i32 } [ %301, %300 ], [ %299, %298 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %35) #9
  br label %336

303:                                              ; preds = %293
  %304 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %294) #9
  br label %336

305:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %38) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %39, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #9
  %306 = getelementptr inbounds i8, ptr %39, i64 24
  store i8 1, ptr %306, align 8, !tbaa !87
  invoke void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.583") align 8 %38, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(25) %39)
          to label %307 unwind label %311

307:                                              ; preds = %305
  %308 = getelementptr inbounds i8, ptr %.0109159, i64 8
  %309 = invoke { ptr, i8 } @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE6insertIS6_IS1_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %308, ptr noundef nonnull align 8 dereferenceable(40) %38)
          to label %310 unwind label %313

310:                                              ; preds = %307
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #9
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #9
  br label %316

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

313:                                              ; preds = %307
  %314 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %38) #9
  br label %315

315:                                              ; preds = %313, %311
  %.pn137 = phi { ptr, i32 } [ %314, %313 ], [ %312, %311 ]
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %38) #9
  br label %336

316:                                              ; preds = %310, %287
  %317 = load ptr, ptr %7, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %40, ptr noundef null, ptr noundef nonnull %4, ptr noundef %317, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %318 unwind label %296

318:                                              ; preds = %316
  %319 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %40, i32 noundef %285)
          to label %320 unwind label %321

320:                                              ; preds = %318
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %40) #9
  br label %335

321:                                              ; preds = %318
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %40) #9
  br label %336

323:                                              ; preds = %286
  br i1 %.not119160, label %335, label %324

324:                                              ; preds = %323
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %41) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %42, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3HIR7TypeRefESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %42) #9
  %325 = getelementptr inbounds i8, ptr %42, i64 24
  store i8 0, ptr %325, align 8, !tbaa !87
  invoke void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.583") align 8 %41, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(25) %42)
          to label %326 unwind label %330

326:                                              ; preds = %324
  %327 = getelementptr inbounds i8, ptr %.0109159, i64 8
  %328 = invoke { ptr, i8 } @_ZNSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE6insertIS6_IS1_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %327, ptr noundef nonnull align 8 dereferenceable(40) %41)
          to label %329 unwind label %332

329:                                              ; preds = %326
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #9
  br label %335

330:                                              ; preds = %324
  %331 = landingpad { ptr, i32 }
          cleanup
  br label %334

332:                                              ; preds = %326
  %333 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEED2Ev(ptr noundef nonnull align 8 dereferenceable(40) %41) #9
  br label %334

334:                                              ; preds = %332, %330
  %.pn133 = phi { ptr, i32 } [ %333, %332 ], [ %331, %330 ]
  call void @_ZN3HIR13TraitMarkings11AutoMarkingD2Ev(ptr noundef nonnull align 8 dereferenceable(25) %42) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %42) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %41) #9
  br label %336

335:                                              ; preds = %274, %323, %329, %320, %239
  %.6 = phi i1 [ true, %239 ], [ false, %274 ], [ %319, %320 ], [ false, %329 ], [ false, %323 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  br label %337

336:                                              ; preds = %282, %334, %321, %315, %303, %302, %296, %262, %249
  %.pn139.pn.pn = phi { ptr, i32 } [ %263, %262 ], [ %.pn126.pn, %249 ], [ %.pn129.pn, %282 ], [ %322, %321 ], [ %297, %296 ], [ %.pn137, %315 ], [ %304, %303 ], [ %.pn135, %302 ], [ %.pn133, %334 ]
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %28) #9
  br label %338

337:                                              ; preds = %.thread162, %335, %149
  %.8 = phi i1 [ %148, %149 ], [ %.6, %335 ], [ %.3.ph, %.thread162 ]
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  br label %368

338:                                              ; preds = %169, %212, %224, %336, %154, %152
  %.pn144 = phi { ptr, i32 } [ %155, %154 ], [ %153, %152 ], [ %.pn139.pn.pn, %336 ], [ %225, %224 ], [ %.pn124, %212 ], [ %170, %169 ]
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1) %19) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %19) #9
  br label %369

339:                                              ; preds = %93
  %340 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %341 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %340)
  br i1 %341, label %342, label %347

342:                                              ; preds = %339
  %343 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %344 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %343)
  %345 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10Data_Infer6is_litEv(ptr noundef nonnull align 4 dereferenceable(8) %344)
          to label %346 unwind label %108

346:                                              ; preds = %342
  br i1 %345, label %347, label %368

347:                                              ; preds = %346, %339
  %348 = load ptr, ptr %0, align 8, !tbaa !12
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %43) #9
  %349 = getelementptr inbounds i8, ptr %0, i64 224
  %350 = load ptr, ptr %349, align 8, !tbaa !77
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %43, ptr noundef nonnull align 8 dereferenceable(49) %350)
          to label %351 unwind label %360

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %45) #9
  store ptr %2, ptr %45, align 8, !tbaa !5
  %352 = getelementptr inbounds i8, ptr %45, i64 8
  store ptr %0, ptr %352, align 8, !tbaa !88
  %353 = getelementptr inbounds i8, ptr %45, i64 16
  store ptr %1, ptr %353, align 8, !tbaa !5
  %354 = getelementptr inbounds i8, ptr %45, i64 24
  store ptr %7, ptr %354, align 8, !tbaa !5
  %355 = getelementptr inbounds i8, ptr %45, i64 32
  store ptr %4, ptr %355, align 8, !tbaa !5
  %356 = getelementptr inbounds i8, ptr %45, i64 40
  store ptr %5, ptr %356, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFbRKN3HIR9TraitImplEEEC2IZNK15TraitResolution22find_trait_impls_crateERK4SpanRKNS0_10SimplePathEPKNS0_10PathParamsERKNS0_7TypeRefES_IFb7ImplRefNS0_7CompareEEEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(48) %45)
          to label %357 unwind label %362

357:                                              ; preds = %351
  %358 = invoke noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944) %348, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef nonnull align 8 dereferenceable(8) %43, ptr noundef nonnull %44)
          to label %359 unwind label %364

359:                                              ; preds = %357
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #9
  br label %368

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

362:                                              ; preds = %351
  %363 = landingpad { ptr, i32 }
          cleanup
  br label %366

364:                                              ; preds = %357
  %365 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #9
  br label %366

366:                                              ; preds = %364, %362
  %.pn = phi { ptr, i32 } [ %365, %364 ], [ %363, %362 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %45) #9
  br label %367

367:                                              ; preds = %366, %360
  %.pn.pn = phi { ptr, i32 } [ %.pn, %366 ], [ %361, %360 ]
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %43) #9
  br label %369

368:                                              ; preds = %.thread153, %346, %359, %337
  %.9 = phi i1 [ %.8, %337 ], [ %358, %359 ], [ false, %346 ], [ %135, %.thread153 ]
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #9
  ret i1 %.9

369:                                              ; preds = %367, %338, %150, %138, %108
  %.pn144.pn = phi { ptr, i32 } [ %.pn144, %338 ], [ %151, %150 ], [ %.pn116, %138 ], [ %.pn.pn, %367 ], [ %109, %108 ]
  call void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN11StackHandleD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #9
  br label %370

370:                                              ; preds = %369, %85
  %.pn147 = phi { ptr, i32 } [ %86, %85 ], [ %.pn144.pn, %369 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %11) #9
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #9
  br label %371

371:                                              ; preds = %370, %83
  %.pn147.pn = phi { ptr, i32 } [ %.pn147, %370 ], [ %84, %83 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #9
  resume { ptr, i32 } %.pn147.pn

372:                                              ; preds = %295, %186, %87
  unreachable
}

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef i64 @_ZSt5countIN9__gnu_cxx17__normal_iteratorIPZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS6_10PathParamsERKNS6_7TypeRefESt8functionIFb7ImplRefNS6_7CompareEEEE8StackEntSt6vectorISL_SaISL_EEEESL_ENSt15iterator_traitsIT_E15difference_typeESS_SS_RKT0_(ptr, ptr, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #3

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local noundef zeroext i1 @_ZN9__gnu_cxxneIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEEbRKNS_17__normal_iteratorIT_T0_EESM_(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(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPSt5tupleIJPKN3HIR10SimplePathEPKNS2_10PathParamsEPKNS2_7TypeRefEEESt6vectorISC_SaISC_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #6 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZSt10make_tupleIJPKN3HIR10SimplePathERPKNS0_10PathParamsEPKNS0_7TypeRefEEESt5tupleIJDpNSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeEEEDpOSE_(ptr dead_on_unwind noalias writable sret(%"class.std::tuple.563") align 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 #6

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

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

declare noundef ptr @_ZNK3HIR15TypePathBinding18get_trait_markingsEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #2

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

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

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

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

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

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

declare noundef zeroext i1 @_ZNK3HIR5Crate21find_auto_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_10MarkerImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.583") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(25)) local_unnamed_addr #4

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @_ZZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEEN5GuardD2Ev(ptr noundef nonnull align 1 dereferenceable(1)) unnamed_addr #6 align 2

declare noundef zeroext i1 @_ZNK3HIR5Crate16find_trait_implsERKNS_10SimplePathERKNS_7TypeRefERKNS_19ResolvePlaceholdersESt8functionIFbRKNS_9TraitImplEEE(ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #2

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!"branch_weights", i32 1, i32 1048575}
!10 = !{!11, !11, i64 0}
!11 = !{!"int", !7, i64 0}
!12 = !{!13, !6, i64 0}
!13 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !14, i64 24, !23, i64 72, !29, i64 104, !29, i64 112, !29, i64 120, !29, i64 128, !29, i64 136, !29, i64 144, !29, i64 152, !29, i64 160, !29, i64 168, !29, i64 176, !29, i64 184, !29, i64 192, !29, i64 200, !29, i64 208}
!14 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !15, i64 0}
!15 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !16, i64 0}
!16 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !17, i64 0, !19, i64 8}
!17 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !18, i64 0}
!18 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!19 = !{!"_ZTSSt15_Rb_tree_header", !20, i64 0, !22, i64 32}
!20 = !{!"_ZTSSt18_Rb_tree_node_base", !21, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!21 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!22 = !{!"long", !7, i64 0}
!23 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !24, i64 0, !28, i64 24}
!24 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!29 = !{!"_ZTSN3HIR10SimplePathE", !30, i64 0}
!30 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!31 = !{!32, !55, i64 128}
!32 = !{!"_ZTSN3HIR5TraitE", !33, i64 0, !50, i64 96, !51, i64 104, !55, i64 128, !56, i64 136, !61, i64 192, !63, i64 248, !65, i64 304, !11, i64 360, !51, i64 368, !29, i64 392}
!33 = !{!"_ZTSN3HIR13GenericParamsE", !34, i64 0, !38, i64 24, !42, i64 48, !46, i64 72}
!34 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !35, i64 0}
!35 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !36, i64 0}
!36 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !37, i64 0}
!37 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!38 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !41, i64 0}
!41 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!42 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !43, i64 0}
!43 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !45, i64 0}
!45 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!46 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !47, i64 0}
!47 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !48, i64 0}
!48 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !49, i64 0}
!49 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!50 = !{!"_ZTSN3HIR11LifetimeRefE", !11, i64 0}
!51 = !{!"_ZTSSt6vectorIN3HIR9TraitPathESaIS1_EE", !52, i64 0}
!52 = !{!"_ZTSSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE", !53, i64 0}
!53 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE12_Vector_implE", !54, i64 0}
!54 = !{!"_ZTSNSt12_Vector_baseIN3HIR9TraitPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!55 = !{!"bool", !7, i64 0}
!56 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14AssociatedTypeESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !57, i64 0}
!57 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14AssociatedTypeEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!58 = !{!"_ZTSNSt8__detail15_Hash_node_baseE", !6, i64 0}
!59 = !{!"_ZTSNSt8__detail20_Prime_rehash_policyE", !60, i64 0, !22, i64 8}
!60 = !{!"float", !7, i64 0}
!61 = !{!"_ZTSSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE", !62, i64 0}
!62 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_N3HIR14TraitValueItemEESaIS5_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!63 = !{!"_ZTSSt18unordered_multimapI8RcStringSt4pairIjN3HIR11GenericPathEESt4hashIS0_ESt8equal_toIS0_ESaIS1_IKS0_S4_EEE", !64, i64 0}
!64 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_S1_IjN3HIR11GenericPathEEESaIS6_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb0EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!65 = !{!"_ZTSSt13unordered_mapI8RcStringjSt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_jEEE", !66, i64 0}
!66 = !{!"_ZTSSt10_HashtableI8RcStringSt4pairIKS0_jESaIS3_ENSt8__detail10_Select1stESt8equal_toIS0_ESt4hashIS0_ENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE", !6, i64 0, !22, i64 8, !58, i64 16, !22, i64 24, !59, i64 32, !6, i64 48}
!67 = !{i8 0, i8 2}
!68 = !{}
!69 = !{!70, !55, i64 32}
!70 = !{!"_ZTSSt4pairIKN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingEE", !29, i64 0, !71, i64 8}
!71 = !{!"_ZTSN3HIR13TraitMarkings11AutoMarkingE", !72, i64 0, !55, i64 24}
!72 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !73, i64 0}
!73 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!76 = !{!55, !55, i64 0}
!77 = !{!78, !6, i64 224}
!78 = !{!"_ZTS15TraitResolution", !13, i64 0, !6, i64 216, !6, i64 224, !6, i64 232, !6, i64 240, !6, i64 248, !79, i64 256}
!79 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !80, i64 0}
!80 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE", !81, i64 0}
!81 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !82, i64 0}
!82 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR7TypeRefESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!83 = !{!84, !6, i64 8}
!84 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_2", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40, !6, i64 48}
!85 = !{!86, !6, i64 8}
!86 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_3", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32}
!87 = !{!71, !55, i64 24}
!88 = !{!89, !6, i64 8}
!89 = !{!"_ZTSZNK15TraitResolution22find_trait_impls_crateERK4SpanRKN3HIR10SimplePathEPKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE3$_5", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !6, i64 32, !6, i64 40}


; Effective O3 passes: CorrelatedValuePropagationPass,EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,JumpThreadingPass,LoopRotatePass,LoopSimplifyPass,LoopUnrollPass,SROAPass,SimplifyCFGPass,TailCallElimPass