; 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"

%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RcString = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.447 = type { ptr, ptr, 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 }
%"struct.std::pair.450" = type { ptr, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.std::pair.448" = type <{ %"struct.std::_Rb_tree_iterator", i8, [7 x i8] }>
%"struct.std::_Rb_tree_iterator" = type { ptr }
%"struct.std::pair.457" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"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.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"struct.HIR::TypePathBinding::Data_Opaque" = type { i8 }
%struct.Span = type { ptr }
%class.anon.484 = type { ptr, ptr }
%class.anon.485 = type { ptr, ptr }
%class.anon.486 = type { i8 }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.488 = type { ptr, ptr, ptr }
%"class.std::function.489" = type { %"class.std::_Function_base", 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.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 }
%"struct.HIR::TypeData::Data_Generator" = type { ptr }
%"struct.HIR::ExprNode_Generator" = type { %"class.HIR::ExprNode.base", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.HIR::TypeRef", %"class.std::unique_ptr.98", i8, i8, %struct.anon, ptr, %"class.HIR::GenericPath", %"class.std::vector.111", %"class.HIR::TypeRef" }
%"class.HIR::ExprNode.base" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32 }>
%"class.std::unique_ptr.98" = type { %"struct.std::__uniq_ptr_data.99" }
%"struct.std::__uniq_ptr_data.99" = type { %"class.std::__uniq_ptr_impl.100" }
%"class.std::__uniq_ptr_impl.100" = type { %"class.std::tuple.101" }
%"class.std::tuple.101" = type { %"struct.std::_Tuple_impl.102" }
%"struct.std::_Tuple_impl.102" = type { %"struct.std::_Head_base.105" }
%"struct.std::_Head_base.105" = type { ptr }
%struct.anon = type { %"class.std::vector.85", %"class.std::vector.452" }
%"class.std::vector.85" = type { %"struct.std::_Vector_base.86" }
%"struct.std::_Vector_base.86" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.452" = type { %"struct.std::_Vector_base.453" }
%"struct.std::_Vector_base.453" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<unsigned int, HIR::ValueUsage>, std::allocator<std::pair<unsigned int, HIR::ValueUsage>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.111" = type { %"struct.std::_Vector_base.112" }
%"struct.std::_Vector_base.112" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<HIR::ExprNode>, std::allocator<std::unique_ptr<HIR::ExprNode>>>::_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::Enum" = type { %"class.HIR::GenericParams", i8, i32, %"class.HIR::Enum::Class", %"struct.HIR::TraitMarkings" }
%"class.HIR::Enum::Class" = type { i32, %"union.HIR::Enum::Class::DataUnion" }
%"union.HIR::Enum::Class::DataUnion" = type { %"class.std::vector.459", [8 x i8] }
%"class.std::vector.459" = type { %"struct.std::_Vector_base.460" }
%"struct.std::_Vector_base.460" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::Enum::DataVariant, std::allocator<HIR::Enum::DataVariant>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::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" }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.474" }
%"class.std::vector.474" = type { %"struct.std::_Vector_base.475" }
%"struct.std::_Vector_base.475" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params = external hidden global i64, align 8
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global i64, align 8
@.str.61 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [23 x i8], align 1
@gTargetVersion = external global i32, align 4
@.str.62 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant = external hidden global %class.RcString, align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant = external hidden global i64, align 8
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [14 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata = external hidden global %class.RcString, align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata = external hidden global i64, align 8
@.str.68 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [162 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; 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 @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64)

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

declare void @__cxa_free_exception(ptr)

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

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

declare 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 #8

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_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 nonnull align 8 dereferenceable(24) %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 ptr, align 8
  %15 = alloca i32, align 4
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca %class.TraceLog, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.447, align 8
  %21 = alloca i32, align 4
  %22 = alloca %struct.ImplRef, align 8
  %23 = alloca i32, align 4
  %24 = alloca i32, align 4
  %25 = alloca %struct.ImplRef, align 8
  %26 = alloca %struct.ImplRef, align 8
  %27 = alloca i32, align 4
  %28 = alloca %struct.ImplRef, align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"class.std::map", align 8
  %31 = alloca %"struct.std::pair.450", align 8
  %32 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %33 = alloca %"struct.HIR::SimplePath", align 8
  %34 = alloca %"struct.std::pair.448", align 8
  %35 = alloca %"struct.std::pair.450", align 8
  %36 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %37 = alloca %"struct.HIR::SimplePath", align 8
  %38 = alloca %"struct.std::pair.448", align 8
  %39 = alloca %"struct.HIR::PathParams", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %struct.ImplRef, align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %"struct.HIR::PathParams", align 8
  %44 = alloca %"class.std::map", align 8
  %45 = alloca %struct.ImplRef, align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %"struct.HIR::PathParams", align 8
  %48 = alloca %"class.std::map", align 8
  %49 = alloca %"class.std::map", align 8
  %50 = alloca %"struct.std::pair.457", align 8
  %51 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %52 = alloca %"struct.HIR::SimplePath", align 8
  %53 = alloca %"class.HIR::Path", align 8
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca %"class.HIR::GenericPath", align 8
  %56 = alloca %"struct.HIR::SimplePath", align 8
  %57 = alloca %class.RcString, align 8
  %58 = alloca %"struct.HIR::PathParams", align 8
  %59 = alloca %"class.HIR::TypePathBinding", align 8
  %60 = alloca %"struct.HIR::TypePathBinding::Data_Opaque", align 1
  %61 = alloca i1, align 1
  %62 = alloca %"struct.std::pair.448", align 8
  %63 = alloca %struct.ImplRef, align 8
  %64 = alloca %"class.HIR::TypeRef", align 8
  %65 = alloca %"struct.HIR::PathParams", align 8
  %66 = alloca %"class.std::map", align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %"class.std::map", align 8
  %70 = alloca %"struct.std::pair.457", align 8
  %71 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %72 = alloca %"struct.HIR::SimplePath", align 8
  %73 = alloca %"struct.std::pair.448", align 8
  %74 = alloca %struct.ImplRef, align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"struct.HIR::PathParams", align 8
  %77 = alloca %"class.std::map", align 8
  %78 = alloca %"class.std::map", align 8
  %79 = alloca %"struct.std::pair.457", align 8
  %80 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %81 = alloca %"struct.HIR::SimplePath", align 8
  %82 = alloca %"struct.std::pair.448", align 8
  %83 = alloca %struct.ImplRef, align 8
  %84 = alloca %"class.HIR::TypeRef", align 8
  %85 = alloca %"struct.HIR::PathParams", align 8
  %86 = alloca %"class.std::map", align 8
  %87 = alloca %"class.HIR::TypeRef", align 8
  %88 = alloca %struct.ImplRef, align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"struct.HIR::PathParams", align 8
  %91 = alloca %"class.std::map", align 8
  %92 = alloca %"class.HIR::TypeRef", align 8
  %93 = alloca %"class.HIR::TypeRef", align 8
  %94 = alloca %"class.HIR::Path", align 8
  %95 = alloca %"class.HIR::GenericPath", align 8
  %96 = alloca %"struct.HIR::SimplePath", align 8
  %97 = alloca %"struct.HIR::PathParams", align 8
  %98 = alloca %"class.HIR::TypeRef", align 8
  %99 = alloca %"class.HIR::TypePathBinding", align 8
  %100 = alloca %"class.HIR::TypeRef", align 8
  %101 = alloca ptr, align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  %103 = alloca ptr, align 8
  %104 = alloca %struct.Span, align 8
  %105 = alloca %"class.std::function", align 8
  %106 = alloca %class.anon.484, align 8
  %107 = alloca %"class.HIR::TypeRef", align 8
  %108 = alloca ptr, align 8
  %109 = alloca %struct.Span, align 8
  %110 = alloca %"class.std::function", align 8
  %111 = alloca %class.anon.485, align 8
  %112 = alloca %"class.HIR::TypeRef", align 8
  %113 = alloca %"class.std::map", align 8
  %114 = alloca %"class.HIR::TypeRef", align 8
  %115 = alloca %"struct.std::pair.457", align 8
  %116 = alloca %class.RcString, align 8
  %117 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %118 = alloca %"struct.HIR::SimplePath", align 8
  %119 = alloca %"struct.std::pair.448", align 8
  %120 = alloca %struct.ImplRef, align 8
  %121 = alloca %"class.HIR::TypeRef", align 8
  %122 = alloca %"struct.HIR::PathParams", align 8
  %123 = alloca %"class.std::map", align 8
  %124 = alloca %struct.ImplRef, align 8
  %125 = alloca %"class.HIR::TypeRef", align 8
  %126 = alloca %"struct.HIR::PathParams", align 8
  %127 = alloca %"class.std::map", align 8
  %128 = alloca %struct.ImplRef, align 8
  %129 = alloca %"class.HIR::TypeRef", align 8
  %130 = alloca %"struct.HIR::PathParams", align 8
  %131 = alloca %"class.std::map", align 8
  %132 = alloca %struct.Span, align 8
  %133 = alloca %"class.std::function", align 8
  %134 = alloca %class.anon.486, align 1
  %135 = alloca ptr, align 8
  %136 = alloca %"class.std::function.444", align 8
  %137 = alloca i8, align 1
  %138 = alloca %class.anon.488, align 8
  %139 = alloca i32, align 4
  %140 = alloca %"class.std::function.489", align 8
  %141 = alloca %struct.ImplRef, align 8
  %142 = alloca %"class.HIR::TypeRef", align 8
  %143 = alloca %"struct.HIR::PathParams", align 8
  %144 = alloca %"class.std::map", align 8
  %145 = alloca %"class.std::function.444", align 8
  %146 = alloca ptr, align 8
  %147 = alloca ptr, align 8
  %148 = alloca ptr, align 8
  %149 = alloca i32, align 4
  %150 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %151 = alloca %"struct.HIR::PathParams", align 8
  %152 = alloca %"class.HIR::TypeRef", align 8
  %153 = alloca %struct.ImplRef, align 8
  %154 = alloca %"class.HIR::TypeRef", align 8
  %155 = alloca %"struct.HIR::PathParams", align 8
  %156 = alloca %"class.std::map", 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
  %157 = load ptr, ptr %8, align 8
  %158 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params acquire, align 8
  %159 = icmp eq i8 %158, 0
  br i1 %159, label %160, label %166, !prof !9

160:                                              ; preds = %6
  %161 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #0
  %162 = icmp ne i32 %161, 0
  br i1 %162, label %163, label %166

163:                                              ; preds = %160
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params)
          to label %164 unwind label %210

164:                                              ; preds = %163
  %165 = call i32 @__cxa_atexit(ptr @_ZN3HIR10PathParamsD2Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #0
  br label %166

166:                                              ; preds = %164, %160, %6
  %167 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc acquire, align 8
  %168 = icmp eq i8 %167, 0
  br i1 %168, label %169, label %174, !prof !9

169:                                              ; preds = %166
  %170 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  %171 = icmp ne i32 %170, 0
  br i1 %171, label %172, label %174

172:                                              ; preds = %169
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  %173 = call i32 @__cxa_atexit(ptr @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #0
  br label %174

174:                                              ; preds = %172, %169, %166
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #0
  %175 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %176 = load ptr, ptr %175, align 8, !tbaa !10
  %177 = load ptr, ptr %9, align 8, !tbaa !5
  %178 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %176, ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef @.str.61)
  store ptr %178, ptr %16, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #0
  %179 = getelementptr inbounds %class.TraitResolution, ptr %157, i32 0, i32 2
  %180 = load ptr, ptr %179, align 8, !tbaa !29
  %181 = load ptr, ptr %12, align 8, !tbaa !5
  %182 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %180, ptr noundef nonnull align 8 dereferenceable(8) %181)
  store ptr %182, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %18) #0
  %183 = call noundef zeroext i1 @_Z13debug_enabledv()
  %184 = zext i1 %183 to i64
  %185 = select i1 %183, ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %20) #0
  %186 = getelementptr inbounds %class.anon.447, ptr %20, i32 0, i32 0
  %187 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %187, ptr %186, align 8, !tbaa !5
  %188 = getelementptr inbounds %class.anon.447, ptr %20, i32 0, i32 1
  %189 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %189, ptr %188, align 8, !tbaa !5
  %190 = getelementptr inbounds %class.anon.447, ptr %20, i32 0, i32 2
  %191 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %191, ptr %190, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(24) %20)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %18, ptr noundef %185, ptr noundef %19)
          to label %192 unwind label %214

192:                                              ; preds = %174
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #0
  %193 = load ptr, ptr %10, align 8, !tbaa !5
  %194 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 8
  %195 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %193, ptr noundef nonnull align 8 dereferenceable(8) %194)
          to label %196 unwind label %218

196:                                              ; preds = %192
  br i1 %195, label %197, label %233

197:                                              ; preds = %196
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #0
  %198 = load ptr, ptr %9, align 8, !tbaa !5
  %199 = load ptr, ptr %17, align 8, !tbaa !5
  %200 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %198, ptr noundef nonnull align 8 dereferenceable(8) %199)
          to label %201 unwind label %222

201:                                              ; preds = %197
  store i32 %200, ptr %21, align 4, !tbaa !35
  %202 = load i32, ptr %21, align 4, !tbaa !35
  %203 = icmp ne i32 %202, 2
  br i1 %203, label %204, label %230

204:                                              ; preds = %201
  %205 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %22, ptr noundef null, ptr noundef %205, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %206 unwind label %222

206:                                              ; preds = %204
  %207 = load i32, ptr %21, align 4, !tbaa !35
  %208 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %22, i32 noundef %207)
          to label %209 unwind label %226

209:                                              ; preds = %206
  store i1 %208, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #0
  store i32 1, ptr %23, align 4
  br label %231

210:                                              ; preds = %163
  %211 = landingpad { ptr, i32 }
          cleanup
  %212 = extractvalue { ptr, i32 } %211, 0
  store ptr %212, ptr %14, align 8
  %213 = extractvalue { ptr, i32 } %211, 1
  store i32 %213, ptr %15, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #0
  br label %1647

214:                                              ; preds = %174
  %215 = landingpad { ptr, i32 }
          cleanup
  %216 = extractvalue { ptr, i32 } %215, 0
  store ptr %216, ptr %14, align 8
  %217 = extractvalue { ptr, i32 } %215, 1
  store i32 %217, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %20) #0
  br label %1646

218:                                              ; preds = %1506, %1501, %1403, %1392, %1386, %1364, %1361, %1358, %1337, %1333, %1331, %1328, %1325, %1322, %1319, %1316, %1313, %1307, %845, %839, %684, %682, %679, %676, %673, %559, %557, %554, %551, %548, %545, %542, %517, %513, %511, %508, %505, %502, %499, %496, %484, %478, %325, %293, %280, %277, %274, %271, %265, %233, %192
  %219 = landingpad { ptr, i32 }
          cleanup
  %220 = extractvalue { ptr, i32 } %219, 0
  store ptr %220, ptr %14, align 8
  %221 = extractvalue { ptr, i32 } %219, 1
  store i32 %221, ptr %15, align 4
  br label %1645

222:                                              ; preds = %204, %197
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %14, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %15, align 4
  br label %232

226:                                              ; preds = %206
  %227 = landingpad { ptr, i32 }
          cleanup
  %228 = extractvalue { ptr, i32 } %227, 0
  store ptr %228, ptr %14, align 8
  %229 = extractvalue { ptr, i32 } %227, 1
  store i32 %229, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %22) #0
  br label %232

230:                                              ; preds = %201
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %231

231:                                              ; preds = %230, %209
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #0
  br label %1643

232:                                              ; preds = %226, %222
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #0
  br label %1645

233:                                              ; preds = %196
  %234 = load ptr, ptr %10, align 8, !tbaa !5
  %235 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 5
  %236 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %234, ptr noundef nonnull align 8 dereferenceable(8) %235)
          to label %237 unwind label %218

237:                                              ; preds = %233
  br i1 %236, label %238, label %262

238:                                              ; preds = %237
  call void @llvm.lifetime.start.p0(i64 4, ptr %24) #0
  %239 = load ptr, ptr %9, align 8, !tbaa !5
  %240 = load ptr, ptr %17, align 8, !tbaa !5
  %241 = invoke noundef i32 @_ZNK15TraitResolution12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %239, ptr noundef nonnull align 8 dereferenceable(8) %240)
          to label %242 unwind label %251

242:                                              ; preds = %238
  store i32 %241, ptr %24, align 4, !tbaa !35
  %243 = load i32, ptr %24, align 4, !tbaa !35
  %244 = icmp ne i32 %243, 2
  br i1 %244, label %245, label %259

245:                                              ; preds = %242
  %246 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %25, ptr noundef null, ptr noundef %246, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %247 unwind label %251

247:                                              ; preds = %245
  %248 = load i32, ptr %24, align 4, !tbaa !35
  %249 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %25, i32 noundef %248)
          to label %250 unwind label %255

250:                                              ; preds = %247
  store i1 %249, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %25) #0
  store i32 1, ptr %23, align 4
  br label %260

251:                                              ; preds = %245, %238
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %14, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %15, align 4
  br label %261

255:                                              ; preds = %247
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %14, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %25) #0
  br label %261

259:                                              ; preds = %242
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %260

260:                                              ; preds = %259, %250
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #0
  br label %1643

261:                                              ; preds = %255, %251
  call void @llvm.lifetime.end.p0(i64 4, ptr %24) #0
  br label %1645

262:                                              ; preds = %237
  %263 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %264 = icmp sge i32 %263, 4
  br i1 %264, label %265, label %290

265:                                              ; preds = %262
  %266 = load ptr, ptr %10, align 8, !tbaa !5
  %267 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %268 = load ptr, ptr %267, align 8, !tbaa !10
  %269 = load ptr, ptr %9, align 8, !tbaa !5
  %270 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %268, ptr noundef nonnull align 8 dereferenceable(8) %269, ptr noundef @.str.62)
          to label %271 unwind label %218

271:                                              ; preds = %265
  %272 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %266, ptr noundef nonnull align 8 dereferenceable(8) %270)
          to label %273 unwind label %218

273:                                              ; preds = %271
  br i1 %272, label %274, label %290

274:                                              ; preds = %273
  %275 = load ptr, ptr %17, align 8, !tbaa !5
  %276 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %275)
          to label %277 unwind label %218

277:                                              ; preds = %274
  %278 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %276)
          to label %279 unwind label %218

279:                                              ; preds = %277
  br i1 %278, label %280, label %289

280:                                              ; preds = %279
  %281 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %26, ptr noundef null, ptr noundef %281, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %282 unwind label %218

282:                                              ; preds = %280
  %283 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %26, i32 noundef 0)
          to label %284 unwind label %285

284:                                              ; preds = %282
  store i1 %283, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #0
  store i32 1, ptr %23, align 4
  br label %1643

285:                                              ; preds = %282
  %286 = landingpad { ptr, i32 }
          cleanup
  %287 = extractvalue { ptr, i32 } %286, 0
  store ptr %287, ptr %14, align 8
  %288 = extractvalue { ptr, i32 } %286, 1
  store i32 %288, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %26) #0
  br label %1645

289:                                              ; preds = %279
  br label %290

290:                                              ; preds = %289, %273, %262
  %291 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %292 = icmp sge i32 %291, 1
  br i1 %292, label %293, label %322

293:                                              ; preds = %290
  %294 = load ptr, ptr %10, align 8, !tbaa !5
  %295 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 6
  %296 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %295)
          to label %297 unwind label %218

297:                                              ; preds = %293
  br i1 %296, label %298, label %322

298:                                              ; preds = %297
  call void @llvm.lifetime.start.p0(i64 4, ptr %27) #0
  %299 = load ptr, ptr %9, align 8, !tbaa !5
  %300 = load ptr, ptr %17, align 8, !tbaa !5
  %301 = invoke noundef i32 @_ZNK15TraitResolution13type_is_cloneERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef nonnull align 8 dereferenceable(8) %300)
          to label %302 unwind label %311

302:                                              ; preds = %298
  store i32 %301, ptr %27, align 4, !tbaa !35
  %303 = load i32, ptr %27, align 4, !tbaa !35
  %304 = icmp ne i32 %303, 2
  br i1 %304, label %305, label %319

305:                                              ; preds = %302
  %306 = load ptr, ptr %17, 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 %306, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %307 unwind label %311

307:                                              ; preds = %305
  %308 = load i32, ptr %27, align 4, !tbaa !35
  %309 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %28, i32 noundef %308)
          to label %310 unwind label %315

310:                                              ; preds = %307
  store i1 %309, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #0
  store i32 1, ptr %23, align 4
  br label %320

311:                                              ; preds = %305, %298
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %14, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %15, align 4
  br label %321

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %14, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %28) #0
  br label %321

319:                                              ; preds = %302
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %320

320:                                              ; preds = %319, %310
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #0
  br label %1643

321:                                              ; preds = %315, %311
  call void @llvm.lifetime.end.p0(i64 4, ptr %27) #0
  br label %1645

322:                                              ; preds = %297, %290
  %323 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %324 = icmp sge i32 %323, 2
  br i1 %324, label %325, label %475

325:                                              ; preds = %322
  %326 = load ptr, ptr %10, align 8, !tbaa !5
  %327 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 15
  %328 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %326, ptr noundef nonnull align 8 dereferenceable(8) %327)
          to label %329 unwind label %218

329:                                              ; preds = %325
  br i1 %328, label %330, label %475

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #0
  %331 = load ptr, ptr %17, align 8, !tbaa !5
  %332 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %331)
          to label %333 unwind label %384

333:                                              ; preds = %330
  %334 = invoke noundef ptr @_ZNK3HIR8TypeData13opt_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %332)
          to label %335 unwind label %384

335:                                              ; preds = %333
  store ptr %334, ptr %29, align 8, !tbaa !5
  %336 = load ptr, ptr %29, align 8, !tbaa !5
  %337 = icmp ne ptr %336, null
  br i1 %337, label %338, label %470

338:                                              ; preds = %335
  call void @llvm.lifetime.start.p0(i64 48, ptr %30) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %31) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %32) #0
  %339 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %32, i32 0, i32 0
  %340 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %33, ptr noundef nonnull align 8 dereferenceable(8) %340)
          to label %341 unwind label %388

341:                                              ; preds = %338
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %339, ptr noundef %33)
          to label %342 unwind label %392

342:                                              ; preds = %341
  %343 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %32, i32 0, i32 1
  %344 = load ptr, ptr %29, align 8, !tbaa !5
  %345 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %344, i32 0, i32 0
  %346 = load ptr, ptr %345, align 8, !tbaa !39
  %347 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %346, i32 0, i32 3
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %343, ptr noundef nonnull align 8 dereferenceable(8) %347)
          to label %348 unwind label %396

348:                                              ; preds = %342
  invoke void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.450") align 8 %31, ptr noundef nonnull align 1 dereferenceable(6) @.str.63, ptr noundef nonnull align 8 dereferenceable(40) %32)
          to label %349 unwind label %400

349:                                              ; preds = %348
  %350 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) %31)
          to label %351 unwind label %404

351:                                              ; preds = %349
  %352 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 0
  %353 = extractvalue { ptr, i8 } %350, 0
  store ptr %353, ptr %352, align 8
  %354 = getelementptr inbounds { ptr, i8 }, ptr %34, i32 0, i32 1
  %355 = extractvalue { ptr, i8 } %350, 1
  store i8 %355, ptr %354, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %35) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %36) #0
  %356 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %36, i32 0, i32 0
  %357 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %37, ptr noundef nonnull align 8 dereferenceable(8) %357)
          to label %358 unwind label %411

358:                                              ; preds = %351
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %356, ptr noundef %37)
          to label %359 unwind label %415

359:                                              ; preds = %358
  %360 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %36, i32 0, i32 1
  %361 = load ptr, ptr %29, align 8, !tbaa !5
  %362 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %361, i32 0, i32 0
  %363 = load ptr, ptr %362, align 8, !tbaa !39
  %364 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %363, i32 0, i32 1
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %360, ptr noundef nonnull align 8 dereferenceable(8) %364)
          to label %365 unwind label %419

365:                                              ; preds = %359
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind writable sret(%"struct.std::pair.450") align 8 %35, ptr noundef nonnull align 1 dereferenceable(7) @.str.64, ptr noundef nonnull align 8 dereferenceable(40) %36)
          to label %366 unwind label %423

366:                                              ; preds = %365
  %367 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %30, ptr noundef nonnull align 8 dereferenceable(48) %35)
          to label %368 unwind label %427

368:                                              ; preds = %366
  %369 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 0
  %370 = extractvalue { ptr, i8 } %367, 0
  store ptr %370, ptr %369, align 8
  %371 = getelementptr inbounds { ptr, i8 }, ptr %38, i32 0, i32 1
  %372 = extractvalue { ptr, i8 } %367, 1
  store i8 %372, ptr %371, align 8
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #0
  call void @llvm.lifetime.start.p0(i64 24, ptr %39) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %373 unwind label %434

373:                                              ; preds = %368
  %374 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %375 = icmp sge i32 %374, 4
  br i1 %375, label %376, label %446

376:                                              ; preds = %373
  %377 = getelementptr inbounds %"struct.HIR::PathParams", ptr %39, i32 0, i32 1
  %378 = load ptr, ptr %29, align 8, !tbaa !5
  %379 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %378, i32 0, i32 0
  %380 = load ptr, ptr %379, align 8, !tbaa !39
  %381 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %380, i32 0, i32 2
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %40, ptr noundef nonnull align 8 dereferenceable(8) %381)
          to label %382 unwind label %438

382:                                              ; preds = %376
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %377, ptr noundef %40)
          to label %383 unwind label %442

383:                                              ; preds = %382
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #0
  br label %446

384:                                              ; preds = %333, %330
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %14, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %15, align 4
  br label %474

388:                                              ; preds = %338
  %389 = landingpad { ptr, i32 }
          cleanup
  %390 = extractvalue { ptr, i32 } %389, 0
  store ptr %390, ptr %14, align 8
  %391 = extractvalue { ptr, i32 } %389, 1
  store i32 %391, ptr %15, align 4
  br label %410

392:                                              ; preds = %341
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %14, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %15, align 4
  br label %409

396:                                              ; preds = %342
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %14, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %15, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %339) #0
  br label %409

400:                                              ; preds = %348
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %14, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %15, align 4
  br label %408

404:                                              ; preds = %349
  %405 = landingpad { ptr, i32 }
          cleanup
  %406 = extractvalue { ptr, i32 } %405, 0
  store ptr %406, ptr %14, align 8
  %407 = extractvalue { ptr, i32 } %405, 1
  store i32 %407, ptr %15, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #0
  br label %408

408:                                              ; preds = %404, %400
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #0
  br label %409

409:                                              ; preds = %408, %396, %392
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %33) #0
  br label %410

410:                                              ; preds = %409, %388
  call void @llvm.lifetime.end.p0(i64 40, ptr %32) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %31) #0
  br label %469

411:                                              ; preds = %351
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %14, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %15, align 4
  br label %433

415:                                              ; preds = %358
  %416 = landingpad { ptr, i32 }
          cleanup
  %417 = extractvalue { ptr, i32 } %416, 0
  store ptr %417, ptr %14, align 8
  %418 = extractvalue { ptr, i32 } %416, 1
  store i32 %418, ptr %15, align 4
  br label %432

419:                                              ; preds = %359
  %420 = landingpad { ptr, i32 }
          cleanup
  %421 = extractvalue { ptr, i32 } %420, 0
  store ptr %421, ptr %14, align 8
  %422 = extractvalue { ptr, i32 } %420, 1
  store i32 %422, ptr %15, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %356) #0
  br label %432

423:                                              ; preds = %365
  %424 = landingpad { ptr, i32 }
          cleanup
  %425 = extractvalue { ptr, i32 } %424, 0
  store ptr %425, ptr %14, align 8
  %426 = extractvalue { ptr, i32 } %424, 1
  store i32 %426, ptr %15, align 4
  br label %431

427:                                              ; preds = %366
  %428 = landingpad { ptr, i32 }
          cleanup
  %429 = extractvalue { ptr, i32 } %428, 0
  store ptr %429, ptr %14, align 8
  %430 = extractvalue { ptr, i32 } %428, 1
  store i32 %430, ptr %15, align 4
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %35) #0
  br label %431

431:                                              ; preds = %427, %423
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %36) #0
  br label %432

432:                                              ; preds = %431, %419, %415
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #0
  br label %433

433:                                              ; preds = %432, %411
  call void @llvm.lifetime.end.p0(i64 40, ptr %36) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %35) #0
  br label %469

434:                                              ; preds = %368
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %14, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %15, align 4
  br label %468

438:                                              ; preds = %446, %376
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %14, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %15, align 4
  br label %467

442:                                              ; preds = %382
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %14, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #0
  br label %467

446:                                              ; preds = %383, %373
  %447 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(8) %447)
          to label %448 unwind label %438

448:                                              ; preds = %446
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %43, ptr noundef nonnull align 8 dereferenceable(24) %39)
          to label %449 unwind label %453

449:                                              ; preds = %448
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %44, ptr noundef nonnull align 8 dereferenceable(48) %30) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %41, ptr noundef %42, ptr noundef %43, ptr noundef %44)
          to label %450 unwind label %457

450:                                              ; preds = %449
  %451 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %41, i32 noundef 0)
          to label %452 unwind label %461

452:                                              ; preds = %450
  store i1 %451, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %41) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  store i32 1, ptr %23, align 4
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #0
  br label %471

453:                                              ; preds = %448
  %454 = landingpad { ptr, i32 }
          cleanup
  %455 = extractvalue { ptr, i32 } %454, 0
  store ptr %455, ptr %14, align 8
  %456 = extractvalue { ptr, i32 } %454, 1
  store i32 %456, ptr %15, align 4
  br label %466

457:                                              ; preds = %449
  %458 = landingpad { ptr, i32 }
          cleanup
  %459 = extractvalue { ptr, i32 } %458, 0
  store ptr %459, ptr %14, align 8
  %460 = extractvalue { ptr, i32 } %458, 1
  store i32 %460, ptr %15, align 4
  br label %465

461:                                              ; preds = %450
  %462 = landingpad { ptr, i32 }
          cleanup
  %463 = extractvalue { ptr, i32 } %462, 0
  store ptr %463, ptr %14, align 8
  %464 = extractvalue { ptr, i32 } %462, 1
  store i32 %464, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %41) #0
  br label %465

465:                                              ; preds = %461, %457
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %43) #0
  br label %466

466:                                              ; preds = %465, %453
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #0
  br label %467

467:                                              ; preds = %466, %442, %438
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %39) #0
  br label %468

468:                                              ; preds = %467, %434
  call void @llvm.lifetime.end.p0(i64 24, ptr %39) #0
  br label %469

469:                                              ; preds = %468, %433, %410
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %30) #0
  br label %474

470:                                              ; preds = %335
  store i32 0, ptr %23, align 4
  br label %471

471:                                              ; preds = %470, %452
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  %472 = load i32, ptr %23, align 4
  switch i32 %472, label %1643 [
    i32 0, label %473
  ]

473:                                              ; preds = %471
  br label %475

474:                                              ; preds = %469, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #0
  br label %1645

475:                                              ; preds = %473, %329, %322
  %476 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %477 = icmp sge i32 %476, 3
  br i1 %477, label %478, label %836

478:                                              ; preds = %475
  %479 = load ptr, ptr %10, align 8, !tbaa !5
  %480 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %481 = load ptr, ptr %480, align 8, !tbaa !10
  %482 = load ptr, ptr %9, align 8, !tbaa !5
  %483 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %481, ptr noundef nonnull align 8 dereferenceable(8) %482, ptr noundef @.str.65)
          to label %484 unwind label %218

484:                                              ; preds = %478
  %485 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %479, ptr noundef nonnull align 8 dereferenceable(8) %483)
          to label %486 unwind label %218

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

487:                                              ; preds = %486
  %488 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant acquire, align 8
  %489 = icmp eq i8 %488, 0
  br i1 %489, label %490, label %496, !prof !9

490:                                              ; preds = %487
  %491 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #0
  %492 = icmp ne i32 %491, 0
  br i1 %492, label %493, label %496

493:                                              ; preds = %490
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef @.str.66)
          to label %494 unwind label %524

494:                                              ; preds = %493
  %495 = call i32 @__cxa_atexit(ptr @_ZN8RcStringD1Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #0
  br label %496

496:                                              ; preds = %494, %490, %487
  %497 = load ptr, ptr %17, align 8, !tbaa !5
  %498 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %497)
          to label %499 unwind label %218

499:                                              ; preds = %496
  %500 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %498)
          to label %501 unwind label %218

501:                                              ; preds = %499
  br i1 %500, label %517, label %502

502:                                              ; preds = %501
  %503 = load ptr, ptr %17, align 8, !tbaa !5
  %504 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %503)
          to label %505 unwind label %218

505:                                              ; preds = %502
  %506 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %504)
          to label %507 unwind label %218

507:                                              ; preds = %505
  br i1 %506, label %508, label %542

508:                                              ; preds = %507
  %509 = load ptr, ptr %17, align 8, !tbaa !5
  %510 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %509)
          to label %511 unwind label %218

511:                                              ; preds = %508
  %512 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %510)
          to label %513 unwind label %218

513:                                              ; preds = %511
  %514 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %512, i32 0, i32 1
  %515 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %514)
          to label %516 unwind label %218

516:                                              ; preds = %513
  br i1 %515, label %517, label %542

517:                                              ; preds = %516, %501
  %518 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(8) %518)
          to label %519 unwind label %218

519:                                              ; preds = %517
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %47)
          to label %520 unwind label %528

520:                                              ; preds = %519
  call void @llvm.memset.p0.i64(ptr align 8 %48, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %45, ptr noundef %46, ptr noundef %47, ptr noundef %48)
          to label %521 unwind label %532

521:                                              ; preds = %520
  %522 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %45, i32 noundef 1)
          to label %523 unwind label %536

523:                                              ; preds = %521
  store i1 %522, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %45) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #0
  store i32 1, ptr %23, align 4
  br label %1643

524:                                              ; preds = %493
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %14, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %15, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #0
  br label %1645

528:                                              ; preds = %519
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %14, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %15, align 4
  br label %541

532:                                              ; preds = %520
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %14, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %15, align 4
  br label %540

536:                                              ; preds = %521
  %537 = landingpad { ptr, i32 }
          cleanup
  %538 = extractvalue { ptr, i32 } %537, 0
  store ptr %538, ptr %14, align 8
  %539 = extractvalue { ptr, i32 } %537, 1
  store i32 %539, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %45) #0
  br label %540

540:                                              ; preds = %536, %532
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %47) #0
  br label %541

541:                                              ; preds = %540, %528
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #0
  br label %1645

542:                                              ; preds = %516, %507
  %543 = load ptr, ptr %17, align 8, !tbaa !5
  %544 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %543)
          to label %545 unwind label %218

545:                                              ; preds = %542
  %546 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %544)
          to label %547 unwind label %218

547:                                              ; preds = %545
  br i1 %546, label %563, label %548

548:                                              ; preds = %547
  %549 = load ptr, ptr %17, align 8, !tbaa !5
  %550 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %549)
          to label %551 unwind label %218

551:                                              ; preds = %548
  %552 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %550)
          to label %553 unwind label %218

553:                                              ; preds = %551
  br i1 %552, label %554, label %673

554:                                              ; preds = %553
  %555 = load ptr, ptr %17, align 8, !tbaa !5
  %556 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %555)
          to label %557 unwind label %218

557:                                              ; preds = %554
  %558 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %556)
          to label %559 unwind label %218

559:                                              ; preds = %557
  %560 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %558, i32 0, i32 1
  %561 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %560)
          to label %562 unwind label %218

562:                                              ; preds = %559
  br i1 %561, label %563, label %673

563:                                              ; preds = %562, %547
  call void @llvm.lifetime.start.p0(i64 48, ptr %49) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %50) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %51) #0
  %564 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %51, i32 0, i32 0
  %565 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %52, ptr noundef nonnull align 8 dereferenceable(8) %565)
          to label %566 unwind label %592

566:                                              ; preds = %563
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %564, ptr noundef %52)
          to label %567 unwind label %596

567:                                              ; preds = %566
  store i1 true, ptr %61, align 1
  %568 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %51, i32 0, i32 1
  %569 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %54, ptr noundef nonnull align 8 dereferenceable(8) %569)
          to label %570 unwind label %600

570:                                              ; preds = %567
  %571 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) %571)
          to label %572 unwind label %604

572:                                              ; preds = %570
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef %56)
          to label %573 unwind label %608

573:                                              ; preds = %572
  invoke void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %57, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant)
          to label %574 unwind label %612

574:                                              ; preds = %573
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %58)
          to label %575 unwind label %616

575:                                              ; preds = %574
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %53, ptr noundef %54, ptr noundef %55, ptr noundef %57, ptr noundef %58)
          to label %576 unwind label %620

576:                                              ; preds = %575
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind writable sret(%"class.HIR::TypePathBinding") align 8 %59)
          to label %577 unwind label %624

577:                                              ; preds = %576
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %568, ptr noundef %53, ptr noundef %59)
          to label %578 unwind label %628

578:                                              ; preds = %577
  store i1 false, ptr %61, align 1
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.457") align 8 %50, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %51)
          to label %579 unwind label %632

579:                                              ; preds = %578
  %580 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %49, ptr noundef nonnull align 8 dereferenceable(48) %50)
          to label %581 unwind label %636

581:                                              ; preds = %579
  %582 = getelementptr inbounds { ptr, i8 }, ptr %62, i32 0, i32 0
  %583 = extractvalue { ptr, i8 } %580, 0
  store ptr %583, ptr %582, align 8
  %584 = getelementptr inbounds { ptr, i8 }, ptr %62, i32 0, i32 1
  %585 = extractvalue { ptr, i8 } %580, 1
  store i8 %585, ptr %584, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %50) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #0
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %50) #0
  %586 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %64, ptr noundef nonnull align 8 dereferenceable(8) %586)
          to label %587 unwind label %654

587:                                              ; preds = %581
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %65)
          to label %588 unwind label %658

588:                                              ; preds = %587
  call void @llvm.memset.p0.i64(ptr align 8 %66, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %63, ptr noundef %64, ptr noundef %65, ptr noundef %66)
          to label %589 unwind label %662

589:                                              ; preds = %588
  %590 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %63, i32 noundef 0)
          to label %591 unwind label %666

591:                                              ; preds = %589
  store i1 %590, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %49) #0
  br label %1643

592:                                              ; preds = %563
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %14, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %15, align 4
  br label %653

596:                                              ; preds = %566
  %597 = landingpad { ptr, i32 }
          cleanup
  %598 = extractvalue { ptr, i32 } %597, 0
  store ptr %598, ptr %14, align 8
  %599 = extractvalue { ptr, i32 } %597, 1
  store i32 %599, ptr %15, align 4
  br label %652

600:                                              ; preds = %567
  %601 = landingpad { ptr, i32 }
          cleanup
  %602 = extractvalue { ptr, i32 } %601, 0
  store ptr %602, ptr %14, align 8
  %603 = extractvalue { ptr, i32 } %601, 1
  store i32 %603, ptr %15, align 4
  br label %648

604:                                              ; preds = %570
  %605 = landingpad { ptr, i32 }
          cleanup
  %606 = extractvalue { ptr, i32 } %605, 0
  store ptr %606, ptr %14, align 8
  %607 = extractvalue { ptr, i32 } %605, 1
  store i32 %607, ptr %15, align 4
  br label %647

608:                                              ; preds = %572
  %609 = landingpad { ptr, i32 }
          cleanup
  %610 = extractvalue { ptr, i32 } %609, 0
  store ptr %610, ptr %14, align 8
  %611 = extractvalue { ptr, i32 } %609, 1
  store i32 %611, ptr %15, align 4
  br label %646

612:                                              ; preds = %573
  %613 = landingpad { ptr, i32 }
          cleanup
  %614 = extractvalue { ptr, i32 } %613, 0
  store ptr %614, ptr %14, align 8
  %615 = extractvalue { ptr, i32 } %613, 1
  store i32 %615, ptr %15, align 4
  br label %645

616:                                              ; preds = %574
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %14, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %15, align 4
  br label %644

620:                                              ; preds = %575
  %621 = landingpad { ptr, i32 }
          cleanup
  %622 = extractvalue { ptr, i32 } %621, 0
  store ptr %622, ptr %14, align 8
  %623 = extractvalue { ptr, i32 } %621, 1
  store i32 %623, ptr %15, align 4
  br label %643

624:                                              ; preds = %576
  %625 = landingpad { ptr, i32 }
          cleanup
  %626 = extractvalue { ptr, i32 } %625, 0
  store ptr %626, ptr %14, align 8
  %627 = extractvalue { ptr, i32 } %625, 1
  store i32 %627, ptr %15, align 4
  br label %642

628:                                              ; preds = %577
  %629 = landingpad { ptr, i32 }
          cleanup
  %630 = extractvalue { ptr, i32 } %629, 0
  store ptr %630, ptr %14, align 8
  %631 = extractvalue { ptr, i32 } %629, 1
  store i32 %631, ptr %15, align 4
  br label %641

632:                                              ; preds = %578
  %633 = landingpad { ptr, i32 }
          cleanup
  %634 = extractvalue { ptr, i32 } %633, 0
  store ptr %634, ptr %14, align 8
  %635 = extractvalue { ptr, i32 } %633, 1
  store i32 %635, ptr %15, align 4
  br label %640

636:                                              ; preds = %579
  %637 = landingpad { ptr, i32 }
          cleanup
  %638 = extractvalue { ptr, i32 } %637, 0
  store ptr %638, ptr %14, align 8
  %639 = extractvalue { ptr, i32 } %637, 1
  store i32 %639, ptr %15, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %50) #0
  br label %640

640:                                              ; preds = %636, %632
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %51) #0
  br label %641

641:                                              ; preds = %640, %628
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %59) #0
  br label %642

642:                                              ; preds = %641, %624
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %53) #0
  br label %643

643:                                              ; preds = %642, %620
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %58) #0
  br label %644

644:                                              ; preds = %643, %616
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %57) #0
  br label %645

645:                                              ; preds = %644, %612
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #0
  br label %646

646:                                              ; preds = %645, %608
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %56) #0
  br label %647

647:                                              ; preds = %646, %604
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #0
  br label %648

648:                                              ; preds = %647, %600
  %649 = load i1, ptr %61, align 1
  br i1 %649, label %650, label %651

650:                                              ; preds = %648
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %564) #0
  br label %651

651:                                              ; preds = %650, %648
  br label %652

652:                                              ; preds = %651, %596
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #0
  br label %653

653:                                              ; preds = %652, %592
  call void @llvm.lifetime.end.p0(i64 40, ptr %51) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %50) #0
  br label %672

654:                                              ; preds = %581
  %655 = landingpad { ptr, i32 }
          cleanup
  %656 = extractvalue { ptr, i32 } %655, 0
  store ptr %656, ptr %14, align 8
  %657 = extractvalue { ptr, i32 } %655, 1
  store i32 %657, ptr %15, align 4
  br label %672

658:                                              ; preds = %587
  %659 = landingpad { ptr, i32 }
          cleanup
  %660 = extractvalue { ptr, i32 } %659, 0
  store ptr %660, ptr %14, align 8
  %661 = extractvalue { ptr, i32 } %659, 1
  store i32 %661, ptr %15, align 4
  br label %671

662:                                              ; preds = %588
  %663 = landingpad { ptr, i32 }
          cleanup
  %664 = extractvalue { ptr, i32 } %663, 0
  store ptr %664, ptr %14, align 8
  %665 = extractvalue { ptr, i32 } %663, 1
  store i32 %665, ptr %15, align 4
  br label %670

666:                                              ; preds = %589
  %667 = landingpad { ptr, i32 }
          cleanup
  %668 = extractvalue { ptr, i32 } %667, 0
  store ptr %668, ptr %14, align 8
  %669 = extractvalue { ptr, i32 } %667, 1
  store i32 %669, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %63) #0
  br label %670

670:                                              ; preds = %666, %662
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %65) #0
  br label %671

671:                                              ; preds = %670, %658
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %64) #0
  br label %672

672:                                              ; preds = %671, %654, %653
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %49) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %49) #0
  br label %1645

673:                                              ; preds = %562, %553
  %674 = load ptr, ptr %17, align 8, !tbaa !5
  %675 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %674)
          to label %676 unwind label %218

676:                                              ; preds = %673
  %677 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %675)
          to label %678 unwind label %218

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

679:                                              ; preds = %678
  %680 = load ptr, ptr %17, align 8, !tbaa !5
  %681 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %680)
          to label %682 unwind label %218

682:                                              ; preds = %679
  %683 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %681)
          to label %684 unwind label %218

684:                                              ; preds = %682
  %685 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %683, i32 0, i32 1
  %686 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %685)
          to label %687 unwind label %218

687:                                              ; preds = %684
  br i1 %686, label %688, label %774

688:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #0
  %689 = load ptr, ptr %17, align 8, !tbaa !5
  %690 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %689)
          to label %691 unwind label %722

691:                                              ; preds = %688
  %692 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %690)
          to label %693 unwind label %722

693:                                              ; preds = %691
  %694 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %692, i32 0, i32 1
  %695 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %694)
          to label %696 unwind label %722

696:                                              ; preds = %693
  %697 = load ptr, ptr %695, align 8, !tbaa !5
  store ptr %697, ptr %67, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #0
  %698 = load ptr, ptr %67, align 8, !tbaa !5
  %699 = load ptr, ptr %67, align 8, !tbaa !5
  %700 = getelementptr inbounds %"class.HIR::Enum", ptr %699, i32 0, i32 2
  %701 = load i32, ptr %700, align 4, !tbaa !41
  invoke void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %68, i32 noundef %701)
          to label %702 unwind label %726

702:                                              ; preds = %696
  call void @llvm.lifetime.start.p0(i64 48, ptr %69) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %70) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %71) #0
  %703 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %71, i32 0, i32 0
  %704 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %704)
          to label %705 unwind label %730

705:                                              ; preds = %702
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %703, ptr noundef %72)
          to label %706 unwind label %734

706:                                              ; preds = %705
  %707 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %71, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %707, ptr noundef nonnull align 8 dereferenceable(8) %68)
          to label %708 unwind label %738

708:                                              ; preds = %706
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.457") align 8 %70, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %71)
          to label %709 unwind label %742

709:                                              ; preds = %708
  %710 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %69, ptr noundef nonnull align 8 dereferenceable(48) %70)
          to label %711 unwind label %746

711:                                              ; preds = %709
  %712 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 0
  %713 = extractvalue { ptr, i8 } %710, 0
  store ptr %713, ptr %712, align 8
  %714 = getelementptr inbounds { ptr, i8 }, ptr %73, i32 0, i32 1
  %715 = extractvalue { ptr, i8 } %710, 1
  store i8 %715, ptr %714, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %71) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #0
  %716 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %75, ptr noundef nonnull align 8 dereferenceable(8) %716)
          to label %717 unwind label %753

717:                                              ; preds = %711
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %76)
          to label %718 unwind label %757

718:                                              ; preds = %717
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %77, ptr noundef nonnull align 8 dereferenceable(48) %69) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %74, ptr noundef %75, ptr noundef %76, ptr noundef %77)
          to label %719 unwind label %761

719:                                              ; preds = %718
  %720 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %74, i32 noundef 0)
          to label %721 unwind label %765

721:                                              ; preds = %719
  store i1 %720, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %74) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %69) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %1643

722:                                              ; preds = %693, %691, %688
  %723 = landingpad { ptr, i32 }
          cleanup
  %724 = extractvalue { ptr, i32 } %723, 0
  store ptr %724, ptr %14, align 8
  %725 = extractvalue { ptr, i32 } %723, 1
  store i32 %725, ptr %15, align 4
  br label %773

726:                                              ; preds = %696
  %727 = landingpad { ptr, i32 }
          cleanup
  %728 = extractvalue { ptr, i32 } %727, 0
  store ptr %728, ptr %14, align 8
  %729 = extractvalue { ptr, i32 } %727, 1
  store i32 %729, ptr %15, align 4
  br label %772

730:                                              ; preds = %702
  %731 = landingpad { ptr, i32 }
          cleanup
  %732 = extractvalue { ptr, i32 } %731, 0
  store ptr %732, ptr %14, align 8
  %733 = extractvalue { ptr, i32 } %731, 1
  store i32 %733, ptr %15, align 4
  br label %752

734:                                              ; preds = %705
  %735 = landingpad { ptr, i32 }
          cleanup
  %736 = extractvalue { ptr, i32 } %735, 0
  store ptr %736, ptr %14, align 8
  %737 = extractvalue { ptr, i32 } %735, 1
  store i32 %737, ptr %15, align 4
  br label %751

738:                                              ; preds = %706
  %739 = landingpad { ptr, i32 }
          cleanup
  %740 = extractvalue { ptr, i32 } %739, 0
  store ptr %740, ptr %14, align 8
  %741 = extractvalue { ptr, i32 } %739, 1
  store i32 %741, ptr %15, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %703) #0
  br label %751

742:                                              ; preds = %708
  %743 = landingpad { ptr, i32 }
          cleanup
  %744 = extractvalue { ptr, i32 } %743, 0
  store ptr %744, ptr %14, align 8
  %745 = extractvalue { ptr, i32 } %743, 1
  store i32 %745, ptr %15, align 4
  br label %750

746:                                              ; preds = %709
  %747 = landingpad { ptr, i32 }
          cleanup
  %748 = extractvalue { ptr, i32 } %747, 0
  store ptr %748, ptr %14, align 8
  %749 = extractvalue { ptr, i32 } %747, 1
  store i32 %749, ptr %15, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %70) #0
  br label %750

750:                                              ; preds = %746, %742
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %71) #0
  br label %751

751:                                              ; preds = %750, %738, %734
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #0
  br label %752

752:                                              ; preds = %751, %730
  call void @llvm.lifetime.end.p0(i64 40, ptr %71) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %70) #0
  br label %771

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

757:                                              ; preds = %717
  %758 = landingpad { ptr, i32 }
          cleanup
  %759 = extractvalue { ptr, i32 } %758, 0
  store ptr %759, ptr %14, align 8
  %760 = extractvalue { ptr, i32 } %758, 1
  store i32 %760, ptr %15, align 4
  br label %770

761:                                              ; preds = %718
  %762 = landingpad { ptr, i32 }
          cleanup
  %763 = extractvalue { ptr, i32 } %762, 0
  store ptr %763, ptr %14, align 8
  %764 = extractvalue { ptr, i32 } %762, 1
  store i32 %764, ptr %15, align 4
  br label %769

765:                                              ; preds = %719
  %766 = landingpad { ptr, i32 }
          cleanup
  %767 = extractvalue { ptr, i32 } %766, 0
  store ptr %767, ptr %14, align 8
  %768 = extractvalue { ptr, i32 } %766, 1
  store i32 %768, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %74) #0
  br label %769

769:                                              ; preds = %765, %761
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %77) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %76) #0
  br label %770

770:                                              ; preds = %769, %757
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #0
  br label %771

771:                                              ; preds = %770, %753, %752
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %69) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %69) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #0
  br label %772

772:                                              ; preds = %771, %726
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #0
  br label %773

773:                                              ; preds = %772, %722
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #0
  br label %1645

774:                                              ; preds = %687, %678
  call void @llvm.lifetime.start.p0(i64 48, ptr %78) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #0
  call void @llvm.lifetime.start.p0(i64 48, ptr %79) #0
  call void @llvm.lifetime.start.p0(i64 40, ptr %80) #0
  %775 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %80, i32 0, i32 0
  %776 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %776)
          to label %777 unwind label %794

777:                                              ; preds = %774
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %775, ptr noundef %81)
          to label %778 unwind label %798

778:                                              ; preds = %777
  %779 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %80, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %779)
          to label %780 unwind label %802

780:                                              ; preds = %778
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind writable sret(%"struct.std::pair.457") align 8 %79, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %80)
          to label %781 unwind label %806

781:                                              ; preds = %780
  %782 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %78, ptr noundef nonnull align 8 dereferenceable(48) %79)
          to label %783 unwind label %810

783:                                              ; preds = %781
  %784 = getelementptr inbounds { ptr, i8 }, ptr %82, i32 0, i32 0
  %785 = extractvalue { ptr, i8 } %782, 0
  store ptr %785, ptr %784, align 8
  %786 = getelementptr inbounds { ptr, i8 }, ptr %82, i32 0, i32 1
  %787 = extractvalue { ptr, i8 } %782, 1
  store i8 %787, ptr %786, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %79) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %80) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %79) #0
  %788 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %84, ptr noundef nonnull align 8 dereferenceable(8) %788)
          to label %789 unwind label %817

789:                                              ; preds = %783
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %85)
          to label %790 unwind label %821

790:                                              ; preds = %789
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %86, ptr noundef nonnull align 8 dereferenceable(48) %78) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %83, ptr noundef %84, ptr noundef %85, ptr noundef %86)
          to label %791 unwind label %825

791:                                              ; preds = %790
  %792 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %83, i32 noundef 0)
          to label %793 unwind label %829

793:                                              ; preds = %791
  store i1 %792, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %83) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #0
  br label %1643

794:                                              ; preds = %774
  %795 = landingpad { ptr, i32 }
          cleanup
  %796 = extractvalue { ptr, i32 } %795, 0
  store ptr %796, ptr %14, align 8
  %797 = extractvalue { ptr, i32 } %795, 1
  store i32 %797, ptr %15, align 4
  br label %816

798:                                              ; preds = %777
  %799 = landingpad { ptr, i32 }
          cleanup
  %800 = extractvalue { ptr, i32 } %799, 0
  store ptr %800, ptr %14, align 8
  %801 = extractvalue { ptr, i32 } %799, 1
  store i32 %801, ptr %15, align 4
  br label %815

802:                                              ; preds = %778
  %803 = landingpad { ptr, i32 }
          cleanup
  %804 = extractvalue { ptr, i32 } %803, 0
  store ptr %804, ptr %14, align 8
  %805 = extractvalue { ptr, i32 } %803, 1
  store i32 %805, ptr %15, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %775) #0
  br label %815

806:                                              ; preds = %780
  %807 = landingpad { ptr, i32 }
          cleanup
  %808 = extractvalue { ptr, i32 } %807, 0
  store ptr %808, ptr %14, align 8
  %809 = extractvalue { ptr, i32 } %807, 1
  store i32 %809, ptr %15, align 4
  br label %814

810:                                              ; preds = %781
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %14, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %15, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %79) #0
  br label %814

814:                                              ; preds = %810, %806
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #0
  br label %815

815:                                              ; preds = %814, %802, %798
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #0
  br label %816

816:                                              ; preds = %815, %794
  call void @llvm.lifetime.end.p0(i64 40, ptr %80) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %79) #0
  br label %835

817:                                              ; preds = %783
  %818 = landingpad { ptr, i32 }
          cleanup
  %819 = extractvalue { ptr, i32 } %818, 0
  store ptr %819, ptr %14, align 8
  %820 = extractvalue { ptr, i32 } %818, 1
  store i32 %820, ptr %15, align 4
  br label %835

821:                                              ; preds = %789
  %822 = landingpad { ptr, i32 }
          cleanup
  %823 = extractvalue { ptr, i32 } %822, 0
  store ptr %823, ptr %14, align 8
  %824 = extractvalue { ptr, i32 } %822, 1
  store i32 %824, ptr %15, align 4
  br label %834

825:                                              ; preds = %790
  %826 = landingpad { ptr, i32 }
          cleanup
  %827 = extractvalue { ptr, i32 } %826, 0
  store ptr %827, ptr %14, align 8
  %828 = extractvalue { ptr, i32 } %826, 1
  store i32 %828, ptr %15, align 4
  br label %833

829:                                              ; preds = %791
  %830 = landingpad { ptr, i32 }
          cleanup
  %831 = extractvalue { ptr, i32 } %830, 0
  store ptr %831, ptr %14, align 8
  %832 = extractvalue { ptr, i32 } %830, 1
  store i32 %832, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %83) #0
  br label %833

833:                                              ; preds = %829, %825
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %85) #0
  br label %834

834:                                              ; preds = %833, %821
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #0
  br label %835

835:                                              ; preds = %834, %817, %816
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #0
  br label %1645

836:                                              ; preds = %486, %475
  %837 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %838 = icmp sge i32 %837, 3
  br i1 %838, label %839, label %1304

839:                                              ; preds = %836
  %840 = load ptr, ptr %10, align 8, !tbaa !5
  %841 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %842 = load ptr, ptr %841, align 8, !tbaa !10
  %843 = load ptr, ptr %9, align 8, !tbaa !5
  %844 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %842, ptr noundef nonnull align 8 dereferenceable(8) %843, ptr noundef @.str.67)
          to label %845 unwind label %218

845:                                              ; preds = %839
  %846 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %840, ptr noundef nonnull align 8 dereferenceable(8) %844)
          to label %847 unwind label %218

847:                                              ; preds = %845
  br i1 %846, label %848, label %1304

848:                                              ; preds = %847
  %849 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata acquire, align 8
  %850 = icmp eq i8 %849, 0
  br i1 %850, label %851, label %857, !prof !9

851:                                              ; preds = %848
  %852 = call i32 @__cxa_guard_acquire(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #0
  %853 = icmp ne i32 %852, 0
  br i1 %853, label %854, label %857

854:                                              ; preds = %851
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata, ptr noundef @.str.68)
          to label %855 unwind label %886

855:                                              ; preds = %854
  %856 = call i32 @__cxa_atexit(ptr @_ZN8RcStringD1Ev, ptr @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata, ptr @__dso_handle) #0
  call void @__cxa_guard_release(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #0
  br label %857

857:                                              ; preds = %855, %851, %848
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %858 unwind label %890

858:                                              ; preds = %857
  %859 = load ptr, ptr %17, align 8, !tbaa !5
  %860 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %859)
          to label %861 unwind label %894

861:                                              ; preds = %858
  %862 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %860)
          to label %863 unwind label %894

863:                                              ; preds = %861
  br i1 %862, label %879, label %864

864:                                              ; preds = %863
  %865 = load ptr, ptr %17, align 8, !tbaa !5
  %866 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %865)
          to label %867 unwind label %894

867:                                              ; preds = %864
  %868 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %866)
          to label %869 unwind label %894

869:                                              ; preds = %867
  br i1 %868, label %870, label %912

870:                                              ; preds = %869
  %871 = load ptr, ptr %17, align 8, !tbaa !5
  %872 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %871)
          to label %873 unwind label %894

873:                                              ; preds = %870
  %874 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %872)
          to label %875 unwind label %894

875:                                              ; preds = %873
  %876 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %874, i32 0, i32 1
  %877 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %876)
          to label %878 unwind label %894

878:                                              ; preds = %875
  br i1 %877, label %879, label %912

879:                                              ; preds = %878, %863
  %880 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %89, ptr noundef nonnull align 8 dereferenceable(8) %880)
          to label %881 unwind label %894

881:                                              ; preds = %879
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %90)
          to label %882 unwind label %898

882:                                              ; preds = %881
  call void @llvm.memset.p0.i64(ptr align 8 %91, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %88, ptr noundef %89, ptr noundef %90, ptr noundef %91)
          to label %883 unwind label %902

883:                                              ; preds = %882
  %884 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %88, i32 noundef 1)
          to label %885 unwind label %906

885:                                              ; preds = %883
  store i1 %884, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %88) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #0
  store i32 1, ptr %23, align 4
  br label %1301

886:                                              ; preds = %854
  %887 = landingpad { ptr, i32 }
          cleanup
  %888 = extractvalue { ptr, i32 } %887, 0
  store ptr %888, ptr %14, align 8
  %889 = extractvalue { ptr, i32 } %887, 1
  store i32 %889, ptr %15, align 4
  call void @__cxa_guard_abort(ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #0
  br label %1645

890:                                              ; preds = %857
  %891 = landingpad { ptr, i32 }
          cleanup
  %892 = extractvalue { ptr, i32 } %891, 0
  store ptr %892, ptr %14, align 8
  %893 = extractvalue { ptr, i32 } %891, 1
  store i32 %893, ptr %15, align 4
  br label %1303

894:                                              ; preds = %1214, %1212, %1210, %1208, %1205, %1203, %1200, %1197, %1069, %1067, %1064, %1061, %1058, %1040, %1037, %1034, %1031, %1028, %1025, %957, %954, %933, %929, %927, %924, %921, %918, %915, %912, %879, %875, %873, %870, %867, %864, %861, %858
  %895 = landingpad { ptr, i32 }
          cleanup
  %896 = extractvalue { ptr, i32 } %895, 0
  store ptr %896, ptr %14, align 8
  %897 = extractvalue { ptr, i32 } %895, 1
  store i32 %897, ptr %15, align 4
  br label %1302

898:                                              ; preds = %881
  %899 = landingpad { ptr, i32 }
          cleanup
  %900 = extractvalue { ptr, i32 } %899, 0
  store ptr %900, ptr %14, align 8
  %901 = extractvalue { ptr, i32 } %899, 1
  store i32 %901, ptr %15, align 4
  br label %911

902:                                              ; preds = %882
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %14, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %15, align 4
  br label %910

906:                                              ; preds = %883
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %14, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %88) #0
  br label %910

910:                                              ; preds = %906, %902
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %91) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %90) #0
  br label %911

911:                                              ; preds = %910, %898
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #0
  br label %1302

912:                                              ; preds = %878, %869
  %913 = load ptr, ptr %17, align 8, !tbaa !5
  %914 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %913)
          to label %915 unwind label %894

915:                                              ; preds = %912
  %916 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %914)
          to label %917 unwind label %894

917:                                              ; preds = %915
  br i1 %916, label %933, label %918

918:                                              ; preds = %917
  %919 = load ptr, ptr %17, align 8, !tbaa !5
  %920 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %919)
          to label %921 unwind label %894

921:                                              ; preds = %918
  %922 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %920)
          to label %923 unwind label %894

923:                                              ; preds = %921
  br i1 %922, label %924, label %954

924:                                              ; preds = %923
  %925 = load ptr, ptr %17, align 8, !tbaa !5
  %926 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %925)
          to label %927 unwind label %894

927:                                              ; preds = %924
  %928 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %926)
          to label %929 unwind label %894

929:                                              ; preds = %927
  %930 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %928, i32 0, i32 1
  %931 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %930)
          to label %932 unwind label %894

932:                                              ; preds = %929
  br i1 %931, label %933, label %954

933:                                              ; preds = %932, %917
  %934 = load ptr, ptr %9, align 8, !tbaa !5
  %935 = load ptr, ptr %17, align 8, !tbaa !5
  %936 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %934, ptr noundef nonnull align 8 dereferenceable(8) %935)
          to label %937 unwind label %894

937:                                              ; preds = %933
  %938 = icmp ne i32 %936, 2
  br i1 %938, label %939, label %952

939:                                              ; preds = %937
  call void @llvm.lifetime.start.p0(i64 8, ptr %92) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %92)
          to label %940 unwind label %943

940:                                              ; preds = %939
  %941 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %92)
          to label %942 unwind label %947

942:                                              ; preds = %940
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %953

943:                                              ; preds = %939
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %14, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %15, align 4
  br label %951

947:                                              ; preds = %940
  %948 = landingpad { ptr, i32 }
          cleanup
  %949 = extractvalue { ptr, i32 } %948, 0
  store ptr %949, ptr %14, align 8
  %950 = extractvalue { ptr, i32 } %948, 1
  store i32 %950, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %92) #0
  br label %951

951:                                              ; preds = %947, %943
  call void @llvm.lifetime.end.p0(i64 8, ptr %92) #0
  br label %1302

952:                                              ; preds = %937
  br label %953

953:                                              ; preds = %952, %942
  br label %1195

954:                                              ; preds = %932, %923
  %955 = load ptr, ptr %17, align 8, !tbaa !5
  %956 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %955)
          to label %957 unwind label %894

957:                                              ; preds = %954
  %958 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %956)
          to label %959 unwind label %894

959:                                              ; preds = %957
  br i1 %958, label %960, label %1025

960:                                              ; preds = %959
  call void @llvm.lifetime.start.p0(i64 8, ptr %93) #0
  %961 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %962 = load ptr, ptr %961, align 8, !tbaa !10
  %963 = load ptr, ptr %9, align 8, !tbaa !5
  %964 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %962, ptr noundef nonnull align 8 dereferenceable(8) %963, ptr noundef @.str.69)
          to label %965 unwind label %986

965:                                              ; preds = %960
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %964)
          to label %966 unwind label %986

966:                                              ; preds = %965
  %967 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %98, ptr noundef nonnull align 8 dereferenceable(8) %967)
          to label %968 unwind label %990

968:                                              ; preds = %966
  invoke void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24) %97, ptr noundef %98)
          to label %969 unwind label %994

969:                                              ; preds = %968
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef %96, ptr noundef %97)
          to label %970 unwind label %998

970:                                              ; preds = %969
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %94, ptr noundef %95)
          to label %971 unwind label %1002

971:                                              ; preds = %970
  %972 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %973 = load ptr, ptr %972, align 8, !tbaa !10
  %974 = load ptr, ptr %9, align 8, !tbaa !5
  %975 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %976 = load ptr, ptr %975, align 8, !tbaa !10
  %977 = load ptr, ptr %9, align 8, !tbaa !5
  %978 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %976, ptr noundef nonnull align 8 dereferenceable(8) %977, ptr noundef @.str.69)
          to label %979 unwind label %1006

979:                                              ; preds = %971
  %980 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %973, ptr noundef nonnull align 8 dereferenceable(8) %974, ptr noundef nonnull align 8 dereferenceable(8) %978)
          to label %981 unwind label %1006

981:                                              ; preds = %979
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %99, ptr noundef %980)
          to label %982 unwind label %1006

982:                                              ; preds = %981
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %93, ptr noundef %94, ptr noundef %99)
          to label %983 unwind label %1010

983:                                              ; preds = %982
  %984 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %93)
          to label %985 unwind label %1014

985:                                              ; preds = %983
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #0
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %94) #0
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1194

986:                                              ; preds = %965, %960
  %987 = landingpad { ptr, i32 }
          cleanup
  %988 = extractvalue { ptr, i32 } %987, 0
  store ptr %988, ptr %14, align 8
  %989 = extractvalue { ptr, i32 } %987, 1
  store i32 %989, ptr %15, align 4
  br label %1024

990:                                              ; preds = %966
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %14, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %15, align 4
  br label %1023

994:                                              ; preds = %968
  %995 = landingpad { ptr, i32 }
          cleanup
  %996 = extractvalue { ptr, i32 } %995, 0
  store ptr %996, ptr %14, align 8
  %997 = extractvalue { ptr, i32 } %995, 1
  store i32 %997, ptr %15, align 4
  br label %1022

998:                                              ; preds = %969
  %999 = landingpad { ptr, i32 }
          cleanup
  %1000 = extractvalue { ptr, i32 } %999, 0
  store ptr %1000, ptr %14, align 8
  %1001 = extractvalue { ptr, i32 } %999, 1
  store i32 %1001, ptr %15, align 4
  br label %1021

1002:                                             ; preds = %970
  %1003 = landingpad { ptr, i32 }
          cleanup
  %1004 = extractvalue { ptr, i32 } %1003, 0
  store ptr %1004, ptr %14, align 8
  %1005 = extractvalue { ptr, i32 } %1003, 1
  store i32 %1005, ptr %15, align 4
  br label %1020

1006:                                             ; preds = %981, %979, %971
  %1007 = landingpad { ptr, i32 }
          cleanup
  %1008 = extractvalue { ptr, i32 } %1007, 0
  store ptr %1008, ptr %14, align 8
  %1009 = extractvalue { ptr, i32 } %1007, 1
  store i32 %1009, ptr %15, align 4
  br label %1019

1010:                                             ; preds = %982
  %1011 = landingpad { ptr, i32 }
          cleanup
  %1012 = extractvalue { ptr, i32 } %1011, 0
  store ptr %1012, ptr %14, align 8
  %1013 = extractvalue { ptr, i32 } %1011, 1
  store i32 %1013, ptr %15, align 4
  br label %1018

1014:                                             ; preds = %983
  %1015 = landingpad { ptr, i32 }
          cleanup
  %1016 = extractvalue { ptr, i32 } %1015, 0
  store ptr %1016, ptr %14, align 8
  %1017 = extractvalue { ptr, i32 } %1015, 1
  store i32 %1017, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #0
  br label %1018

1018:                                             ; preds = %1014, %1010
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %99) #0
  br label %1019

1019:                                             ; preds = %1018, %1006
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %94) #0
  br label %1020

1020:                                             ; preds = %1019, %1002
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #0
  br label %1021

1021:                                             ; preds = %1020, %998
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %97) #0
  br label %1022

1022:                                             ; preds = %1021, %994
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %98) #0
  br label %1023

1023:                                             ; preds = %1022, %990
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %96) #0
  br label %1024

1024:                                             ; preds = %1023, %986
  call void @llvm.lifetime.end.p0(i64 8, ptr %93) #0
  br label %1302

1025:                                             ; preds = %959
  %1026 = load ptr, ptr %17, align 8, !tbaa !5
  %1027 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1026)
          to label %1028 unwind label %894

1028:                                             ; preds = %1025
  %1029 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %1027)
          to label %1030 unwind label %894

1030:                                             ; preds = %1028
  br i1 %1029, label %1045, label %1031

1031:                                             ; preds = %1030
  %1032 = load ptr, ptr %17, align 8, !tbaa !5
  %1033 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1032)
          to label %1034 unwind label %894

1034:                                             ; preds = %1031
  %1035 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1033)
          to label %1036 unwind label %894

1036:                                             ; preds = %1034
  br i1 %1035, label %1037, label %1058

1037:                                             ; preds = %1036
  %1038 = load ptr, ptr %17, align 8, !tbaa !5
  %1039 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1038)
          to label %1040 unwind label %894

1040:                                             ; preds = %1037
  %1041 = invoke noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %1039)
          to label %1042 unwind label %894

1042:                                             ; preds = %1040
  %1043 = load i32, ptr %1041, align 4, !tbaa !70
  %1044 = icmp eq i32 %1043, 16
  br i1 %1044, label %1045, label %1058

1045:                                             ; preds = %1042, %1030
  call void @llvm.lifetime.start.p0(i64 8, ptr %100) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %100, i32 noundef 0)
          to label %1046 unwind label %1049

1046:                                             ; preds = %1045
  %1047 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %100)
          to label %1048 unwind label %1053

1048:                                             ; preds = %1046
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  br label %1193

1049:                                             ; preds = %1045
  %1050 = landingpad { ptr, i32 }
          cleanup
  %1051 = extractvalue { ptr, i32 } %1050, 0
  store ptr %1051, ptr %14, align 8
  %1052 = extractvalue { ptr, i32 } %1050, 1
  store i32 %1052, ptr %15, align 4
  br label %1057

1053:                                             ; preds = %1046
  %1054 = landingpad { ptr, i32 }
          cleanup
  %1055 = extractvalue { ptr, i32 } %1054, 0
  store ptr %1055, ptr %14, align 8
  %1056 = extractvalue { ptr, i32 } %1054, 1
  store i32 %1056, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %100) #0
  br label %1057

1057:                                             ; preds = %1053, %1049
  call void @llvm.lifetime.end.p0(i64 8, ptr %100) #0
  br label %1302

1058:                                             ; preds = %1042, %1036
  %1059 = load ptr, ptr %17, align 8, !tbaa !5
  %1060 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1059)
          to label %1061 unwind label %894

1061:                                             ; preds = %1058
  %1062 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1060)
          to label %1063 unwind label %894

1063:                                             ; preds = %1061
  br i1 %1062, label %1064, label %1179

1064:                                             ; preds = %1063
  %1065 = load ptr, ptr %17, align 8, !tbaa !5
  %1066 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1065)
          to label %1067 unwind label %894

1067:                                             ; preds = %1064
  %1068 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1066)
          to label %1069 unwind label %894

1069:                                             ; preds = %1067
  %1070 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1068, i32 0, i32 1
  %1071 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1070)
          to label %1072 unwind label %894

1072:                                             ; preds = %1069
  br i1 %1071, label %1073, label %1179

1073:                                             ; preds = %1072
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #0
  %1074 = load ptr, ptr %17, align 8, !tbaa !5
  %1075 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1074)
          to label %1076 unwind label %1087

1076:                                             ; preds = %1073
  %1077 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1075)
          to label %1078 unwind label %1087

1078:                                             ; preds = %1076
  %1079 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1077, i32 0, i32 1
  %1080 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %1079)
          to label %1081 unwind label %1087

1081:                                             ; preds = %1078
  %1082 = load ptr, ptr %1080, align 8, !tbaa !5
  store ptr %1082, ptr %101, align 8, !tbaa !5
  %1083 = load ptr, ptr %101, align 8, !tbaa !5
  %1084 = getelementptr inbounds %"class.HIR::Struct", ptr %1083, i32 0, i32 7
  %1085 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %1084, i32 0, i32 2
  %1086 = load i32, ptr %1085, align 8, !tbaa !72
  switch i32 %1086, label %1177 [
    i32 0, label %1091
    i32 1, label %1104
    i32 2, label %1134
    i32 3, label %1147
  ]

1087:                                             ; preds = %1078, %1076, %1073
  %1088 = landingpad { ptr, i32 }
          cleanup
  %1089 = extractvalue { ptr, i32 } %1088, 0
  store ptr %1089, ptr %14, align 8
  %1090 = extractvalue { ptr, i32 } %1088, 1
  store i32 %1090, ptr %15, align 4
  br label %1178

1091:                                             ; preds = %1081
  call void @llvm.lifetime.start.p0(i64 8, ptr %102) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %102)
          to label %1092 unwind label %1095

1092:                                             ; preds = %1091
  %1093 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %1094 unwind label %1099

1094:                                             ; preds = %1092
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1177

1095:                                             ; preds = %1091
  %1096 = landingpad { ptr, i32 }
          cleanup
  %1097 = extractvalue { ptr, i32 } %1096, 0
  store ptr %1097, ptr %14, align 8
  %1098 = extractvalue { ptr, i32 } %1096, 1
  store i32 %1098, ptr %15, align 4
  br label %1103

1099:                                             ; preds = %1092
  %1100 = landingpad { ptr, i32 }
          cleanup
  %1101 = extractvalue { ptr, i32 } %1100, 0
  store ptr %1101, ptr %14, align 8
  %1102 = extractvalue { ptr, i32 } %1100, 1
  store i32 %1102, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #0
  br label %1103

1103:                                             ; preds = %1099, %1095
  call void @llvm.lifetime.end.p0(i64 8, ptr %102) #0
  br label %1178

1104:                                             ; preds = %1081
  br label %1105

1105:                                             ; preds = %1104
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #0
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %103, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %104) #0
  %1106 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef nonnull align 8 dereferenceable(8) %1106)
          to label %1107 unwind label %1114

1107:                                             ; preds = %1105
  call void @llvm.lifetime.start.p0(i64 16, ptr %106) #0
  %1108 = getelementptr inbounds %class.anon.484, ptr %106, i32 0, i32 0
  store ptr %103, ptr %1108, align 8, !tbaa !5
  %1109 = getelementptr inbounds %class.anon.484, ptr %106, i32 0, i32 1
  %1110 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1110, ptr %1109, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %105, ptr noundef nonnull align 8 dereferenceable(16) %106) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %104, ptr noundef %105)
          to label %1111 unwind label %1118

1111:                                             ; preds = %1107
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  %1112 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1112, ptr noundef @.str.70)
          to label %1113 unwind label %1123

1113:                                             ; preds = %1111
  invoke void @__cxa_throw(ptr %1112, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1652 unwind label %1127

1114:                                             ; preds = %1105
  %1115 = landingpad { ptr, i32 }
          cleanup
  %1116 = extractvalue { ptr, i32 } %1115, 0
  store ptr %1116, ptr %14, align 8
  %1117 = extractvalue { ptr, i32 } %1115, 1
  store i32 %1117, ptr %15, align 4
  br label %1122

1118:                                             ; preds = %1107
  %1119 = landingpad { ptr, i32 }
          cleanup
  %1120 = extractvalue { ptr, i32 } %1119, 0
  store ptr %1120, ptr %14, align 8
  %1121 = extractvalue { ptr, i32 } %1119, 1
  store i32 %1121, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %105) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %106) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %104) #0
  br label %1122

1122:                                             ; preds = %1118, %1114
  call void @llvm.lifetime.end.p0(i64 8, ptr %104) #0
  br label %1131

1123:                                             ; preds = %1111
  %1124 = landingpad { ptr, i32 }
          cleanup
  %1125 = extractvalue { ptr, i32 } %1124, 0
  store ptr %1125, ptr %14, align 8
  %1126 = extractvalue { ptr, i32 } %1124, 1
  store i32 %1126, ptr %15, align 4
  call void @__cxa_free_exception(ptr %1112) #0
  br label %1131

1127:                                             ; preds = %1113
  %1128 = landingpad { ptr, i32 }
          cleanup
  %1129 = extractvalue { ptr, i32 } %1128, 0
  store ptr %1129, ptr %14, align 8
  %1130 = extractvalue { ptr, i32 } %1128, 1
  store i32 %1130, ptr %15, align 4
  br label %1131

1131:                                             ; preds = %1127, %1123, %1122
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #0
  br label %1178

1132:                                             ; No predecessors!
  br label %1133

1133:                                             ; preds = %1132
  br label %1134

1134:                                             ; preds = %1133, %1081
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #0
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %107, i32 noundef 0)
          to label %1135 unwind label %1138

1135:                                             ; preds = %1134
  %1136 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %107)
          to label %1137 unwind label %1142

1137:                                             ; preds = %1135
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %1177

1138:                                             ; preds = %1134
  %1139 = landingpad { ptr, i32 }
          cleanup
  %1140 = extractvalue { ptr, i32 } %1139, 0
  store ptr %1140, ptr %14, align 8
  %1141 = extractvalue { ptr, i32 } %1139, 1
  store i32 %1141, ptr %15, align 4
  br label %1146

1142:                                             ; preds = %1135
  %1143 = landingpad { ptr, i32 }
          cleanup
  %1144 = extractvalue { ptr, i32 } %1143, 0
  store ptr %1144, ptr %14, align 8
  %1145 = extractvalue { ptr, i32 } %1143, 1
  store i32 %1145, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %107) #0
  br label %1146

1146:                                             ; preds = %1142, %1138
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #0
  br label %1178

1147:                                             ; preds = %1081
  br label %1148

1148:                                             ; preds = %1147
  call void @llvm.lifetime.start.p0(i64 8, ptr %108) #0
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %108, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %109) #0
  %1149 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef nonnull align 8 dereferenceable(8) %1149)
          to label %1150 unwind label %1157

1150:                                             ; preds = %1148
  call void @llvm.lifetime.start.p0(i64 16, ptr %111) #0
  %1151 = getelementptr inbounds %class.anon.485, ptr %111, i32 0, i32 0
  store ptr %108, ptr %1151, align 8, !tbaa !5
  %1152 = getelementptr inbounds %class.anon.485, ptr %111, i32 0, i32 1
  %1153 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1153, ptr %1152, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %110, ptr noundef nonnull align 8 dereferenceable(16) %111) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %109, ptr noundef %110)
          to label %1154 unwind label %1161

1154:                                             ; preds = %1150
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  %1155 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1155, ptr noundef @.str.70)
          to label %1156 unwind label %1166

1156:                                             ; preds = %1154
  invoke void @__cxa_throw(ptr %1155, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1652 unwind label %1170

1157:                                             ; preds = %1148
  %1158 = landingpad { ptr, i32 }
          cleanup
  %1159 = extractvalue { ptr, i32 } %1158, 0
  store ptr %1159, ptr %14, align 8
  %1160 = extractvalue { ptr, i32 } %1158, 1
  store i32 %1160, ptr %15, align 4
  br label %1165

1161:                                             ; preds = %1150
  %1162 = landingpad { ptr, i32 }
          cleanup
  %1163 = extractvalue { ptr, i32 } %1162, 0
  store ptr %1163, ptr %14, align 8
  %1164 = extractvalue { ptr, i32 } %1162, 1
  store i32 %1164, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %110) #0
  call void @llvm.lifetime.end.p0(i64 16, ptr %111) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %109) #0
  br label %1165

1165:                                             ; preds = %1161, %1157
  call void @llvm.lifetime.end.p0(i64 8, ptr %109) #0
  br label %1174

1166:                                             ; preds = %1154
  %1167 = landingpad { ptr, i32 }
          cleanup
  %1168 = extractvalue { ptr, i32 } %1167, 0
  store ptr %1168, ptr %14, align 8
  %1169 = extractvalue { ptr, i32 } %1167, 1
  store i32 %1169, ptr %15, align 4
  call void @__cxa_free_exception(ptr %1155) #0
  br label %1174

1170:                                             ; preds = %1156
  %1171 = landingpad { ptr, i32 }
          cleanup
  %1172 = extractvalue { ptr, i32 } %1171, 0
  store ptr %1172, ptr %14, align 8
  %1173 = extractvalue { ptr, i32 } %1171, 1
  store i32 %1173, ptr %15, align 4
  br label %1174

1174:                                             ; preds = %1170, %1166, %1165
  call void @llvm.lifetime.end.p0(i64 8, ptr %108) #0
  br label %1178

1175:                                             ; No predecessors!
  br label %1176

1176:                                             ; preds = %1175
  br label %1177

1177:                                             ; preds = %1176, %1137, %1094, %1081
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %1192

1178:                                             ; preds = %1174, %1146, %1131, %1103, %1087
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #0
  br label %1302

1179:                                             ; preds = %1072, %1063
  call void @llvm.lifetime.start.p0(i64 8, ptr %112) #0
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %112)
          to label %1180 unwind label %1183

1180:                                             ; preds = %1179
  %1181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %112)
          to label %1182 unwind label %1187

1182:                                             ; preds = %1180
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  br label %1192

1183:                                             ; preds = %1179
  %1184 = landingpad { ptr, i32 }
          cleanup
  %1185 = extractvalue { ptr, i32 } %1184, 0
  store ptr %1185, ptr %14, align 8
  %1186 = extractvalue { ptr, i32 } %1184, 1
  store i32 %1186, ptr %15, align 4
  br label %1191

1187:                                             ; preds = %1180
  %1188 = landingpad { ptr, i32 }
          cleanup
  %1189 = extractvalue { ptr, i32 } %1188, 0
  store ptr %1189, ptr %14, align 8
  %1190 = extractvalue { ptr, i32 } %1188, 1
  store i32 %1190, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %112) #0
  br label %1191

1191:                                             ; preds = %1187, %1183
  call void @llvm.lifetime.end.p0(i64 8, ptr %112) #0
  br label %1302

1192:                                             ; preds = %1182, %1177
  br label %1193

1193:                                             ; preds = %1192, %1048
  br label %1194

1194:                                             ; preds = %1193, %985
  br label %1195

1195:                                             ; preds = %1194, %953
  br label %1196

1196:                                             ; preds = %1195
  br label %1197

1197:                                             ; preds = %1196
  %1198 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %1199 unwind label %894

1199:                                             ; preds = %1197
  br i1 %1198, label %1200, label %1217

1200:                                             ; preds = %1199
  %1201 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !83
  %1202 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %1201, ptr noundef @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %1203 unwind label %894

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

1205:                                             ; preds = %1203
  %1206 = load ptr, ptr %17, align 8, !tbaa !5
  %1207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %1204, ptr noundef nonnull align 8 dereferenceable(8) %1206)
          to label %1208 unwind label %894

1208:                                             ; preds = %1205
  %1209 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %1207, ptr noundef @.str.71)
          to label %1210 unwind label %894

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

1212:                                             ; preds = %1210
  %1213 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %1211, ptr noundef @_ZSt3decRSt8ios_base)
          to label %1214 unwind label %894

1214:                                             ; preds = %1212
  %1215 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %1213, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %1216 unwind label %894

1216:                                             ; preds = %1214
  br label %1217

1217:                                             ; preds = %1216, %1199
  br label %1218

1218:                                             ; preds = %1217
  br label %1219

1219:                                             ; preds = %1218
  call void @llvm.lifetime.start.p0(i64 48, ptr %113) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %114) #0
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1220 unwind label %1238

1220:                                             ; preds = %1219
  %1221 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %87, ptr noundef nonnull align 8 dereferenceable(8) %114)
          to label %1222 unwind label %1242

1222:                                             ; preds = %1220
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  br i1 %1221, label %1223, label %1275

1223:                                             ; preds = %1222
  call void @llvm.lifetime.start.p0(i64 48, ptr %115) #0
  call void @llvm.lifetime.start.p0(i64 8, ptr %116) #0
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind writable sret(%class.RcString) align 8 %116, ptr noundef @.str.68)
          to label %1224 unwind label %1247

1224:                                             ; preds = %1223
  call void @llvm.lifetime.start.p0(i64 40, ptr %117) #0
  %1225 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %117, i32 0, i32 0
  %1226 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %118, ptr noundef nonnull align 8 dereferenceable(8) %1226)
          to label %1227 unwind label %1251

1227:                                             ; preds = %1224
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %1225, ptr noundef %118)
          to label %1228 unwind label %1255

1228:                                             ; preds = %1227
  %1229 = getelementptr inbounds %"struct.HIR::TraitPath::AtyEqual", ptr %117, i32 0, i32 1
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %1229, ptr noundef nonnull align 8 dereferenceable(8) %87)
          to label %1230 unwind label %1259

1230:                                             ; preds = %1228
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind writable sret(%"struct.std::pair.457") align 8 %115, ptr noundef nonnull align 8 dereferenceable(8) %116, ptr noundef nonnull align 8 dereferenceable(40) %117)
          to label %1231 unwind label %1263

1231:                                             ; preds = %1230
  %1232 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %113, ptr noundef nonnull align 8 dereferenceable(48) %115)
          to label %1233 unwind label %1267

1233:                                             ; preds = %1231
  %1234 = getelementptr inbounds { ptr, i8 }, ptr %119, i32 0, i32 0
  %1235 = extractvalue { ptr, i8 } %1232, 0
  store ptr %1235, ptr %1234, align 8
  %1236 = getelementptr inbounds { ptr, i8 }, ptr %119, i32 0, i32 1
  %1237 = extractvalue { ptr, i8 } %1232, 1
  store i8 %1237, ptr %1236, align 8
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %117) #0
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %115) #0
  br label %1275

1238:                                             ; preds = %1219
  %1239 = landingpad { ptr, i32 }
          cleanup
  %1240 = extractvalue { ptr, i32 } %1239, 0
  store ptr %1240, ptr %14, align 8
  %1241 = extractvalue { ptr, i32 } %1239, 1
  store i32 %1241, ptr %15, align 4
  br label %1246

1242:                                             ; preds = %1220
  %1243 = landingpad { ptr, i32 }
          cleanup
  %1244 = extractvalue { ptr, i32 } %1243, 0
  store ptr %1244, ptr %14, align 8
  %1245 = extractvalue { ptr, i32 } %1243, 1
  store i32 %1245, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #0
  br label %1246

1246:                                             ; preds = %1242, %1238
  call void @llvm.lifetime.end.p0(i64 8, ptr %114) #0
  br label %1300

1247:                                             ; preds = %1223
  %1248 = landingpad { ptr, i32 }
          cleanup
  %1249 = extractvalue { ptr, i32 } %1248, 0
  store ptr %1249, ptr %14, align 8
  %1250 = extractvalue { ptr, i32 } %1248, 1
  store i32 %1250, ptr %15, align 4
  br label %1274

1251:                                             ; preds = %1224
  %1252 = landingpad { ptr, i32 }
          cleanup
  %1253 = extractvalue { ptr, i32 } %1252, 0
  store ptr %1253, ptr %14, align 8
  %1254 = extractvalue { ptr, i32 } %1252, 1
  store i32 %1254, ptr %15, align 4
  br label %1273

1255:                                             ; preds = %1227
  %1256 = landingpad { ptr, i32 }
          cleanup
  %1257 = extractvalue { ptr, i32 } %1256, 0
  store ptr %1257, ptr %14, align 8
  %1258 = extractvalue { ptr, i32 } %1256, 1
  store i32 %1258, ptr %15, align 4
  br label %1272

1259:                                             ; preds = %1228
  %1260 = landingpad { ptr, i32 }
          cleanup
  %1261 = extractvalue { ptr, i32 } %1260, 0
  store ptr %1261, ptr %14, align 8
  %1262 = extractvalue { ptr, i32 } %1260, 1
  store i32 %1262, ptr %15, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1225) #0
  br label %1272

1263:                                             ; preds = %1230
  %1264 = landingpad { ptr, i32 }
          cleanup
  %1265 = extractvalue { ptr, i32 } %1264, 0
  store ptr %1265, ptr %14, align 8
  %1266 = extractvalue { ptr, i32 } %1264, 1
  store i32 %1266, ptr %15, align 4
  br label %1271

1267:                                             ; preds = %1231
  %1268 = landingpad { ptr, i32 }
          cleanup
  %1269 = extractvalue { ptr, i32 } %1268, 0
  store ptr %1269, ptr %14, align 8
  %1270 = extractvalue { ptr, i32 } %1268, 1
  store i32 %1270, ptr %15, align 4
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %115) #0
  br label %1271

1271:                                             ; preds = %1267, %1263
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %117) #0
  br label %1272

1272:                                             ; preds = %1271, %1259, %1255
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %118) #0
  br label %1273

1273:                                             ; preds = %1272, %1251
  call void @llvm.lifetime.end.p0(i64 40, ptr %117) #0
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %116) #0
  br label %1274

1274:                                             ; preds = %1273, %1247
  call void @llvm.lifetime.end.p0(i64 8, ptr %116) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %115) #0
  br label %1300

1275:                                             ; preds = %1233, %1222
  %1276 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %121, ptr noundef nonnull align 8 dereferenceable(8) %1276)
          to label %1277 unwind label %1282

1277:                                             ; preds = %1275
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %122)
          to label %1278 unwind label %1286

1278:                                             ; preds = %1277
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %123, ptr noundef nonnull align 8 dereferenceable(48) %113) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %120, ptr noundef %121, ptr noundef %122, ptr noundef %123)
          to label %1279 unwind label %1290

1279:                                             ; preds = %1278
  %1280 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %120, i32 noundef 0)
          to label %1281 unwind label %1294

1281:                                             ; preds = %1279
  store i1 %1280, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %120) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %123) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  store i32 1, ptr %23, align 4
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %113) #0
  br label %1301

1282:                                             ; preds = %1275
  %1283 = landingpad { ptr, i32 }
          cleanup
  %1284 = extractvalue { ptr, i32 } %1283, 0
  store ptr %1284, ptr %14, align 8
  %1285 = extractvalue { ptr, i32 } %1283, 1
  store i32 %1285, ptr %15, align 4
  br label %1300

1286:                                             ; preds = %1277
  %1287 = landingpad { ptr, i32 }
          cleanup
  %1288 = extractvalue { ptr, i32 } %1287, 0
  store ptr %1288, ptr %14, align 8
  %1289 = extractvalue { ptr, i32 } %1287, 1
  store i32 %1289, ptr %15, align 4
  br label %1299

1290:                                             ; preds = %1278
  %1291 = landingpad { ptr, i32 }
          cleanup
  %1292 = extractvalue { ptr, i32 } %1291, 0
  store ptr %1292, ptr %14, align 8
  %1293 = extractvalue { ptr, i32 } %1291, 1
  store i32 %1293, ptr %15, align 4
  br label %1298

1294:                                             ; preds = %1279
  %1295 = landingpad { ptr, i32 }
          cleanup
  %1296 = extractvalue { ptr, i32 } %1295, 0
  store ptr %1296, ptr %14, align 8
  %1297 = extractvalue { ptr, i32 } %1295, 1
  store i32 %1297, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %120) #0
  br label %1298

1298:                                             ; preds = %1294, %1290
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %123) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %122) #0
  br label %1299

1299:                                             ; preds = %1298, %1286
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %121) #0
  br label %1300

1300:                                             ; preds = %1299, %1282, %1274, %1246
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %113) #0
  call void @llvm.lifetime.end.p0(i64 48, ptr %113) #0
  br label %1302

1301:                                             ; preds = %1281, %885
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1643

1302:                                             ; preds = %1300, %1191, %1178, %1057, %1024, %951, %911, %894
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #0
  br label %1303

1303:                                             ; preds = %1302, %890
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #0
  br label %1645

1304:                                             ; preds = %847, %836
  %1305 = load i32, ptr @gTargetVersion, align 4, !tbaa !37
  %1306 = icmp sge i32 %1305, 4
  br i1 %1306, label %1307, label %1386

1307:                                             ; preds = %1304
  %1308 = load ptr, ptr %10, align 8, !tbaa !5
  %1309 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 0
  %1310 = load ptr, ptr %1309, align 8, !tbaa !10
  %1311 = load ptr, ptr %9, align 8, !tbaa !5
  %1312 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %1310, ptr noundef nonnull align 8 dereferenceable(8) %1311, ptr noundef @.str.72)
          to label %1313 unwind label %218

1313:                                             ; preds = %1307
  %1314 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1308, ptr noundef nonnull align 8 dereferenceable(8) %1312)
          to label %1315 unwind label %218

1315:                                             ; preds = %1313
  br i1 %1314, label %1316, label %1386

1316:                                             ; preds = %1315
  %1317 = load ptr, ptr %17, align 8, !tbaa !5
  %1318 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1317)
          to label %1319 unwind label %218

1319:                                             ; preds = %1316
  %1320 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %1318)
          to label %1321 unwind label %218

1321:                                             ; preds = %1319
  br i1 %1320, label %1337, label %1322

1322:                                             ; preds = %1321
  %1323 = load ptr, ptr %17, align 8, !tbaa !5
  %1324 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1323)
          to label %1325 unwind label %218

1325:                                             ; preds = %1322
  %1326 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1324)
          to label %1327 unwind label %218

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

1328:                                             ; preds = %1327
  %1329 = load ptr, ptr %17, align 8, !tbaa !5
  %1330 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1329)
          to label %1331 unwind label %218

1331:                                             ; preds = %1328
  %1332 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %1330)
          to label %1333 unwind label %218

1333:                                             ; preds = %1331
  %1334 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %1332, i32 0, i32 1
  %1335 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %1334)
          to label %1336 unwind label %218

1336:                                             ; preds = %1333
  br i1 %1335, label %1337, label %1358

1337:                                             ; preds = %1336, %1321
  %1338 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %125, ptr noundef nonnull align 8 dereferenceable(8) %1338)
          to label %1339 unwind label %218

1339:                                             ; preds = %1337
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %126)
          to label %1340 unwind label %1344

1340:                                             ; preds = %1339
  call void @llvm.memset.p0.i64(ptr align 8 %127, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %127) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %124, ptr noundef %125, ptr noundef %126, ptr noundef %127)
          to label %1341 unwind label %1348

1341:                                             ; preds = %1340
  %1342 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %124, i32 noundef 1)
          to label %1343 unwind label %1352

1343:                                             ; preds = %1341
  store i1 %1342, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %124) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %127) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %126) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #0
  store i32 1, ptr %23, align 4
  br label %1643

1344:                                             ; preds = %1339
  %1345 = landingpad { ptr, i32 }
          cleanup
  %1346 = extractvalue { ptr, i32 } %1345, 0
  store ptr %1346, ptr %14, align 8
  %1347 = extractvalue { ptr, i32 } %1345, 1
  store i32 %1347, ptr %15, align 4
  br label %1357

1348:                                             ; preds = %1340
  %1349 = landingpad { ptr, i32 }
          cleanup
  %1350 = extractvalue { ptr, i32 } %1349, 0
  store ptr %1350, ptr %14, align 8
  %1351 = extractvalue { ptr, i32 } %1349, 1
  store i32 %1351, ptr %15, align 4
  br label %1356

1352:                                             ; preds = %1341
  %1353 = landingpad { ptr, i32 }
          cleanup
  %1354 = extractvalue { ptr, i32 } %1353, 0
  store ptr %1354, ptr %14, align 8
  %1355 = extractvalue { ptr, i32 } %1353, 1
  store i32 %1355, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %124) #0
  br label %1356

1356:                                             ; preds = %1352, %1348
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %127) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %126) #0
  br label %1357

1357:                                             ; preds = %1356, %1344
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %125) #0
  br label %1645

1358:                                             ; preds = %1336, %1327
  %1359 = load ptr, ptr %17, align 8, !tbaa !5
  %1360 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1359)
          to label %1361 unwind label %218

1361:                                             ; preds = %1358
  %1362 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %1360)
          to label %1363 unwind label %218

1363:                                             ; preds = %1361
  br i1 %1362, label %1364, label %1385

1364:                                             ; preds = %1363
  %1365 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %129, ptr noundef nonnull align 8 dereferenceable(8) %1365)
          to label %1366 unwind label %218

1366:                                             ; preds = %1364
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %130)
          to label %1367 unwind label %1371

1367:                                             ; preds = %1366
  call void @llvm.memset.p0.i64(ptr align 8 %131, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %131) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %128, ptr noundef %129, ptr noundef %130, ptr noundef %131)
          to label %1368 unwind label %1375

1368:                                             ; preds = %1367
  %1369 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %128, i32 noundef 0)
          to label %1370 unwind label %1379

1370:                                             ; preds = %1368
  store i1 %1369, ptr %7, align 1
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %128) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %131) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  store i32 1, ptr %23, align 4
  br label %1643

1371:                                             ; preds = %1366
  %1372 = landingpad { ptr, i32 }
          cleanup
  %1373 = extractvalue { ptr, i32 } %1372, 0
  store ptr %1373, ptr %14, align 8
  %1374 = extractvalue { ptr, i32 } %1372, 1
  store i32 %1374, ptr %15, align 4
  br label %1384

1375:                                             ; preds = %1367
  %1376 = landingpad { ptr, i32 }
          cleanup
  %1377 = extractvalue { ptr, i32 } %1376, 0
  store ptr %1377, ptr %14, align 8
  %1378 = extractvalue { ptr, i32 } %1376, 1
  store i32 %1378, ptr %15, align 4
  br label %1383

1379:                                             ; preds = %1368
  %1380 = landingpad { ptr, i32 }
          cleanup
  %1381 = extractvalue { ptr, i32 } %1380, 0
  store ptr %1381, ptr %14, align 8
  %1382 = extractvalue { ptr, i32 } %1380, 1
  store i32 %1382, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %128) #0
  br label %1383

1383:                                             ; preds = %1379, %1375
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %131) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %130) #0
  br label %1384

1384:                                             ; preds = %1383, %1371
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %129) #0
  br label %1645

1385:                                             ; preds = %1363
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %1643

1386:                                             ; preds = %1315, %1304
  %1387 = load ptr, ptr %10, align 8, !tbaa !5
  %1388 = getelementptr inbounds %struct.TraitResolveCommon, ptr %157, i32 0, i32 9
  %1389 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1387, ptr noundef nonnull align 8 dereferenceable(8) %1388)
          to label %1390 unwind label %218

1390:                                             ; preds = %1386
  br i1 %1389, label %1391, label %1501

1391:                                             ; preds = %1390
  br label %1392

1392:                                             ; preds = %1391
  %1393 = load ptr, ptr %11, align 8, !tbaa !5
  %1394 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1393, i32 0, i32 1
  %1395 = invoke noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %1394)
          to label %1396 unwind label %218

1396:                                             ; preds = %1392
  %1397 = icmp eq i64 %1395, 1
  br i1 %1397, label %1417, label %1398

1398:                                             ; preds = %1396
  call void @llvm.lifetime.start.p0(i64 8, ptr %132) #0
  %1399 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef nonnull align 8 dereferenceable(8) %1399)
          to label %1400 unwind label %1404

1400:                                             ; preds = %1398
  call void @llvm.lifetime.start.p0(i64 1, ptr %134) #0
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %133, ptr noundef nonnull align 1 dereferenceable(1) %134) #0
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %132, ptr noundef %133)
          to label %1401 unwind label %1408

1401:                                             ; preds = %1400
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #0
  %1402 = call ptr @__cxa_allocate_exception(i64 16) #0
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %1402, ptr noundef @.str.8)
          to label %1403 unwind label %1413

1403:                                             ; preds = %1401
  invoke void @__cxa_throw(ptr %1402, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %1652 unwind label %218

1404:                                             ; preds = %1398
  %1405 = landingpad { ptr, i32 }
          cleanup
  %1406 = extractvalue { ptr, i32 } %1405, 0
  store ptr %1406, ptr %14, align 8
  %1407 = extractvalue { ptr, i32 } %1405, 1
  store i32 %1407, ptr %15, align 4
  br label %1412

1408:                                             ; preds = %1400
  %1409 = landingpad { ptr, i32 }
          cleanup
  %1410 = extractvalue { ptr, i32 } %1409, 0
  store ptr %1410, ptr %14, align 8
  %1411 = extractvalue { ptr, i32 } %1409, 1
  store i32 %1411, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %133) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %134) #0
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %132) #0
  br label %1412

1412:                                             ; preds = %1408, %1404
  call void @llvm.lifetime.end.p0(i64 8, ptr %132) #0
  br label %1645

1413:                                             ; preds = %1401
  %1414 = landingpad { ptr, i32 }
          cleanup
  %1415 = extractvalue { ptr, i32 } %1414, 0
  store ptr %1415, ptr %14, align 8
  %1416 = extractvalue { ptr, i32 } %1414, 1
  store i32 %1416, ptr %15, align 4
  call void @__cxa_free_exception(ptr %1402) #0
  br label %1645

1417:                                             ; preds = %1396
  br label %1418

1418:                                             ; preds = %1417
  br label %1419

1419:                                             ; preds = %1418
  call void @llvm.lifetime.start.p0(i64 8, ptr %135) #0
  %1420 = getelementptr inbounds %class.TraitResolution, ptr %157, i32 0, i32 2
  %1421 = load ptr, ptr %1420, align 8, !tbaa !29
  %1422 = load ptr, ptr %11, align 8, !tbaa !5
  %1423 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1422, i32 0, i32 1
  %1424 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %1423, i64 noundef 0)
          to label %1425 unwind label %1436

1425:                                             ; preds = %1419
  %1426 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %1421, ptr noundef nonnull align 8 dereferenceable(8) %1424)
          to label %1427 unwind label %1436

1427:                                             ; preds = %1425
  store ptr %1426, ptr %135, align 8, !tbaa !5
  %1428 = load ptr, ptr %9, align 8, !tbaa !5
  %1429 = load ptr, ptr %10, align 8, !tbaa !5
  %1430 = load ptr, ptr %11, align 8, !tbaa !5
  %1431 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %136, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1432 unwind label %1436

1432:                                             ; preds = %1427
  %1433 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %1428, ptr noundef nonnull align 8 dereferenceable(8) %1429, ptr noundef nonnull align 8 dereferenceable(24) %1430, ptr noundef nonnull align 8 dereferenceable(8) %1431, ptr noundef %136)
          to label %1434 unwind label %1440

1434:                                             ; preds = %1432
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #0
  br i1 %1433, label %1435, label %1444

1435:                                             ; preds = %1434
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %1499

1436:                                             ; preds = %1427, %1425, %1419
  %1437 = landingpad { ptr, i32 }
          cleanup
  %1438 = extractvalue { ptr, i32 } %1437, 0
  store ptr %1438, ptr %14, align 8
  %1439 = extractvalue { ptr, i32 } %1437, 1
  store i32 %1439, ptr %15, align 4
  br label %1500

1440:                                             ; preds = %1432
  %1441 = landingpad { ptr, i32 }
          cleanup
  %1442 = extractvalue { ptr, i32 } %1441, 0
  store ptr %1442, ptr %14, align 8
  %1443 = extractvalue { ptr, i32 } %1441, 1
  store i32 %1443, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %136) #0
  br label %1500

1444:                                             ; preds = %1434
  call void @llvm.lifetime.start.p0(i64 1, ptr %137) #0
  store i8 0, ptr %137, align 1, !tbaa !84
  call void @llvm.lifetime.start.p0(i64 24, ptr %138) #0
  %1445 = getelementptr inbounds %class.anon.488, ptr %138, i32 0, i32 0
  store ptr %137, ptr %1445, align 8, !tbaa !5
  %1446 = getelementptr inbounds %class.anon.488, ptr %138, i32 0, i32 1
  store ptr %5, ptr %1446, align 8, !tbaa !5
  %1447 = getelementptr inbounds %class.anon.488, ptr %138, i32 0, i32 2
  %1448 = load ptr, ptr %17, align 8, !tbaa !5
  store ptr %1448, ptr %1447, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %139) #0
  %1449 = load ptr, ptr %9, align 8, !tbaa !5
  %1450 = load ptr, ptr %135, align 8, !tbaa !5
  %1451 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvN3HIR7TypeRefEEEC2IRZNK15TraitResolution22find_trait_impls_magicERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKS1_S_IFb7ImplRefNS0_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %140, ptr noundef nonnull align 8 dereferenceable(24) %138)
          to label %1452 unwind label %1463

1452:                                             ; preds = %1444
  %1453 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_St8functionIFvS4_EE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %1449, ptr noundef nonnull align 8 dereferenceable(8) %1450, ptr noundef nonnull align 8 dereferenceable(8) %1451, ptr noundef %140)
          to label %1454 unwind label %1467

1454:                                             ; preds = %1452
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #0
  store i32 %1453, ptr %139, align 4, !tbaa !35
  %1455 = load i32, ptr %139, align 4, !tbaa !35
  %1456 = icmp eq i32 %1455, 0
  br i1 %1456, label %1457, label %1495

1457:                                             ; preds = %1454
  %1458 = load i8, ptr %137, align 1, !tbaa !84, !range !85, !noundef !86
  %1459 = trunc i8 %1458 to i1
  %1460 = xor i1 %1459, true
  br i1 %1460, label %1461, label %1462

1461:                                             ; preds = %1457
  br label %1472

1462:                                             ; preds = %1457
  call void @__assert_fail(ptr noundef @.str.73, ptr noundef @.str.7, i32 noundef 1540, ptr noundef @__PRETTY_FUNCTION__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE) #11
  unreachable

1463:                                             ; preds = %1472, %1444
  %1464 = landingpad { ptr, i32 }
          cleanup
  %1465 = extractvalue { ptr, i32 } %1464, 0
  store ptr %1465, ptr %14, align 8
  %1466 = extractvalue { ptr, i32 } %1464, 1
  store i32 %1466, ptr %15, align 4
  br label %1498

1467:                                             ; preds = %1452
  %1468 = landingpad { ptr, i32 }
          cleanup
  %1469 = extractvalue { ptr, i32 } %1468, 0
  store ptr %1469, ptr %14, align 8
  %1470 = extractvalue { ptr, i32 } %1468, 1
  store i32 %1470, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %140) #0
  br label %1498

1471:                                             ; No predecessors!
  br label %1472

1472:                                             ; preds = %1471, %1461
  %1473 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %142, ptr noundef nonnull align 8 dereferenceable(8) %1473)
          to label %1474 unwind label %1463

1474:                                             ; preds = %1472
  %1475 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %143, ptr noundef nonnull align 8 dereferenceable(24) %1475)
          to label %1476 unwind label %1481

1476:                                             ; preds = %1474
  call void @llvm.memset.p0.i64(ptr align 8 %144, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %141, ptr noundef %142, ptr noundef %143, ptr noundef %144)
          to label %1477 unwind label %1485

1477:                                             ; preds = %1476
  %1478 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %141, i32 noundef 0)
          to label %1479 unwind label %1489

1479:                                             ; preds = %1477
  %1480 = zext i1 %1478 to i8
  store i8 %1480, ptr %137, align 1, !tbaa !84
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %141) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #0
  br label %1495

1481:                                             ; preds = %1474
  %1482 = landingpad { ptr, i32 }
          cleanup
  %1483 = extractvalue { ptr, i32 } %1482, 0
  store ptr %1483, ptr %14, align 8
  %1484 = extractvalue { ptr, i32 } %1482, 1
  store i32 %1484, ptr %15, align 4
  br label %1494

1485:                                             ; preds = %1476
  %1486 = landingpad { ptr, i32 }
          cleanup
  %1487 = extractvalue { ptr, i32 } %1486, 0
  store ptr %1487, ptr %14, align 8
  %1488 = extractvalue { ptr, i32 } %1486, 1
  store i32 %1488, ptr %15, align 4
  br label %1493

1489:                                             ; preds = %1477
  %1490 = landingpad { ptr, i32 }
          cleanup
  %1491 = extractvalue { ptr, i32 } %1490, 0
  store ptr %1491, ptr %14, align 8
  %1492 = extractvalue { ptr, i32 } %1490, 1
  store i32 %1492, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %141) #0
  br label %1493

1493:                                             ; preds = %1489, %1485
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %144) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %143) #0
  br label %1494

1494:                                             ; preds = %1493, %1481
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %142) #0
  br label %1498

1495:                                             ; preds = %1479, %1454
  %1496 = load i8, ptr %137, align 1, !tbaa !84, !range !85, !noundef !86
  %1497 = trunc i8 %1496 to i1
  store i1 %1497, ptr %7, align 1
  store i32 1, ptr %23, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %138) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #0
  br label %1499

1498:                                             ; preds = %1494, %1467, %1463
  call void @llvm.lifetime.end.p0(i64 4, ptr %139) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %138) #0
  call void @llvm.lifetime.end.p0(i64 1, ptr %137) #0
  br label %1500

1499:                                             ; preds = %1495, %1435
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %1643

1500:                                             ; preds = %1498, %1440, %1436
  call void @llvm.lifetime.end.p0(i64 8, ptr %135) #0
  br label %1645

1501:                                             ; preds = %1390
  %1502 = load ptr, ptr %10, align 8, !tbaa !5
  %1503 = load ptr, ptr %16, align 8, !tbaa !5
  %1504 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %1502, ptr noundef nonnull align 8 dereferenceable(8) %1503)
          to label %1505 unwind label %218

1505:                                             ; preds = %1501
  br i1 %1504, label %1506, label %1642

1506:                                             ; preds = %1505
  %1507 = load ptr, ptr %9, align 8, !tbaa !5
  %1508 = load ptr, ptr %10, align 8, !tbaa !5
  %1509 = load ptr, ptr %11, align 8, !tbaa !5
  %1510 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %145, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1511 unwind label %218

1511:                                             ; preds = %1506
  %1512 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE(ptr noundef nonnull align 8 dereferenceable(280) %157, ptr noundef nonnull align 8 dereferenceable(8) %1507, ptr noundef nonnull align 8 dereferenceable(8) %1508, ptr noundef nonnull align 8 dereferenceable(24) %1509, ptr noundef nonnull align 8 dereferenceable(8) %1510, ptr noundef %145)
          to label %1513 unwind label %1515

1513:                                             ; preds = %1511
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #0
  br i1 %1512, label %1514, label %1519

1514:                                             ; preds = %1513
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %1643

1515:                                             ; preds = %1511
  %1516 = landingpad { ptr, i32 }
          cleanup
  %1517 = extractvalue { ptr, i32 } %1516, 0
  store ptr %1517, ptr %14, align 8
  %1518 = extractvalue { ptr, i32 } %1516, 1
  store i32 %1518, ptr %15, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %145) #0
  br label %1645

1519:                                             ; preds = %1513
  call void @llvm.lifetime.start.p0(i64 8, ptr %146) #0
  %1520 = load ptr, ptr %11, align 8, !tbaa !5
  %1521 = getelementptr inbounds %"struct.HIR::PathParams", ptr %1520, i32 0, i32 1
  %1522 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %1521, i64 noundef 0)
          to label %1523 unwind label %1574

1523:                                             ; preds = %1519
  store ptr %1522, ptr %146, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %147) #0
  %1524 = load ptr, ptr %17, align 8, !tbaa !5
  %1525 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1524)
          to label %1526 unwind label %1578

1526:                                             ; preds = %1523
  %1527 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1525)
          to label %1528 unwind label %1578

1528:                                             ; preds = %1526
  store ptr %1527, ptr %147, align 8, !tbaa !5
  %1529 = load ptr, ptr %147, align 8, !tbaa !5
  %1530 = icmp ne ptr %1529, null
  br i1 %1530, label %1531, label %1633

1531:                                             ; preds = %1528
  call void @llvm.lifetime.start.p0(i64 8, ptr %148) #0
  %1532 = load ptr, ptr %146, align 8, !tbaa !5
  %1533 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %1532)
          to label %1534 unwind label %1582

1534:                                             ; preds = %1531
  %1535 = invoke noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1533)
          to label %1536 unwind label %1582

1536:                                             ; preds = %1534
  store ptr %1535, ptr %148, align 8, !tbaa !5
  %1537 = load ptr, ptr %148, align 8, !tbaa !5
  %1538 = icmp ne ptr %1537, null
  br i1 %1538, label %1539, label %1628

1539:                                             ; preds = %1536
  %1540 = load ptr, ptr %148, align 8, !tbaa !5
  %1541 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1540, i32 0, i32 0
  %1542 = load i32, ptr %1541, align 8, !tbaa !87
  %1543 = load ptr, ptr %147, align 8, !tbaa !5
  %1544 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1543, i32 0, i32 0
  %1545 = load i32, ptr %1544, align 8, !tbaa !87
  %1546 = icmp slt i32 %1542, %1545
  br i1 %1546, label %1547, label %1627

1547:                                             ; preds = %1539
  call void @llvm.lifetime.start.p0(i64 4, ptr %149) #0
  %1548 = load ptr, ptr %147, align 8, !tbaa !5
  %1549 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1548, i32 0, i32 1
  %1550 = load ptr, ptr %9, align 8, !tbaa !5
  %1551 = load ptr, ptr %148, align 8, !tbaa !5
  %1552 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1551, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 16, ptr %150) #0
  %1553 = getelementptr inbounds %class.TraitResolution, ptr %157, i32 0, i32 2
  %1554 = load ptr, ptr %1553, align 8, !tbaa !29
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %150, ptr noundef nonnull align 8 dereferenceable(49) %1554)
          to label %1555 unwind label %1586

1555:                                             ; preds = %1547
  %1556 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %1549, ptr noundef nonnull align 8 dereferenceable(8) %1550, ptr noundef nonnull align 8 dereferenceable(8) %1552, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %1557 unwind label %1586

1557:                                             ; preds = %1555
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #0
  store i32 %1556, ptr %149, align 4, !tbaa !35
  %1558 = load i32, ptr %149, align 4, !tbaa !35
  %1559 = icmp ne i32 %1558, 2
  br i1 %1559, label %1560, label %1622

1560:                                             ; preds = %1557
  call void @llvm.lifetime.start.p0(i64 24, ptr %151) #0
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %151)
          to label %1561 unwind label %1590

1561:                                             ; preds = %1560
  %1562 = getelementptr inbounds %"struct.HIR::PathParams", ptr %151, i32 0, i32 1
  %1563 = load ptr, ptr %146, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %152, ptr noundef nonnull align 8 dereferenceable(8) %1563)
          to label %1564 unwind label %1594

1564:                                             ; preds = %1561
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %1562, ptr noundef %152)
          to label %1565 unwind label %1598

1565:                                             ; preds = %1564
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #0
  %1566 = load ptr, ptr %17, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %154, ptr noundef nonnull align 8 dereferenceable(8) %1566)
          to label %1567 unwind label %1594

1567:                                             ; preds = %1565
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %155, ptr noundef nonnull align 8 dereferenceable(24) %151)
          to label %1568 unwind label %1602

1568:                                             ; preds = %1567
  call void @llvm.memset.p0.i64(ptr align 8 %156, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %156) #0
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %153, ptr noundef %154, ptr noundef %155, ptr noundef %156)
          to label %1569 unwind label %1606

1569:                                             ; preds = %1568
  %1570 = load i32, ptr %149, align 4, !tbaa !35
  %1571 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef %153, i32 noundef %1570)
          to label %1572 unwind label %1610

1572:                                             ; preds = %1569
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %153) #0
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %156) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %155) #0
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  br i1 %1571, label %1573, label %1616

1573:                                             ; preds = %1572
  store i1 true, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %1617

1574:                                             ; preds = %1519
  %1575 = landingpad { ptr, i32 }
          cleanup
  %1576 = extractvalue { ptr, i32 } %1575, 0
  store ptr %1576, ptr %14, align 8
  %1577 = extractvalue { ptr, i32 } %1575, 1
  store i32 %1577, ptr %15, align 4
  br label %1641

1578:                                             ; preds = %1526, %1523
  %1579 = landingpad { ptr, i32 }
          cleanup
  %1580 = extractvalue { ptr, i32 } %1579, 0
  store ptr %1580, ptr %14, align 8
  %1581 = extractvalue { ptr, i32 } %1579, 1
  store i32 %1581, ptr %15, align 4
  br label %1640

1582:                                             ; preds = %1534, %1531
  %1583 = landingpad { ptr, i32 }
          cleanup
  %1584 = extractvalue { ptr, i32 } %1583, 0
  store ptr %1584, ptr %14, align 8
  %1585 = extractvalue { ptr, i32 } %1583, 1
  store i32 %1585, ptr %15, align 4
  br label %1632

1586:                                             ; preds = %1555, %1547
  %1587 = landingpad { ptr, i32 }
          cleanup
  %1588 = extractvalue { ptr, i32 } %1587, 0
  store ptr %1588, ptr %14, align 8
  %1589 = extractvalue { ptr, i32 } %1587, 1
  store i32 %1589, ptr %15, align 4
  call void @llvm.lifetime.end.p0(i64 16, ptr %150) #0
  br label %1626

1590:                                             ; preds = %1560
  %1591 = landingpad { ptr, i32 }
          cleanup
  %1592 = extractvalue { ptr, i32 } %1591, 0
  store ptr %1592, ptr %14, align 8
  %1593 = extractvalue { ptr, i32 } %1591, 1
  store i32 %1593, ptr %15, align 4
  br label %1621

1594:                                             ; preds = %1565, %1561
  %1595 = landingpad { ptr, i32 }
          cleanup
  %1596 = extractvalue { ptr, i32 } %1595, 0
  store ptr %1596, ptr %14, align 8
  %1597 = extractvalue { ptr, i32 } %1595, 1
  store i32 %1597, ptr %15, align 4
  br label %1620

1598:                                             ; preds = %1564
  %1599 = landingpad { ptr, i32 }
          cleanup
  %1600 = extractvalue { ptr, i32 } %1599, 0
  store ptr %1600, ptr %14, align 8
  %1601 = extractvalue { ptr, i32 } %1599, 1
  store i32 %1601, ptr %15, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %152) #0
  br label %1620

1602:                                             ; preds = %1567
  %1603 = landingpad { ptr, i32 }
          cleanup
  %1604 = extractvalue { ptr, i32 } %1603, 0
  store ptr %1604, ptr %14, align 8
  %1605 = extractvalue { ptr, i32 } %1603, 1
  store i32 %1605, ptr %15, align 4
  br label %1615

1606:                                             ; preds = %1568
  %1607 = landingpad { ptr, i32 }
          cleanup
  %1608 = extractvalue { ptr, i32 } %1607, 0
  store ptr %1608, ptr %14, align 8
  %1609 = extractvalue { ptr, i32 } %1607, 1
  store i32 %1609, ptr %15, align 4
  br label %1614

1610:                                             ; preds = %1569
  %1611 = landingpad { ptr, i32 }
          cleanup
  %1612 = extractvalue { ptr, i32 } %1611, 0
  store ptr %1612, ptr %14, align 8
  %1613 = extractvalue { ptr, i32 } %1611, 1
  store i32 %1613, ptr %15, align 4
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %153) #0
  br label %1614

1614:                                             ; preds = %1610, %1606
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %156) #0
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %155) #0
  br label %1615

1615:                                             ; preds = %1614, %1602
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %154) #0
  br label %1620

1616:                                             ; preds = %1572
  store i32 0, ptr %23, align 4
  br label %1617

1617:                                             ; preds = %1616, %1573
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %151) #0
  call void @llvm.lifetime.end.p0(i64 24, ptr %151) #0
  %1618 = load i32, ptr %23, align 4
  switch i32 %1618, label %1623 [
    i32 0, label %1619
  ]

1619:                                             ; preds = %1617
  br label %1622

1620:                                             ; preds = %1615, %1598, %1594
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %151) #0
  br label %1621

1621:                                             ; preds = %1620, %1590
  call void @llvm.lifetime.end.p0(i64 24, ptr %151) #0
  br label %1626

1622:                                             ; preds = %1619, %1557
  store i32 0, ptr %23, align 4
  br label %1623

1623:                                             ; preds = %1622, %1617
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #0
  %1624 = load i32, ptr %23, align 4
  switch i32 %1624, label %1629 [
    i32 0, label %1625
  ]

1625:                                             ; preds = %1623
  br label %1627

1626:                                             ; preds = %1621, %1586
  call void @llvm.lifetime.end.p0(i64 4, ptr %149) #0
  br label %1632

1627:                                             ; preds = %1625, %1539
  br label %1628

1628:                                             ; preds = %1627, %1536
  store i32 0, ptr %23, align 4
  br label %1629

1629:                                             ; preds = %1628, %1623
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  %1630 = load i32, ptr %23, align 4
  switch i32 %1630, label %1634 [
    i32 0, label %1631
  ]

1631:                                             ; preds = %1629
  br label %1633

1632:                                             ; preds = %1626, %1582
  call void @llvm.lifetime.end.p0(i64 8, ptr %148) #0
  br label %1640

1633:                                             ; preds = %1631, %1528
  store i32 0, ptr %23, align 4
  br label %1634

1634:                                             ; preds = %1633, %1629
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #0
  %1635 = load i32, ptr %23, align 4
  switch i32 %1635, label %1637 [
    i32 0, label %1636
  ]

1636:                                             ; preds = %1634
  store i32 0, ptr %23, align 4
  br label %1637

1637:                                             ; preds = %1636, %1634
  call void @llvm.lifetime.end.p0(i64 8, ptr %146) #0
  %1638 = load i32, ptr %23, align 4
  switch i32 %1638, label %1643 [
    i32 0, label %1639
  ]

1639:                                             ; preds = %1637
  br label %1642

1640:                                             ; preds = %1632, %1578
  call void @llvm.lifetime.end.p0(i64 8, ptr %147) #0
  br label %1641

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

1642:                                             ; preds = %1639, %1505
  store i1 false, ptr %7, align 1
  store i32 1, ptr %23, align 4
  br label %1643

1643:                                             ; preds = %1642, %1637, %1514, %1499, %1385, %1370, %1343, %1301, %793, %721, %591, %523, %471, %320, %284, %260, %231
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #0
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  %1644 = load i1, ptr %7, align 1
  ret i1 %1644

1645:                                             ; preds = %1641, %1515, %1500, %1413, %1412, %1384, %1357, %1303, %886, %835, %773, %672, %541, %524, %474, %321, %285, %261, %232, %218
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %18) #0
  br label %1646

1646:                                             ; preds = %1645, %214
  call void @llvm.lifetime.end.p0(i64 40, ptr %18) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #0
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #0
  br label %1647

1647:                                             ; preds = %1646, %210
  %1648 = load ptr, ptr %14, align 8
  %1649 = load i32, ptr %15, align 4
  %1650 = insertvalue { ptr, i32 } poison, ptr %1648, 0
  %1651 = insertvalue { ptr, i32 } %1650, i32 %1649, 1
  resume { ptr, i32 } %1651

1652:                                             ; preds = %1403, %1156, %1113
  unreachable
}

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

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

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

; Function Attrs: nounwind
declare void @__cxa_guard_abort(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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_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 uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.450") align 8, ptr noundef nonnull align 1 dereferenceable(6), ptr noundef nonnull align 8 dereferenceable(40)) #4

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.450") align 8, ptr noundef nonnull align 1 dereferenceable(7), ptr noundef nonnull align 8 dereferenceable(40)) #4

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) #4 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) #4 align 2

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

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

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

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

declare void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, i32 noundef) #2

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_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 void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_2vEEOT_"(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 void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.457") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) #4

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

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

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184)) #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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { noreturn }
attributes #11 = { noreturn nounwind }

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

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


; 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"

%"struct.HIR::PathParams" = type { %class.ThinVector.26, %class.ThinVector.27, %class.ThinVector.28 }
%class.ThinVector.26 = type { ptr }
%class.ThinVector.27 = type { ptr }
%class.ThinVector.28 = type { ptr }
%"class.std::map" = type { %"class.std::_Rb_tree" }
%"class.std::_Rb_tree" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%class.RcString = type { ptr }
%"class.HIR::TypeRef" = type { ptr }
%"struct.HMTypeInferrence::ResolvePlaceholders" = type { %"class.HIR::ResolvePlaceholders", ptr }
%"class.HIR::ResolvePlaceholders" = type { ptr }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.447 = type { ptr, ptr, 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 }
%"struct.std::pair.450" = type { ptr, %"struct.HIR::TraitPath::AtyEqual" }
%"struct.HIR::TraitPath::AtyEqual" = type { %"class.HIR::GenericPath", %"class.HIR::TypeRef" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.std::pair.457" = type { %class.RcString, %"struct.HIR::TraitPath::AtyEqual" }
%"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.std::unique_ptr.29" = type { %"struct.std::__uniq_ptr_data.30" }
%"struct.std::__uniq_ptr_data.30" = type { %"class.std::__uniq_ptr_impl.31" }
%"class.std::__uniq_ptr_impl.31" = type { %"class.std::tuple.32" }
%"class.std::tuple.32" = type { %"struct.std::_Tuple_impl.33" }
%"struct.std::_Tuple_impl.33" = type { %"struct.std::_Head_base.36" }
%"struct.std::_Head_base.36" = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%struct.Span = type { ptr }
%class.anon.484 = type { ptr, ptr }
%class.anon.485 = type { ptr, ptr }
%class.anon.486 = type { i8 }
%"class.std::function.444" = type { %"class.std::_Function_base", ptr }
%class.anon.488 = type { ptr, ptr, ptr }
%"class.std::function.489" = type { %"class.std::_Function_base", ptr }

@__dso_handle = external hidden global i8
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@.str.7 = external hidden unnamed_addr constant [81 x i8], align 1
@.str.8 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.42 = external hidden unnamed_addr constant [2 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params = external hidden global %"struct.HIR::PathParams", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params = external hidden global i64, align 8
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global %"class.std::map", align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc = external hidden global i64, align 8
@.str.61 = external hidden unnamed_addr constant [15 x i8], align 1
@__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [23 x i8], align 1
@gTargetVersion = external local_unnamed_addr global i32, align 4
@.str.62 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.63 = external hidden unnamed_addr constant [6 x i8], align 1
@.str.64 = external hidden unnamed_addr constant [7 x i8], align 1
@.str.65 = external hidden unnamed_addr constant [18 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant = external hidden global %class.RcString, align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant = external hidden global i64, align 8
@.str.66 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.67 = external hidden unnamed_addr constant [14 x i8], align 1
@_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata = external hidden global %class.RcString, align 8
@_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata = external hidden global i64, align 8
@.str.68 = external hidden unnamed_addr constant [9 x i8], align 1
@.str.69 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.70 = external hidden unnamed_addr constant [24 x i8], align 1
@.str.71 = external hidden unnamed_addr constant [26 x i8], align 1
@.str.72 = external hidden unnamed_addr constant [12 x i8], align 1
@.str.73 = external hidden unnamed_addr constant [4 x i8], align 1
@__PRETTY_FUNCTION__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE = external hidden unnamed_addr constant [162 x i8], align 1

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

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #2

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

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

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

; 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 @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

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

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

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

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

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

declare 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 #8

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

; Function Attrs: inlinehint mustprogress nounwind uwtable
declare dso_local void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #5 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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8), i64 noundef) local_unnamed_addr #6 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_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 nonnull align 8 dereferenceable(24) %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 %class.TraceLog, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.447, align 8
  %10 = alloca %struct.ImplRef, align 8
  %11 = alloca %struct.ImplRef, align 8
  %12 = alloca %struct.ImplRef, align 8
  %13 = alloca %struct.ImplRef, align 8
  %14 = alloca %"class.std::map", align 8
  %15 = alloca %"struct.std::pair.450", align 8
  %16 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %17 = alloca %"struct.HIR::SimplePath", align 8
  %18 = alloca %"struct.std::pair.450", align 8
  %19 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %20 = alloca %"struct.HIR::SimplePath", align 8
  %21 = alloca %"struct.HIR::PathParams", align 8
  %22 = alloca %"class.HIR::TypeRef", align 8
  %23 = alloca %struct.ImplRef, align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"struct.HIR::PathParams", align 8
  %26 = alloca %"class.std::map", align 8
  %27 = alloca %struct.ImplRef, align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"struct.HIR::PathParams", align 8
  %30 = alloca %"class.std::map", align 8
  %31 = alloca %"class.std::map", align 8
  %32 = alloca %"struct.std::pair.457", align 8
  %33 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %34 = alloca %"struct.HIR::SimplePath", align 8
  %35 = alloca %"class.HIR::Path", align 8
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca %"class.HIR::GenericPath", align 8
  %38 = alloca %"struct.HIR::SimplePath", align 8
  %39 = alloca %class.RcString, align 8
  %40 = alloca %"struct.HIR::PathParams", align 8
  %41 = alloca %"class.HIR::TypePathBinding", align 8
  %42 = alloca %struct.ImplRef, align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"struct.HIR::PathParams", align 8
  %45 = alloca %"class.std::map", align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %"class.std::map", align 8
  %48 = alloca %"struct.std::pair.457", align 8
  %49 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %50 = alloca %"struct.HIR::SimplePath", align 8
  %51 = alloca %struct.ImplRef, align 8
  %52 = alloca %"class.HIR::TypeRef", align 8
  %53 = alloca %"struct.HIR::PathParams", align 8
  %54 = alloca %"class.std::map", align 8
  %55 = alloca %"class.std::map", align 8
  %56 = alloca %"struct.std::pair.457", align 8
  %57 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %58 = alloca %"struct.HIR::SimplePath", align 8
  %59 = alloca %struct.ImplRef, align 8
  %60 = alloca %"class.HIR::TypeRef", align 8
  %61 = alloca %"struct.HIR::PathParams", align 8
  %62 = alloca %"class.std::map", align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %struct.ImplRef, align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = alloca %"struct.HIR::PathParams", align 8
  %67 = alloca %"class.std::map", align 8
  %68 = alloca %"class.HIR::TypeRef", align 8
  %69 = alloca %"class.HIR::TypeRef", align 8
  %70 = alloca %"class.HIR::Path", align 8
  %71 = alloca %"class.HIR::GenericPath", align 8
  %72 = alloca %"struct.HIR::SimplePath", align 8
  %73 = alloca %"struct.HIR::PathParams", align 8
  %74 = alloca %"class.HIR::TypeRef", align 8
  %75 = alloca %"class.HIR::TypePathBinding", align 8
  %76 = alloca %"class.HIR::TypeRef", align 8
  %77 = alloca %"class.HIR::TypeRef", align 8
  %78 = alloca ptr, align 8
  %79 = alloca %struct.Span, align 8
  %80 = alloca %"class.std::function", align 8
  %81 = alloca %class.anon.484, align 8
  %82 = alloca %"class.HIR::TypeRef", align 8
  %83 = alloca ptr, align 8
  %84 = alloca %struct.Span, align 8
  %85 = alloca %"class.std::function", align 8
  %86 = alloca %class.anon.485, align 8
  %87 = alloca %"class.HIR::TypeRef", align 8
  %88 = alloca %"class.std::map", align 8
  %89 = alloca %"class.HIR::TypeRef", align 8
  %90 = alloca %"struct.std::pair.457", align 8
  %91 = alloca %class.RcString, align 8
  %92 = alloca %"struct.HIR::TraitPath::AtyEqual", align 8
  %93 = alloca %"struct.HIR::SimplePath", align 8
  %94 = alloca %struct.ImplRef, align 8
  %95 = alloca %"class.HIR::TypeRef", align 8
  %96 = alloca %"struct.HIR::PathParams", align 8
  %97 = alloca %"class.std::map", align 8
  %98 = alloca %struct.ImplRef, align 8
  %99 = alloca %"class.HIR::TypeRef", align 8
  %100 = alloca %"struct.HIR::PathParams", align 8
  %101 = alloca %"class.std::map", align 8
  %102 = alloca %struct.ImplRef, align 8
  %103 = alloca %"class.HIR::TypeRef", align 8
  %104 = alloca %"struct.HIR::PathParams", align 8
  %105 = alloca %"class.std::map", align 8
  %106 = alloca %struct.Span, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.486, align 1
  %109 = alloca %"class.std::function.444", align 8
  %110 = alloca i8, align 1
  %111 = alloca %class.anon.488, align 8
  %112 = alloca %"class.std::function.489", align 8
  %113 = alloca %struct.ImplRef, align 8
  %114 = alloca %"class.HIR::TypeRef", align 8
  %115 = alloca %"struct.HIR::PathParams", align 8
  %116 = alloca %"class.std::map", align 8
  %117 = alloca %"class.std::function.444", align 8
  %118 = alloca %"struct.HMTypeInferrence::ResolvePlaceholders", align 8
  %119 = alloca %"struct.HIR::PathParams", align 8
  %120 = alloca %"class.HIR::TypeRef", align 8
  %121 = alloca %struct.ImplRef, align 8
  %122 = alloca %"class.HIR::TypeRef", align 8
  %123 = alloca %"struct.HIR::PathParams", align 8
  %124 = alloca %"class.std::map", align 8
  %125 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params acquire, align 8
  %126 = icmp eq i8 %125, 0
  br i1 %126, label %127, label %132, !prof !5

127:                                              ; preds = %6
  %128 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #10
  %.not = icmp eq i32 %128, 0
  br i1 %.not, label %132, label %129

129:                                              ; preds = %127
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params)
          to label %130 unwind label %160

130:                                              ; preds = %129
  %131 = tail call i32 @__cxa_atexit(ptr nonnull @_ZN3HIR10PathParamsD2Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr nonnull @__dso_handle) #10
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #10
  br label %132

132:                                              ; preds = %130, %127, %6
  %133 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc acquire, align 8
  %134 = icmp eq i8 %133, 0
  br i1 %134, label %135, label %139, !prof !5

135:                                              ; preds = %132
  %136 = tail call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #10
  %.not273 = icmp eq i32 %136, 0
  br i1 %.not273, label %139, label %137

137:                                              ; preds = %135
  tail call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #10
  %138 = tail call i32 @__cxa_atexit(ptr nonnull @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc, ptr nonnull @__dso_handle) #10
  tail call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc) #10
  br label %139

139:                                              ; preds = %137, %135, %132
  %140 = load ptr, ptr %0, align 8, !tbaa !6
  %141 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %140, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.61)
  %142 = getelementptr inbounds i8, ptr %0, i64 224
  %143 = load ptr, ptr %142, align 8, !tbaa !28
  %144 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %143, ptr noundef nonnull align 8 dereferenceable(8) %4)
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #10
  %145 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %146 = select i1 %145, ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #10
  store ptr %2, ptr %9, align 8, !tbaa !34
  %147 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %3, ptr %147, align 8, !tbaa !34
  %148 = getelementptr inbounds i8, ptr %9, i64 16
  store ptr %144, ptr %148, align 8, !tbaa !34
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(24) %9)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %146, ptr noundef nonnull %8)
          to label %149 unwind label %162

149:                                              ; preds = %139
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #10
  %150 = getelementptr inbounds i8, ptr %0, i64 128
  %151 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %150)
          to label %152 unwind label %164

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

153:                                              ; preds = %152
  %154 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %155 unwind label %166

155:                                              ; preds = %153
  %.not387 = icmp eq i32 %154, 2
  br i1 %.not387, label %937, label %156

156:                                              ; preds = %155
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %10, ptr noundef null, ptr noundef nonnull %144, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %157 unwind label %166

157:                                              ; preds = %156
  %158 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %10, i32 noundef %154)
          to label %159 unwind label %168

159:                                              ; preds = %157
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %10) #10
  br label %937

160:                                              ; preds = %129
  %161 = landingpad { ptr, i32 }
          cleanup
  tail call void @__cxa_guard_abort(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params) #10
  br label %940

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

164:                                              ; preds = %881, %878, %824, %.thread411, %799, %782, %768, %765, %514, %511, %333, %311, %308, %223, %206, %197, %191, %188, %170, %149
  %165 = landingpad { ptr, i32 }
          cleanup
  br label %938

166:                                              ; preds = %156, %153
  %167 = landingpad { ptr, i32 }
          cleanup
  br label %938

168:                                              ; preds = %157
  %169 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %10) #10
  br label %938

170:                                              ; preds = %152
  %171 = getelementptr inbounds i8, ptr %0, i64 104
  %172 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %171)
          to label %173 unwind label %164

173:                                              ; preds = %170
  br i1 %172, label %174, label %185

174:                                              ; preds = %173
  %175 = invoke noundef i32 @_ZNK15TraitResolution12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %176 unwind label %181

176:                                              ; preds = %174
  %.not384 = icmp eq i32 %175, 2
  br i1 %.not384, label %937, label %177

177:                                              ; preds = %176
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %11, ptr noundef null, ptr noundef nonnull %144, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %178 unwind label %181

178:                                              ; preds = %177
  %179 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %11, i32 noundef %175)
          to label %180 unwind label %183

180:                                              ; preds = %178
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #10
  br label %937

181:                                              ; preds = %177, %174
  %182 = landingpad { ptr, i32 }
          cleanup
  br label %938

183:                                              ; preds = %178
  %184 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %11) #10
  br label %938

185:                                              ; preds = %173
  %186 = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %187 = icmp sgt i32 %186, 3
  br i1 %187, label %188, label %203

188:                                              ; preds = %185
  %189 = load ptr, ptr %0, align 8, !tbaa !6
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %189, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.62)
          to label %191 unwind label %164

191:                                              ; preds = %188
  %192 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %190)
          to label %193 unwind label %164

193:                                              ; preds = %191
  br i1 %192, label %194, label %thread-pre-split

194:                                              ; preds = %193
  %195 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %196 = call noundef zeroext i1 @_ZNK3HIR8TypeData11is_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %195)
  br i1 %196, label %197, label %thread-pre-split

197:                                              ; preds = %194
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %12, ptr noundef null, ptr noundef nonnull %144, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %198 unwind label %164

198:                                              ; preds = %197
  %199 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %12, i32 noundef 0)
          to label %200 unwind label %201

200:                                              ; preds = %198
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %12) #10
  br label %937

201:                                              ; preds = %198
  %202 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %12) #10
  br label %938

thread-pre-split:                                 ; preds = %193, %194
  %.pr = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  br label %203

203:                                              ; preds = %thread-pre-split, %185
  %204 = phi i32 [ %.pr, %thread-pre-split ], [ %186, %185 ]
  %205 = icmp sgt i32 %204, 0
  br i1 %205, label %206, label %.thread411

206:                                              ; preds = %203
  %207 = getelementptr inbounds i8, ptr %0, i64 112
  %208 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %207)
          to label %209 unwind label %164

209:                                              ; preds = %206
  br i1 %208, label %210, label %221

210:                                              ; preds = %209
  %211 = invoke noundef i32 @_ZNK15TraitResolution13type_is_cloneERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %212 unwind label %217

212:                                              ; preds = %210
  %.not381 = icmp eq i32 %211, 2
  br i1 %.not381, label %937, label %213

213:                                              ; preds = %212
  invoke void @_ZN7ImplRefC2EPKN3HIR13GenericParamsEPKNS0_7TypeRefEPKNS0_10PathParamsEPKSt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessISB_ESaISt4pairIKSB_SD_EEE(ptr noundef nonnull align 8 dereferenceable(184) %13, ptr noundef null, ptr noundef nonnull %144, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE11null_params, ptr noundef nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE10null_assoc)
          to label %214 unwind label %217

214:                                              ; preds = %213
  %215 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %13, i32 noundef %211)
          to label %216 unwind label %219

216:                                              ; preds = %214
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  br label %937

217:                                              ; preds = %213, %210
  %218 = landingpad { ptr, i32 }
          cleanup
  br label %938

219:                                              ; preds = %214
  %220 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %13) #10
  br label %938

221:                                              ; preds = %209
  %.pre = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %222 = icmp sgt i32 %.pre, 1
  br i1 %222, label %223, label %.thread411

223:                                              ; preds = %221
  %224 = getelementptr inbounds i8, ptr %0, i64 184
  %225 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %224)
          to label %226 unwind label %164

226:                                              ; preds = %223
  br i1 %225, label %227, label %.thread

227:                                              ; preds = %226
  %228 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %229 = call noundef ptr @_ZNK3HIR8TypeData13opt_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %228)
  %.not274 = icmp eq ptr %229, null
  br i1 %.not274, label %.thread, label %230

230:                                              ; preds = %227
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %14) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %16) #10
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %231 unwind label %258

231:                                              ; preds = %230
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull %17)
          to label %232 unwind label %260

232:                                              ; preds = %231
  %233 = getelementptr inbounds i8, ptr %16, i64 32
  %234 = load ptr, ptr %229, align 8, !tbaa !37
  %235 = getelementptr inbounds i8, ptr %234, i64 48
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %233, ptr noundef nonnull align 8 dereferenceable(8) %235)
          to label %236 unwind label %262

236:                                              ; preds = %232
  invoke void @_ZSt9make_pairIRA6_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.450") align 8 %15, ptr noundef nonnull align 1 dereferenceable(6) @.str.63, ptr noundef nonnull align 8 dereferenceable(40) %16)
          to label %237 unwind label %264

237:                                              ; preds = %236
  %238 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %15)
          to label %239 unwind label %266

239:                                              ; preds = %237
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %19) #10
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %240 unwind label %271

240:                                              ; preds = %239
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull %20)
          to label %241 unwind label %273

241:                                              ; preds = %240
  %242 = getelementptr inbounds i8, ptr %19, i64 32
  %243 = load ptr, ptr %229, align 8, !tbaa !37
  %244 = getelementptr inbounds i8, ptr %243, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %242, ptr noundef nonnull align 8 dereferenceable(8) %244)
          to label %245 unwind label %275

245:                                              ; preds = %241
  invoke void @_ZSt9make_pairIRA7_KcN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS7_INS8_IT0_E4typeEE6__typeEEOS9_OSE_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.450") align 8 %18, ptr noundef nonnull align 1 dereferenceable(7) @.str.64, ptr noundef nonnull align 8 dereferenceable(40) %19)
          to label %246 unwind label %277

246:                                              ; preds = %245
  %247 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IPKcS3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSG_(ptr noundef nonnull align 8 dereferenceable(48) %14, ptr noundef nonnull align 8 dereferenceable(48) %18)
          to label %248 unwind label %279

248:                                              ; preds = %246
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #10
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %21) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %249 unwind label %284

249:                                              ; preds = %248
  %250 = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %251 = icmp sgt i32 %250, 3
  br i1 %251, label %252, label %290

252:                                              ; preds = %249
  %253 = load ptr, ptr %229, align 8, !tbaa !37
  %254 = getelementptr inbounds i8, ptr %253, i64 40
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %22, ptr noundef nonnull align 8 dereferenceable(8) %254)
          to label %255 unwind label %286

255:                                              ; preds = %252
  %256 = getelementptr inbounds i8, ptr %21, i64 8
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %256, ptr noundef nonnull %22)
          to label %257 unwind label %288

257:                                              ; preds = %255
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %290

258:                                              ; preds = %230
  %259 = landingpad { ptr, i32 }
          cleanup
  br label %270

260:                                              ; preds = %231
  %261 = landingpad { ptr, i32 }
          cleanup
  br label %269

262:                                              ; preds = %232
  %263 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #10
  br label %269

264:                                              ; preds = %236
  %265 = landingpad { ptr, i32 }
          cleanup
  br label %268

266:                                              ; preds = %237
  %267 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %15) #10
  br label %268

268:                                              ; preds = %266, %264
  %.pn = phi { ptr, i32 } [ %267, %266 ], [ %265, %264 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %16) #10
  br label %269

269:                                              ; preds = %268, %262, %260
  %.pn.pn = phi { ptr, i32 } [ %.pn, %268 ], [ %263, %262 ], [ %261, %260 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #10
  br label %270

270:                                              ; preds = %269, %258
  %.pn.pn.pn = phi { ptr, i32 } [ %.pn.pn, %269 ], [ %259, %258 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %16) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %15) #10
  br label %305

271:                                              ; preds = %239
  %272 = landingpad { ptr, i32 }
          cleanup
  br label %283

273:                                              ; preds = %240
  %274 = landingpad { ptr, i32 }
          cleanup
  br label %282

275:                                              ; preds = %241
  %276 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #10
  br label %282

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

279:                                              ; preds = %246
  %280 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairIPKcN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %18) #10
  br label %281

281:                                              ; preds = %279, %277
  %.pn278 = phi { ptr, i32 } [ %280, %279 ], [ %278, %277 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %19) #10
  br label %282

282:                                              ; preds = %281, %275, %273
  %.pn278.pn = phi { ptr, i32 } [ %.pn278, %281 ], [ %276, %275 ], [ %274, %273 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #10
  br label %283

283:                                              ; preds = %282, %271
  %.pn278.pn.pn = phi { ptr, i32 } [ %.pn278.pn, %282 ], [ %272, %271 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %19) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %18) #10
  br label %305

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

286:                                              ; preds = %290, %252
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %303

288:                                              ; preds = %255
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %22) #10
  br label %303

290:                                              ; preds = %257, %249
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %24, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %291 unwind label %286

291:                                              ; preds = %290
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %25, ptr noundef nonnull align 8 dereferenceable(24) %21)
          to label %292 unwind label %295

292:                                              ; preds = %291
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %26, ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %23, ptr noundef nonnull %24, ptr noundef nonnull %25, ptr noundef nonnull %26)
          to label %293 unwind label %297

293:                                              ; preds = %292
  %294 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %23, i32 noundef 0)
          to label %306 unwind label %299

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

297:                                              ; preds = %292
  %298 = landingpad { ptr, i32 }
          cleanup
  br label %301

299:                                              ; preds = %293
  %300 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %23) #10
  br label %301

301:                                              ; preds = %299, %297
  %.pn282 = phi { ptr, i32 } [ %300, %299 ], [ %298, %297 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  br label %302

302:                                              ; preds = %301, %295
  %.pn282.pn = phi { ptr, i32 } [ %.pn282, %301 ], [ %296, %295 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  br label %303

303:                                              ; preds = %302, %288, %286
  %.pn282.pn.pn = phi { ptr, i32 } [ %.pn282.pn, %302 ], [ %287, %286 ], [ %289, %288 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  br label %304

304:                                              ; preds = %303, %284
  %.pn282.pn.pn.pn = phi { ptr, i32 } [ %.pn282.pn.pn, %303 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #10
  br label %305

305:                                              ; preds = %304, %283, %270
  %.pn282.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn282.pn.pn.pn, %304 ], [ %.pn278.pn.pn, %283 ], [ %.pn.pn.pn, %270 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #10
  br label %938

306:                                              ; preds = %293
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %23) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %26) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %25) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %21) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %21) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %14) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %14) #10
  br label %937

.thread:                                          ; preds = %227, %226
  %.pr397 = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %307 = icmp sgt i32 %.pr397, 2
  br i1 %307, label %308, label %.thread411

308:                                              ; preds = %.thread
  %309 = load ptr, ptr %0, align 8, !tbaa !6
  %310 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %309, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.65)
          to label %311 unwind label %164

311:                                              ; preds = %308
  %312 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %310)
          to label %313 unwind label %164

313:                                              ; preds = %311
  br i1 %312, label %314, label %509

314:                                              ; preds = %313
  %315 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant acquire, align 8
  %316 = icmp eq i8 %315, 0
  br i1 %316, label %317, label %322, !prof !5

317:                                              ; preds = %314
  %318 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #10
  %.not345 = icmp eq i32 %318, 0
  br i1 %.not345, label %322, label %319

319:                                              ; preds = %317
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull @.str.66)
          to label %320 unwind label %339

320:                                              ; preds = %319
  %321 = call i32 @__cxa_atexit(ptr nonnull @_ZN8RcStringD1Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #10
  br label %322

322:                                              ; preds = %320, %317, %314
  %323 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %324 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %323)
  br i1 %324, label %333, label %325

325:                                              ; preds = %322
  %326 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %327 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %326)
  br i1 %327, label %328, label %349

328:                                              ; preds = %325
  %329 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %330 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %329)
  %331 = getelementptr inbounds i8, ptr %330, i64 88
  %332 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %331)
  br i1 %332, label %333, label %349

333:                                              ; preds = %328, %322
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %334 unwind label %164

334:                                              ; preds = %333
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %29)
          to label %335 unwind label %341

335:                                              ; preds = %334
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %30, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %27, ptr noundef nonnull %28, ptr noundef nonnull %29, ptr noundef nonnull %30)
          to label %336 unwind label %343

336:                                              ; preds = %335
  %337 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %27, i32 noundef 1)
          to label %338 unwind label %345

338:                                              ; preds = %336
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br label %937

339:                                              ; preds = %319
  %340 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant) #10
  br label %938

341:                                              ; preds = %334
  %342 = landingpad { ptr, i32 }
          cleanup
  br label %348

343:                                              ; preds = %335
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %347

345:                                              ; preds = %336
  %346 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %27) #10
  br label %347

347:                                              ; preds = %345, %343
  %.pn378 = phi { ptr, i32 } [ %346, %345 ], [ %344, %343 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %30) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %29) #10
  br label %348

348:                                              ; preds = %347, %341
  %.pn378.pn = phi { ptr, i32 } [ %.pn378, %347 ], [ %342, %341 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #10
  br label %938

349:                                              ; preds = %328, %325
  %350 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %351 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %350)
  br i1 %351, label %360, label %352

352:                                              ; preds = %349
  %353 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %354 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %353)
  br i1 %354, label %355, label %419

355:                                              ; preds = %352
  %356 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %357 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %356)
  %358 = getelementptr inbounds i8, ptr %357, i64 88
  %359 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %358)
  br i1 %359, label %360, label %419

360:                                              ; preds = %355, %349
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %32) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %33) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %361 unwind label %379

361:                                              ; preds = %360
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %33, ptr noundef nonnull %34)
          to label %362 unwind label %381

362:                                              ; preds = %361
  %363 = getelementptr inbounds i8, ptr %33, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %36, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %364 unwind label %.thread399

364:                                              ; preds = %362
  invoke void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::SimplePath") align 8 %38, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %365 unwind label %.thread403

365:                                              ; preds = %364
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %37, ptr noundef nonnull %38)
          to label %366 unwind label %385

366:                                              ; preds = %365
  call void @_ZN8RcStringC2ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %39, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant)
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %40)
          to label %367 unwind label %387

367:                                              ; preds = %366
  invoke void @_ZN3HIR4PathC1ENS_7TypeRefENS_11GenericPathE8RcStringNS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(88) %35, ptr noundef nonnull %36, ptr noundef nonnull %37, ptr noundef nonnull %39, ptr noundef nonnull %40)
          to label %368 unwind label %389

368:                                              ; preds = %367
  invoke void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypePathBinding") align 8 %41)
          to label %369 unwind label %391

369:                                              ; preds = %368
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %363, ptr noundef nonnull %35, ptr noundef nonnull %41)
          to label %370 unwind label %393

370:                                              ; preds = %369
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.457") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %33)
          to label %371 unwind label %395

371:                                              ; preds = %370
  %372 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef nonnull align 8 dereferenceable(48) %32)
          to label %373 unwind label %397

373:                                              ; preds = %371
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #10
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %43, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %374 unwind label %408

374:                                              ; preds = %373
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %375 unwind label %410

375:                                              ; preds = %374
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %45, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %42, ptr noundef nonnull %43, ptr noundef nonnull %44, ptr noundef nonnull %45)
          to label %376 unwind label %412

376:                                              ; preds = %375
  %377 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %42, i32 noundef 0)
          to label %378 unwind label %414

378:                                              ; preds = %376
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  br label %937

379:                                              ; preds = %360
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %407

381:                                              ; preds = %361
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %406

.thread399:                                       ; preds = %362
  %383 = landingpad { ptr, i32 }
          cleanup
  br label %405

.thread403:                                       ; preds = %364
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br label %405

385:                                              ; preds = %365
  %386 = landingpad { ptr, i32 }
          cleanup
  br label %404

387:                                              ; preds = %366
  %388 = landingpad { ptr, i32 }
          cleanup
  br label %403

389:                                              ; preds = %367
  %390 = landingpad { ptr, i32 }
          cleanup
  br label %402

391:                                              ; preds = %368
  %392 = landingpad { ptr, i32 }
          cleanup
  br label %401

393:                                              ; preds = %369
  %394 = landingpad { ptr, i32 }
          cleanup
  br label %400

395:                                              ; preds = %370
  %396 = landingpad { ptr, i32 }
          cleanup
  br label %399

397:                                              ; preds = %371
  %398 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %32) #10
  br label %399

399:                                              ; preds = %397, %395
  %.pn363 = phi { ptr, i32 } [ %398, %397 ], [ %396, %395 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %33) #10
  br label %400

400:                                              ; preds = %399, %393
  %.0259 = phi i1 [ false, %399 ], [ true, %393 ]
  %.pn363.pn = phi { ptr, i32 } [ %.pn363, %399 ], [ %394, %393 ]
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %41) #10
  br label %401

401:                                              ; preds = %400, %391
  %.1260 = phi i1 [ %.0259, %400 ], [ true, %391 ]
  %.pn363.pn.pn = phi { ptr, i32 } [ %.pn363.pn, %400 ], [ %392, %391 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %35) #10
  br label %402

402:                                              ; preds = %401, %389
  %.2261 = phi i1 [ %.1260, %401 ], [ true, %389 ]
  %.pn363.pn.pn.pn = phi { ptr, i32 } [ %.pn363.pn.pn, %401 ], [ %390, %389 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %40) #10
  br label %403

403:                                              ; preds = %402, %387
  %.3262 = phi i1 [ %.2261, %402 ], [ true, %387 ]
  %.pn363.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn363.pn.pn.pn, %402 ], [ %388, %387 ]
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %37) #10
  br label %404

404:                                              ; preds = %385, %403
  %.4263 = phi i1 [ %.3262, %403 ], [ true, %385 ]
  %.pn363.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn363.pn.pn.pn.pn, %403 ], [ %386, %385 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %38) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #10
  br i1 %.4263, label %405, label %406

405:                                              ; preds = %.thread403, %.thread399, %404
  %.pn363.pn.pn.pn.pn.pn.pn.pn402 = phi { ptr, i32 } [ %383, %.thread399 ], [ %.pn363.pn.pn.pn.pn.pn, %404 ], [ %384, %.thread403 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #10
  br label %406

406:                                              ; preds = %404, %405, %381
  %.pn363.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn363.pn.pn.pn.pn.pn.pn.pn402, %405 ], [ %.pn363.pn.pn.pn.pn.pn, %404 ], [ %382, %381 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #10
  br label %407

407:                                              ; preds = %406, %379
  %.pn363.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn363.pn.pn.pn.pn.pn.pn.pn.pn, %406 ], [ %380, %379 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %33) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %32) #10
  br label %418

408:                                              ; preds = %373
  %409 = landingpad { ptr, i32 }
          cleanup
  br label %418

410:                                              ; preds = %374
  %411 = landingpad { ptr, i32 }
          cleanup
  br label %417

412:                                              ; preds = %375
  %413 = landingpad { ptr, i32 }
          cleanup
  br label %416

414:                                              ; preds = %376
  %415 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %42) #10
  br label %416

416:                                              ; preds = %414, %412
  %.pn374 = phi { ptr, i32 } [ %415, %414 ], [ %413, %412 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %45) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #10
  br label %417

417:                                              ; preds = %416, %410
  %.pn374.pn = phi { ptr, i32 } [ %.pn374, %416 ], [ %411, %410 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #10
  br label %418

418:                                              ; preds = %417, %408, %407
  %.pn374.pn.pn = phi { ptr, i32 } [ %.pn374.pn, %417 ], [ %409, %408 ], [ %.pn363.pn.pn.pn.pn.pn.pn.pn.pn.pn, %407 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #10
  br label %938

419:                                              ; preds = %355, %352
  %420 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %421 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %420)
  br i1 %421, label %422, label %472

422:                                              ; preds = %419
  %423 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %424 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %423)
  %425 = getelementptr inbounds i8, ptr %424, i64 88
  %426 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding7is_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %425)
  br i1 %426, label %427, label %472

427:                                              ; preds = %422
  %428 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %429 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %428)
  %430 = getelementptr inbounds i8, ptr %429, i64 88
  %431 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %430)
  %432 = load ptr, ptr %431, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %46) #10
  %433 = getelementptr inbounds i8, ptr %432, i64 100
  %434 = load i32, ptr %433, align 4, !tbaa !39
  invoke void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %46, i32 noundef %434)
          to label %435 unwind label %447

435:                                              ; preds = %427
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %47) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %48) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %49) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %50, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %436 unwind label %449

436:                                              ; preds = %435
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %49, ptr noundef nonnull %50)
          to label %437 unwind label %451

437:                                              ; preds = %436
  %438 = getelementptr inbounds i8, ptr %49, i64 32
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %438, ptr noundef nonnull align 8 dereferenceable(8) %46)
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.457") align 8 %48, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %49)
          to label %439 unwind label %453

439:                                              ; preds = %437
  %440 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %47, ptr noundef nonnull align 8 dereferenceable(48) %48)
          to label %441 unwind label %455

441:                                              ; preds = %439
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %48) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %52, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %442 unwind label %460

442:                                              ; preds = %441
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %53)
          to label %443 unwind label %462

443:                                              ; preds = %442
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %54, ptr noundef nonnull align 8 dereferenceable(48) %47) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %51, ptr noundef nonnull %52, ptr noundef nonnull %53, ptr noundef nonnull %54)
          to label %444 unwind label %464

444:                                              ; preds = %443
  %445 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %51, i32 noundef 0)
          to label %446 unwind label %466

446:                                              ; preds = %444
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %51) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %47) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %937

447:                                              ; preds = %427
  %448 = landingpad { ptr, i32 }
          cleanup
  br label %471

449:                                              ; preds = %435
  %450 = landingpad { ptr, i32 }
          cleanup
  br label %459

451:                                              ; preds = %436
  %452 = landingpad { ptr, i32 }
          cleanup
  br label %458

453:                                              ; preds = %437
  %454 = landingpad { ptr, i32 }
          cleanup
  br label %457

455:                                              ; preds = %439
  %456 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %48) #10
  br label %457

457:                                              ; preds = %455, %453
  %.pn354 = phi { ptr, i32 } [ %456, %455 ], [ %454, %453 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %49) #10
  br label %458

458:                                              ; preds = %457, %451
  %.pn354.pn = phi { ptr, i32 } [ %.pn354, %457 ], [ %452, %451 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %50) #10
  br label %459

459:                                              ; preds = %458, %449
  %.pn354.pn.pn = phi { ptr, i32 } [ %.pn354.pn, %458 ], [ %450, %449 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %49) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %48) #10
  br label %470

460:                                              ; preds = %441
  %461 = landingpad { ptr, i32 }
          cleanup
  br label %470

462:                                              ; preds = %442
  %463 = landingpad { ptr, i32 }
          cleanup
  br label %469

464:                                              ; preds = %443
  %465 = landingpad { ptr, i32 }
          cleanup
  br label %468

466:                                              ; preds = %444
  %467 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %51) #10
  br label %468

468:                                              ; preds = %466, %464
  %.pn358 = phi { ptr, i32 } [ %467, %466 ], [ %465, %464 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %54) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %53) #10
  br label %469

469:                                              ; preds = %468, %462
  %.pn358.pn = phi { ptr, i32 } [ %.pn358, %468 ], [ %463, %462 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %52) #10
  br label %470

470:                                              ; preds = %469, %460, %459
  %.pn358.pn.pn = phi { ptr, i32 } [ %.pn358.pn, %469 ], [ %461, %460 ], [ %.pn354.pn.pn, %459 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %47) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %47) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #10
  br label %471

471:                                              ; preds = %470, %447
  %.pn358.pn.pn.pn = phi { ptr, i32 } [ %.pn358.pn.pn, %470 ], [ %448, %447 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %46) #10
  br label %938

472:                                              ; preds = %422, %419
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %55) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #10
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %56) #10
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %57) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %473 unwind label %485

473:                                              ; preds = %472
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull %58)
          to label %474 unwind label %487

474:                                              ; preds = %473
  %475 = getelementptr inbounds i8, ptr %57, i64 32
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %475)
          to label %476 unwind label %489

476:                                              ; preds = %474
  invoke void @_ZSt9make_pairIR8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS6_INS7_IT0_E4typeEE6__typeEEOS8_OSD_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.457") align 8 %56, ptr noundef nonnull align 8 dereferenceable(8) @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE17name_Discriminant, ptr noundef nonnull align 8 dereferenceable(40) %57)
          to label %477 unwind label %491

477:                                              ; preds = %476
  %478 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %55, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %479 unwind label %493

479:                                              ; preds = %477
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %60, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %480 unwind label %498

480:                                              ; preds = %479
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %61)
          to label %481 unwind label %500

481:                                              ; preds = %480
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %62, ptr noundef nonnull align 8 dereferenceable(48) %55) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %59, ptr noundef nonnull %60, ptr noundef nonnull %61, ptr noundef nonnull %62)
          to label %482 unwind label %502

482:                                              ; preds = %481
  %483 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %59, i32 noundef 0)
          to label %484 unwind label %504

484:                                              ; preds = %482
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %55) #10
  br label %937

485:                                              ; preds = %472
  %486 = landingpad { ptr, i32 }
          cleanup
  br label %497

487:                                              ; preds = %473
  %488 = landingpad { ptr, i32 }
          cleanup
  br label %496

489:                                              ; preds = %474
  %490 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #10
  br label %496

491:                                              ; preds = %476
  %492 = landingpad { ptr, i32 }
          cleanup
  br label %495

493:                                              ; preds = %477
  %494 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #10
  br label %495

495:                                              ; preds = %493, %491
  %.pn346 = phi { ptr, i32 } [ %494, %493 ], [ %492, %491 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %57) #10
  br label %496

496:                                              ; preds = %495, %489, %487
  %.pn346.pn = phi { ptr, i32 } [ %.pn346, %495 ], [ %490, %489 ], [ %488, %487 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #10
  br label %497

497:                                              ; preds = %496, %485
  %.pn346.pn.pn = phi { ptr, i32 } [ %.pn346.pn, %496 ], [ %486, %485 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %57) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #10
  br label %508

498:                                              ; preds = %479
  %499 = landingpad { ptr, i32 }
          cleanup
  br label %508

500:                                              ; preds = %480
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %507

502:                                              ; preds = %481
  %503 = landingpad { ptr, i32 }
          cleanup
  br label %506

504:                                              ; preds = %482
  %505 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %59) #10
  br label %506

506:                                              ; preds = %504, %502
  %.pn350 = phi { ptr, i32 } [ %505, %504 ], [ %503, %502 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %62) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %61) #10
  br label %507

507:                                              ; preds = %506, %500
  %.pn350.pn = phi { ptr, i32 } [ %.pn350, %506 ], [ %501, %500 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %60) #10
  br label %508

508:                                              ; preds = %507, %498, %497
  %.pn350.pn.pn = phi { ptr, i32 } [ %.pn350.pn, %507 ], [ %499, %498 ], [ %.pn346.pn.pn, %497 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %55) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %55) #10
  br label %938

509:                                              ; preds = %313
  %.pr407 = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %510 = icmp sgt i32 %.pr407, 2
  br i1 %510, label %511, label %.thread411

511:                                              ; preds = %509
  %512 = load ptr, ptr %0, align 8, !tbaa !6
  %513 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %512, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.67)
          to label %514 unwind label %164

514:                                              ; preds = %511
  %515 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %513)
          to label %516 unwind label %164

516:                                              ; preds = %514
  br i1 %515, label %517, label %.thread408

517:                                              ; preds = %516
  %518 = load atomic i8, ptr @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata acquire, align 8
  %519 = icmp eq i8 %518, 0
  br i1 %519, label %520, label %525, !prof !5

520:                                              ; preds = %517
  %521 = call i32 @__cxa_guard_acquire(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #10
  %.not311 = icmp eq i32 %521, 0
  br i1 %.not311, label %525, label %522

522:                                              ; preds = %520
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata, ptr noundef nonnull @.str.68)
          to label %523 unwind label %543

523:                                              ; preds = %522
  %524 = call i32 @__cxa_atexit(ptr nonnull @_ZN8RcStringD1Ev, ptr nonnull @_ZZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata, ptr nonnull @__dso_handle) #10
  call void @__cxa_guard_release(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #10
  br label %525

525:                                              ; preds = %523, %520, %517
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %63) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %526 unwind label %545

526:                                              ; preds = %525
  %527 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %528 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %527)
  br i1 %528, label %537, label %529

529:                                              ; preds = %526
  %530 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %531 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %530)
  br i1 %531, label %532, label %557

532:                                              ; preds = %529
  %533 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %534 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %533)
  %535 = getelementptr inbounds i8, ptr %534, i64 88
  %536 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %535)
  br i1 %536, label %537, label %557

537:                                              ; preds = %532, %526
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %65, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %538 unwind label %547

538:                                              ; preds = %537
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %66)
          to label %539 unwind label %549

539:                                              ; preds = %538
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %67, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %64, ptr noundef nonnull %65, ptr noundef nonnull %66, ptr noundef nonnull %67)
          to label %540 unwind label %551

540:                                              ; preds = %539
  %541 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %64, i32 noundef 1)
          to label %542 unwind label %553

542:                                              ; preds = %540
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %64) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %761

543:                                              ; preds = %522
  %544 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_guard_abort(ptr nonnull @_ZGVZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEEE13name_Metadata) #10
  br label %938

545:                                              ; preds = %525
  %546 = landingpad { ptr, i32 }
          cleanup
  br label %763

547:                                              ; preds = %711, %709, %707, %705, %703, %701, %698, %695, %568, %537
  %548 = landingpad { ptr, i32 }
          cleanup
  br label %762

549:                                              ; preds = %538
  %550 = landingpad { ptr, i32 }
          cleanup
  br label %556

551:                                              ; preds = %539
  %552 = landingpad { ptr, i32 }
          cleanup
  br label %555

553:                                              ; preds = %540
  %554 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %64) #10
  br label %555

555:                                              ; preds = %553, %551
  %.pn340 = phi { ptr, i32 } [ %554, %553 ], [ %552, %551 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %67) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %66) #10
  br label %556

556:                                              ; preds = %555, %549
  %.pn340.pn = phi { ptr, i32 } [ %.pn340, %555 ], [ %550, %549 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #10
  br label %762

557:                                              ; preds = %532, %529
  %558 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %559 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %558)
  br i1 %559, label %568, label %560

560:                                              ; preds = %557
  %561 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %562 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %561)
  br i1 %562, label %563, label %576

563:                                              ; preds = %560
  %564 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %565 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %564)
  %566 = getelementptr inbounds i8, ptr %565, i64 88
  %567 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %566)
  br i1 %567, label %568, label %576

568:                                              ; preds = %563, %557
  %569 = invoke noundef i32 @_ZNK15TraitResolution13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %570 unwind label %547

570:                                              ; preds = %568
  %.not328 = icmp eq i32 %569, 2
  br i1 %.not328, label %695, label %571

571:                                              ; preds = %570
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %68) #10
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %68)
          to label %572 unwind label %574

572:                                              ; preds = %571
  %573 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %68)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %68) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  br label %695

574:                                              ; preds = %571
  %575 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %68) #10
  br label %762

576:                                              ; preds = %563, %560
  %577 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %578 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %577)
  br i1 %578, label %579, label %616

579:                                              ; preds = %576
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %69) #10
  %580 = load ptr, ptr %0, align 8, !tbaa !6
  %581 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %580, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.69)
          to label %582 unwind label %596

582:                                              ; preds = %579
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %72, ptr noundef nonnull align 8 dereferenceable(8) %581)
          to label %583 unwind label %596

583:                                              ; preds = %582
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %74, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %584 unwind label %598

584:                                              ; preds = %583
  invoke void @_ZN3HIR10PathParamsC1ENS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(24) %73, ptr noundef nonnull %74)
          to label %585 unwind label %600

585:                                              ; preds = %584
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathENS_10PathParamsE(ptr noundef nonnull align 8 dereferenceable(32) %71, ptr noundef nonnull %72, ptr noundef nonnull %73)
          to label %586 unwind label %602

586:                                              ; preds = %585
  invoke void @_ZN3HIR4PathC1ENS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(88) %70, ptr noundef nonnull %71)
          to label %587 unwind label %604

587:                                              ; preds = %586
  %588 = load ptr, ptr %0, align 8, !tbaa !6
  %589 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %588, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.69)
          to label %590 unwind label %606

590:                                              ; preds = %587
  %591 = invoke noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %588, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %589)
          to label %592 unwind label %606

592:                                              ; preds = %590
  invoke void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16) %75, ptr noundef nonnull %591)
          to label %593 unwind label %606

593:                                              ; preds = %592
  invoke void @_ZN3HIR7TypeRef8new_pathENS_4PathENS_15TypePathBindingE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %69, ptr noundef nonnull %70, ptr noundef nonnull %75)
          to label %594 unwind label %608

594:                                              ; preds = %593
  %595 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %69)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #10
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #10
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  br label %695

596:                                              ; preds = %582, %579
  %597 = landingpad { ptr, i32 }
          cleanup
  br label %615

598:                                              ; preds = %583
  %599 = landingpad { ptr, i32 }
          cleanup
  br label %614

600:                                              ; preds = %584
  %601 = landingpad { ptr, i32 }
          cleanup
  br label %613

602:                                              ; preds = %585
  %603 = landingpad { ptr, i32 }
          cleanup
  br label %612

604:                                              ; preds = %586
  %605 = landingpad { ptr, i32 }
          cleanup
  br label %611

606:                                              ; preds = %592, %590, %587
  %607 = landingpad { ptr, i32 }
          cleanup
  br label %610

608:                                              ; preds = %593
  %609 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR15TypePathBindingD2Ev(ptr noundef nonnull align 8 dereferenceable(16) %75) #10
  br label %610

610:                                              ; preds = %608, %606
  %.pn321 = phi { ptr, i32 } [ %609, %608 ], [ %607, %606 ]
  call void @_ZN3HIR4PathD2Ev(ptr noundef nonnull align 8 dereferenceable(88) %70) #10
  br label %611

611:                                              ; preds = %610, %604
  %.pn321.pn = phi { ptr, i32 } [ %.pn321, %610 ], [ %605, %604 ]
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %71) #10
  br label %612

612:                                              ; preds = %611, %602
  %.pn321.pn.pn = phi { ptr, i32 } [ %.pn321.pn, %611 ], [ %603, %602 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %73) #10
  br label %613

613:                                              ; preds = %612, %600
  %.pn321.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn, %612 ], [ %601, %600 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #10
  br label %614

614:                                              ; preds = %613, %598
  %.pn321.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn, %613 ], [ %599, %598 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #10
  br label %615

615:                                              ; preds = %614, %596
  %.pn321.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn321.pn.pn.pn.pn, %614 ], [ %597, %596 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %69) #10
  br label %762

616:                                              ; preds = %576
  %617 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %618 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %617)
  br i1 %618, label %627, label %619

619:                                              ; preds = %616
  %620 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %621 = call noundef zeroext i1 @_ZNK3HIR8TypeData12is_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %620)
  br i1 %621, label %622, label %632

622:                                              ; preds = %619
  %623 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %624 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %623)
  %625 = load i32, ptr %624, align 4, !tbaa !68
  %626 = icmp eq i32 %625, 16
  br i1 %626, label %627, label %632

627:                                              ; preds = %622, %616
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %76) #10
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %76, i32 noundef 0)
          to label %628 unwind label %630

628:                                              ; preds = %627
  %629 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %76)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #10
  br label %695

630:                                              ; preds = %627
  %631 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %76) #10
  br label %762

632:                                              ; preds = %622, %619
  %633 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %634 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %633)
  br i1 %634, label %635, label %690

635:                                              ; preds = %632
  %636 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %637 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %636)
  %638 = getelementptr inbounds i8, ptr %637, i64 88
  %639 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %638)
  br i1 %639, label %640, label %690

640:                                              ; preds = %635
  %641 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %642 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %641)
  %643 = getelementptr inbounds i8, ptr %642, i64 88
  %644 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %643)
  %645 = load ptr, ptr %644, align 8, !tbaa !34
  %646 = getelementptr inbounds i8, ptr %645, i64 208
  %647 = load i32, ptr %646, align 8, !tbaa !70
  switch i32 %647, label %695 [
    i32 0, label %648
    i32 1, label %653
    i32 2, label %669
    i32 3, label %674
  ]

648:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %77) #10
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %77)
          to label %649 unwind label %651

649:                                              ; preds = %648
  %650 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %77)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %77) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #10
  br label %695

651:                                              ; preds = %648
  %652 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %77) #10
  br label %762

653:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %78) #10
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %78, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %79) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %654 unwind label %659

654:                                              ; preds = %653
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %81) #10
  store ptr %78, ptr %81, align 8, !tbaa !34
  %655 = getelementptr inbounds i8, ptr %81, i64 8
  store ptr %144, ptr %655, align 8, !tbaa !34
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(16) %81) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %79, ptr noundef nonnull %80)
          to label %656 unwind label %661

656:                                              ; preds = %654
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #10
  %657 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %657, ptr noundef nonnull @.str.70)
          to label %658 unwind label %664

658:                                              ; preds = %656
  invoke void @__cxa_throw(ptr nonnull %657, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %941 unwind label %666

659:                                              ; preds = %653
  %660 = landingpad { ptr, i32 }
          cleanup
  br label %663

661:                                              ; preds = %654
  %662 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %81) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #10
  br label %663

663:                                              ; preds = %661, %659
  %.pn316 = phi { ptr, i32 } [ %662, %661 ], [ %660, %659 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %79) #10
  br label %668

664:                                              ; preds = %656
  %665 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %657) #10
  br label %668

666:                                              ; preds = %658
  %667 = landingpad { ptr, i32 }
          cleanup
  br label %668

668:                                              ; preds = %666, %664, %663
  %.pn318 = phi { ptr, i32 } [ %667, %666 ], [ %665, %664 ], [ %.pn316, %663 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %78) #10
  br label %762

669:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %82) #10
  invoke void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %82, i32 noundef 0)
          to label %670 unwind label %672

670:                                              ; preds = %669
  %671 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %82)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %82) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #10
  br label %695

672:                                              ; preds = %669
  %673 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %82) #10
  br label %762

674:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %83) #10
  store ptr @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE, ptr %83, align 8, !tbaa !34
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %84) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %675 unwind label %680

675:                                              ; preds = %674
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %86) #10
  store ptr %83, ptr %86, align 8, !tbaa !34
  %676 = getelementptr inbounds i8, ptr %86, i64 8
  store ptr %144, ptr %676, align 8, !tbaa !34
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %85, ptr noundef nonnull align 8 dereferenceable(16) %86) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull %85)
          to label %677 unwind label %682

677:                                              ; preds = %675
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #10
  %678 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %678, ptr noundef nonnull @.str.70)
          to label %679 unwind label %685

679:                                              ; preds = %677
  invoke void @__cxa_throw(ptr nonnull %678, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %941 unwind label %687

680:                                              ; preds = %674
  %681 = landingpad { ptr, i32 }
          cleanup
  br label %684

682:                                              ; preds = %675
  %683 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #10
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %86) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #10
  br label %684

684:                                              ; preds = %682, %680
  %.pn312 = phi { ptr, i32 } [ %683, %682 ], [ %681, %680 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %84) #10
  br label %689

685:                                              ; preds = %677
  %686 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %678) #10
  br label %689

687:                                              ; preds = %679
  %688 = landingpad { ptr, i32 }
          cleanup
  br label %689

689:                                              ; preds = %687, %685, %684
  %.pn314 = phi { ptr, i32 } [ %688, %687 ], [ %686, %685 ], [ %.pn312, %684 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %83) #10
  br label %762

690:                                              ; preds = %635, %632
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %87) #10
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %87)
          to label %691 unwind label %693

691:                                              ; preds = %690
  %692 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %87)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %87) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #10
  br label %695

693:                                              ; preds = %690
  %694 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %87) #10
  br label %762

695:                                              ; preds = %640, %649, %670, %594, %691, %628, %572, %570
  %696 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %697 unwind label %547

697:                                              ; preds = %695
  br i1 %696, label %698, label %713

698:                                              ; preds = %697
  %699 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !81
  %700 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %699, ptr noundef nonnull @__func__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE)
          to label %701 unwind label %547

701:                                              ; preds = %698
  %702 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %700, ptr noundef nonnull @.str.42)
          to label %703 unwind label %547

703:                                              ; preds = %701
  %704 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %702, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %705 unwind label %547

705:                                              ; preds = %703
  %706 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %704, ptr noundef nonnull @.str.71)
          to label %707 unwind label %547

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

709:                                              ; preds = %707
  %710 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %708, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %711 unwind label %547

711:                                              ; preds = %709
  %712 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %710, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %713 unwind label %547

713:                                              ; preds = %711, %697
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %88) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %88) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %89) #10
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %714 unwind label %725

714:                                              ; preds = %713
  %715 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefneERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %63, ptr noundef nonnull align 8 dereferenceable(8) %89)
          to label %716 unwind label %727

716:                                              ; preds = %714
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #10
  br i1 %715, label %717, label %744

717:                                              ; preds = %716
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %90) #10
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %91) #10
  invoke void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind nonnull writable sret(%class.RcString) align 8 %91, ptr noundef nonnull @.str.68)
          to label %718 unwind label %730

718:                                              ; preds = %717
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %92) #10
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %93, ptr noundef nonnull align 8 dereferenceable(8) %2)
          to label %719 unwind label %732

719:                                              ; preds = %718
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull %93)
          to label %720 unwind label %734

720:                                              ; preds = %719
  %721 = getelementptr inbounds i8, ptr %92, i64 32
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %721, ptr noundef nonnull align 8 dereferenceable(8) %63)
  invoke void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind nonnull writable sret(%"struct.std::pair.457") align 8 %90, ptr noundef nonnull align 8 dereferenceable(8) %91, ptr noundef nonnull align 8 dereferenceable(40) %92)
          to label %722 unwind label %736

722:                                              ; preds = %720
  %723 = invoke { ptr, i8 } @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE6insertIS6_IS0_S3_EEENSt9enable_ifIXsr16is_constructibleIS8_T_EE5valueES6_ISt17_Rb_tree_iteratorIS8_EbEE4typeEOSE_(ptr noundef nonnull align 8 dereferenceable(48) %88, ptr noundef nonnull align 8 dereferenceable(48) %90)
          to label %724 unwind label %738

724:                                              ; preds = %722
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %90) #10
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %92) #10
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %92) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %90) #10
  br label %744

725:                                              ; preds = %713
  %726 = landingpad { ptr, i32 }
          cleanup
  br label %729

727:                                              ; preds = %714
  %728 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %89) #10
  br label %729

729:                                              ; preds = %727, %725
  %.pn329 = phi { ptr, i32 } [ %728, %727 ], [ %726, %725 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %89) #10
  br label %760

730:                                              ; preds = %717
  %731 = landingpad { ptr, i32 }
          cleanup
  br label %743

732:                                              ; preds = %718
  %733 = landingpad { ptr, i32 }
          cleanup
  br label %742

734:                                              ; preds = %719
  %735 = landingpad { ptr, i32 }
          cleanup
  br label %741

736:                                              ; preds = %720
  %737 = landingpad { ptr, i32 }
          cleanup
  br label %740

738:                                              ; preds = %722
  %739 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt4pairI8RcStringN3HIR9TraitPath8AtyEqualEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %90) #10
  br label %740

740:                                              ; preds = %738, %736
  %.pn331 = phi { ptr, i32 } [ %739, %738 ], [ %737, %736 ]
  call void @_ZN3HIR9TraitPath8AtyEqualD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %92) #10
  br label %741

741:                                              ; preds = %740, %734
  %.pn331.pn = phi { ptr, i32 } [ %.pn331, %740 ], [ %735, %734 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %93) #10
  br label %742

742:                                              ; preds = %741, %732
  %.pn331.pn.pn = phi { ptr, i32 } [ %.pn331.pn, %741 ], [ %733, %732 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %92) #10
  call void @_ZN8RcStringD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %91) #10
  br label %743

743:                                              ; preds = %742, %730
  %.pn331.pn.pn.pn = phi { ptr, i32 } [ %.pn331.pn.pn, %742 ], [ %731, %730 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %91) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %90) #10
  br label %760

744:                                              ; preds = %724, %716
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %95, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %745 unwind label %750

745:                                              ; preds = %744
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %96)
          to label %746 unwind label %752

746:                                              ; preds = %745
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2EOSA_(ptr noundef nonnull align 8 dereferenceable(48) %97, ptr noundef nonnull align 8 dereferenceable(48) %88) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %94, ptr noundef nonnull %95, ptr noundef nonnull %96, ptr noundef nonnull %97)
          to label %747 unwind label %754

747:                                              ; preds = %746
  %748 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %94, i32 noundef 0)
          to label %749 unwind label %756

749:                                              ; preds = %747
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %94) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %97) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %88) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %88) #10
  br label %761

750:                                              ; preds = %744
  %751 = landingpad { ptr, i32 }
          cleanup
  br label %760

752:                                              ; preds = %745
  %753 = landingpad { ptr, i32 }
          cleanup
  br label %759

754:                                              ; preds = %746
  %755 = landingpad { ptr, i32 }
          cleanup
  br label %758

756:                                              ; preds = %747
  %757 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %94) #10
  br label %758

758:                                              ; preds = %756, %754
  %.pn336 = phi { ptr, i32 } [ %757, %756 ], [ %755, %754 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %97) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %96) #10
  br label %759

759:                                              ; preds = %758, %752
  %.pn336.pn = phi { ptr, i32 } [ %.pn336, %758 ], [ %753, %752 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #10
  br label %760

760:                                              ; preds = %759, %750, %743, %729
  %.pn336.pn.pn = phi { ptr, i32 } [ %.pn336.pn, %759 ], [ %751, %750 ], [ %.pn331.pn.pn.pn, %743 ], [ %.pn329, %729 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %88) #10
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %88) #10
  br label %762

761:                                              ; preds = %749, %542
  %.5 = phi i1 [ %541, %542 ], [ %748, %749 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  br label %937

762:                                              ; preds = %651, %668, %672, %689, %760, %693, %630, %615, %574, %556, %547
  %.pn340.pn.pn = phi { ptr, i32 } [ %.pn340.pn, %556 ], [ %548, %547 ], [ %.pn336.pn.pn, %760 ], [ %575, %574 ], [ %.pn321.pn.pn.pn.pn.pn, %615 ], [ %631, %630 ], [ %694, %693 ], [ %.pn314, %689 ], [ %673, %672 ], [ %.pn318, %668 ], [ %652, %651 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #10
  br label %763

763:                                              ; preds = %762, %545
  %.pn340.pn.pn.pn = phi { ptr, i32 } [ %.pn340.pn.pn, %762 ], [ %546, %545 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %63) #10
  br label %938

.thread408:                                       ; preds = %516
  %.pr410.pr = load i32, ptr @gTargetVersion, align 4, !tbaa !35
  %764 = icmp sgt i32 %.pr410.pr, 3
  br i1 %764, label %765, label %.thread411

765:                                              ; preds = %.thread408
  %766 = load ptr, ptr %0, align 8, !tbaa !6
  %767 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %766, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.72)
          to label %768 unwind label %164

768:                                              ; preds = %765
  %769 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %767)
          to label %770 unwind label %164

770:                                              ; preds = %768
  br i1 %769, label %771, label %.thread411

771:                                              ; preds = %770
  %772 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %773 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %772)
  br i1 %773, label %782, label %774

774:                                              ; preds = %771
  %775 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %776 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %775)
  br i1 %776, label %777, label %796

777:                                              ; preds = %774
  %778 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %779 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %778)
  %780 = getelementptr inbounds i8, ptr %779, i64 88
  %781 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding10is_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %780)
  br i1 %781, label %782, label %796

782:                                              ; preds = %777, %771
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %99, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %783 unwind label %164

783:                                              ; preds = %782
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %100)
          to label %784 unwind label %788

784:                                              ; preds = %783
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %101, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %101) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %98, ptr noundef nonnull %99, ptr noundef nonnull %100, ptr noundef nonnull %101)
          to label %785 unwind label %790

785:                                              ; preds = %784
  %786 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %98, i32 noundef 1)
          to label %787 unwind label %792

787:                                              ; preds = %785
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %98) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %101) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  br label %937

788:                                              ; preds = %783
  %789 = landingpad { ptr, i32 }
          cleanup
  br label %795

790:                                              ; preds = %784
  %791 = landingpad { ptr, i32 }
          cleanup
  br label %794

792:                                              ; preds = %785
  %793 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %98) #10
  br label %794

794:                                              ; preds = %792, %790
  %.pn308 = phi { ptr, i32 } [ %793, %792 ], [ %791, %790 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %101) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %100) #10
  br label %795

795:                                              ; preds = %794, %788
  %.pn308.pn = phi { ptr, i32 } [ %.pn308, %794 ], [ %789, %788 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %99) #10
  br label %938

796:                                              ; preds = %777, %774
  %797 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %798 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %797)
  br i1 %798, label %799, label %937

799:                                              ; preds = %796
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %103, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %800 unwind label %164

800:                                              ; preds = %799
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %104)
          to label %801 unwind label %805

801:                                              ; preds = %800
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %105, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %102, ptr noundef nonnull %103, ptr noundef nonnull %104, ptr noundef nonnull %105)
          to label %802 unwind label %807

802:                                              ; preds = %801
  %803 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %102, i32 noundef 0)
          to label %804 unwind label %809

804:                                              ; preds = %802
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %102) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  br label %937

805:                                              ; preds = %800
  %806 = landingpad { ptr, i32 }
          cleanup
  br label %812

807:                                              ; preds = %801
  %808 = landingpad { ptr, i32 }
          cleanup
  br label %811

809:                                              ; preds = %802
  %810 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %102) #10
  br label %811

811:                                              ; preds = %809, %807
  %.pn305 = phi { ptr, i32 } [ %810, %809 ], [ %808, %807 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %105) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %104) #10
  br label %812

812:                                              ; preds = %811, %805
  %.pn305.pn = phi { ptr, i32 } [ %.pn305, %811 ], [ %806, %805 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %103) #10
  br label %938

.thread411:                                       ; preds = %203, %.thread, %221, %509, %770, %.thread408
  %813 = getelementptr inbounds i8, ptr %0, i64 136
  %814 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %813)
          to label %815 unwind label %164

815:                                              ; preds = %.thread411
  br i1 %814, label %816, label %878

816:                                              ; preds = %815
  %817 = getelementptr inbounds i8, ptr %3, i64 8
  %818 = call noundef i64 @_ZNK10ThinVectorIN3HIR7TypeRefEE4sizeEv(ptr noundef nonnull align 8 dereferenceable(8) %817)
  %819 = icmp eq i64 %818, 1
  br i1 %819, label %832, label %820

820:                                              ; preds = %816
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %106) #10
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %821 unwind label %825

821:                                              ; preds = %820
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %108) #10
  call void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 1 dereferenceable(1) %108) #10
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %106, ptr noundef nonnull %107)
          to label %822 unwind label %827

822:                                              ; preds = %821
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #10
  %823 = call ptr @__cxa_allocate_exception(i64 16) #10
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %823, ptr noundef nonnull @.str.8)
          to label %824 unwind label %830

824:                                              ; preds = %822
  invoke void @__cxa_throw(ptr nonnull %823, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #11
          to label %941 unwind label %164

825:                                              ; preds = %820
  %826 = landingpad { ptr, i32 }
          cleanup
  br label %829

827:                                              ; preds = %821
  %828 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %108) #10
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %106) #10
  br label %829

829:                                              ; preds = %827, %825
  %.pn298 = phi { ptr, i32 } [ %828, %827 ], [ %826, %825 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %106) #10
  br label %938

830:                                              ; preds = %822
  %831 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %823) #10
  br label %938

832:                                              ; preds = %816
  %833 = load ptr, ptr %142, align 8, !tbaa !28
  %834 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEEixEm(ptr noundef nonnull align 8 dereferenceable(8) %817, i64 noundef 0)
  %835 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK16HMTypeInferrence8get_typeERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(49) %833, ptr noundef nonnull align 8 dereferenceable(8) %834)
          to label %836 unwind label %840

836:                                              ; preds = %832
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %109, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %837 unwind label %840

837:                                              ; preds = %836
  %838 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_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 nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull %109)
          to label %839 unwind label %842

839:                                              ; preds = %837
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  br i1 %838, label %937, label %844

840:                                              ; preds = %836, %832
  %841 = landingpad { ptr, i32 }
          cleanup
  br label %938

842:                                              ; preds = %837
  %843 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %109) #10
  br label %938

844:                                              ; preds = %839
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %110) #10
  store i8 0, ptr %110, align 1, !tbaa !82
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %111) #10
  store ptr %110, ptr %111, align 8, !tbaa !34
  %845 = getelementptr inbounds i8, ptr %111, i64 8
  store ptr %5, ptr %845, align 8, !tbaa !34
  %846 = getelementptr inbounds i8, ptr %111, i64 16
  store ptr %144, ptr %846, align 8, !tbaa !34
  invoke void @"_ZNSt8functionIFvN3HIR7TypeRefEEEC2IRZNK15TraitResolution22find_trait_impls_magicERK4SpanRKNS0_10SimplePathERKNS0_10PathParamsERKS1_S_IFb7ImplRefNS0_7CompareEEEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %112, ptr noundef nonnull align 8 dereferenceable(24) %111)
          to label %847 unwind label %855

847:                                              ; preds = %844
  %848 = invoke noundef i32 @_ZNK15TraitResolution10can_unsizeERK4SpanRKN3HIR7TypeRefES6_St8functionIFvS4_EE(ptr noundef nonnull align 8 dereferenceable(280) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %835, ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull %112)
          to label %849 unwind label %857

849:                                              ; preds = %847
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  %850 = icmp eq i32 %848, 0
  br i1 %850, label %851, label %874

851:                                              ; preds = %849
  %852 = load i8, ptr %110, align 1, !tbaa !82, !range !83, !noundef !84
  %853 = trunc nuw i8 %852 to i1
  br i1 %853, label %854, label %859

854:                                              ; preds = %851
  call void @__assert_fail(ptr noundef nonnull @.str.73, ptr noundef nonnull @.str.7, i32 noundef 1540, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS3_10PathParamsERKNS3_7TypeRefESt8functionIFb7ImplRefNS3_7CompareEEE) #12
  unreachable

855:                                              ; preds = %859, %844
  %856 = landingpad { ptr, i32 }
          cleanup
  br label %877

857:                                              ; preds = %847
  %858 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %112) #10
  br label %877

859:                                              ; preds = %851
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %114, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %860 unwind label %855

860:                                              ; preds = %859
  invoke void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %115, ptr noundef nonnull align 8 dereferenceable(24) %3)
          to label %861 unwind label %866

861:                                              ; preds = %860
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %116, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %113, ptr noundef nonnull %114, ptr noundef nonnull %115, ptr noundef nonnull %116)
          to label %862 unwind label %868

862:                                              ; preds = %861
  %863 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %113, i32 noundef 0)
          to label %864 unwind label %870

864:                                              ; preds = %862
  %865 = zext i1 %863 to i8
  store i8 %865, ptr %110, align 1, !tbaa !82
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %113) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #10
  br label %874

866:                                              ; preds = %860
  %867 = landingpad { ptr, i32 }
          cleanup
  br label %873

868:                                              ; preds = %861
  %869 = landingpad { ptr, i32 }
          cleanup
  br label %872

870:                                              ; preds = %862
  %871 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %113) #10
  br label %872

872:                                              ; preds = %870, %868
  %.pn300 = phi { ptr, i32 } [ %871, %870 ], [ %869, %868 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %116) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %115) #10
  br label %873

873:                                              ; preds = %872, %866
  %.pn300.pn = phi { ptr, i32 } [ %.pn300, %872 ], [ %867, %866 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %114) #10
  br label %877

874:                                              ; preds = %864, %849
  %875 = load i8, ptr %110, align 1, !tbaa !82, !range !83, !noundef !84
  %876 = trunc nuw i8 %875 to i1
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #10
  br label %937

877:                                              ; preds = %873, %857, %855
  %.pn300.pn.pn = phi { ptr, i32 } [ %.pn300.pn, %873 ], [ %856, %855 ], [ %858, %857 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %111) #10
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %110) #10
  br label %938

878:                                              ; preds = %815
  %879 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %141)
          to label %880 unwind label %164

880:                                              ; preds = %878
  br i1 %879, label %881, label %.thread413

881:                                              ; preds = %880
  invoke void @_ZNSt8functionIFb7ImplRefN3HIR7CompareEEEC2ERKS4_(ptr noundef nonnull align 8 dereferenceable(32) %117, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %882 unwind label %164

882:                                              ; preds = %881
  %883 = invoke noundef zeroext i1 @_ZNK15TraitResolution22find_trait_impls_boundERK4SpanRKN3HIR10SimplePathERKNS3_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 nonnull align 8 dereferenceable(24) %3, ptr noundef nonnull align 8 dereferenceable(8) %144, ptr noundef nonnull %117)
          to label %884 unwind label %885

884:                                              ; preds = %882
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  br i1 %883, label %937, label %887

885:                                              ; preds = %882
  %886 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %117) #10
  br label %938

887:                                              ; preds = %884
  %888 = getelementptr inbounds i8, ptr %3, i64 8
  %889 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK10ThinVectorIN3HIR7TypeRefEE2atEm(ptr noundef nonnull align 8 dereferenceable(8) %888, i64 noundef 0)
          to label %890 unwind label %916

890:                                              ; preds = %887
  %891 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %144)
  %892 = call noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %891)
  %.not288 = icmp eq ptr %892, null
  br i1 %.not288, label %.thread413, label %893

893:                                              ; preds = %890
  %894 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %889)
  %895 = call noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %894)
  %.not289 = icmp eq ptr %895, null
  br i1 %.not289, label %.thread413, label %896

896:                                              ; preds = %893
  %897 = load i32, ptr %895, align 8, !tbaa !85
  %898 = load i32, ptr %892, align 8, !tbaa !85
  %899 = icmp slt i32 %897, %898
  br i1 %899, label %900, label %.thread413

900:                                              ; preds = %896
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %118) #10
  %901 = load ptr, ptr %142, align 8, !tbaa !28
  invoke void @_ZNK16HMTypeInferrence22callback_resolve_inferEv(ptr dead_on_unwind nonnull writable sret(%"struct.HMTypeInferrence::ResolvePlaceholders") align 8 %118, ptr noundef nonnull align 8 dereferenceable(49) %901)
          to label %902 unwind label %918

902:                                              ; preds = %900
  %903 = getelementptr inbounds i8, ptr %895, i64 8
  %904 = getelementptr inbounds i8, ptr %892, i64 8
  %905 = invoke noundef i32 @_ZNK3HIR7TypeRef25compare_with_placeholdersERK4SpanRKS0_RKNS_19ResolvePlaceholdersE(ptr noundef nonnull align 8 dereferenceable(8) %904, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %903, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %906 unwind label %918

906:                                              ; preds = %902
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #10
  %.not290 = icmp eq i32 %905, 2
  br i1 %.not290, label %.thread413, label %907

907:                                              ; preds = %906
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %119) #10
  invoke void @_ZN3HIR10PathParamsC1Ev(ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %908 unwind label %920

908:                                              ; preds = %907
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %120, ptr noundef nonnull align 8 dereferenceable(8) %889)
          to label %909 unwind label %922

909:                                              ; preds = %908
  %910 = getelementptr inbounds i8, ptr %119, i64 8
  invoke void @_ZN10ThinVectorIN3HIR7TypeRefEE9push_backES1_(ptr noundef nonnull align 8 dereferenceable(8) %910, ptr noundef nonnull %120)
          to label %911 unwind label %924

911:                                              ; preds = %909
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #10
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %122, ptr noundef nonnull align 8 dereferenceable(8) %144)
          to label %912 unwind label %922

912:                                              ; preds = %911
  invoke void @_ZN3HIR10PathParamsC2EOS0_(ptr noundef nonnull align 8 dereferenceable(24) %123, ptr noundef nonnull align 8 dereferenceable(24) %119)
          to label %913 unwind label %926

913:                                              ; preds = %912
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(48) %124, i8 0, i64 48, i1 false)
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEEC2Ev(ptr noundef nonnull align 8 dereferenceable(48) %124) #10
  invoke void @_ZN7ImplRefC2EN3HIR7TypeRefENS0_10PathParamsESt3mapI8RcStringNS0_9TraitPath8AtyEqualESt4lessIS4_ESaISt4pairIKS4_S6_EEE(ptr noundef nonnull align 8 dereferenceable(184) %121, ptr noundef nonnull %122, ptr noundef nonnull %123, ptr noundef nonnull %124)
          to label %914 unwind label %928

914:                                              ; preds = %913
  %915 = invoke noundef zeroext i1 @_ZNKSt8functionIFb7ImplRefN3HIR7CompareEEEclES0_S2_(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull %121, i32 noundef %905)
          to label %936 unwind label %930

916:                                              ; preds = %887
  %917 = landingpad { ptr, i32 }
          cleanup
  br label %938

918:                                              ; preds = %902, %900
  %919 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %118) #10
  br label %938

920:                                              ; preds = %907
  %921 = landingpad { ptr, i32 }
          cleanup
  br label %935

922:                                              ; preds = %911, %908
  %923 = landingpad { ptr, i32 }
          cleanup
  br label %934

924:                                              ; preds = %909
  %925 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %120) #10
  br label %934

926:                                              ; preds = %912
  %927 = landingpad { ptr, i32 }
          cleanup
  br label %933

928:                                              ; preds = %913
  %929 = landingpad { ptr, i32 }
          cleanup
  br label %932

930:                                              ; preds = %914
  %931 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #10
  br label %932

932:                                              ; preds = %930, %928
  %.pn291 = phi { ptr, i32 } [ %931, %930 ], [ %929, %928 ]
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %124) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #10
  br label %933

933:                                              ; preds = %932, %926
  %.pn291.pn = phi { ptr, i32 } [ %.pn291, %932 ], [ %927, %926 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #10
  br label %934

934:                                              ; preds = %933, %924, %922
  %.pn291.pn.pn = phi { ptr, i32 } [ %.pn291.pn, %933 ], [ %923, %922 ], [ %925, %924 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  br label %935

935:                                              ; preds = %934, %920
  %.pn291.pn.pn.pn = phi { ptr, i32 } [ %.pn291.pn.pn, %934 ], [ %921, %920 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #10
  br label %938

936:                                              ; preds = %914
  call void @_ZN7ImplRefD2Ev(ptr noundef nonnull align 8 dereferenceable(184) %121) #10
  call void @_ZNSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEED2Ev(ptr noundef nonnull align 8 dereferenceable(48) %124) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %123) #10
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %122) #10
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %119) #10
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %119) #10
  br i1 %915, label %937, label %.thread413

.thread413:                                       ; preds = %906, %893, %896, %890, %936, %880
  br label %937

937:                                              ; preds = %306, %884, %874, %839, %796, %216, %212, %180, %176, %159, %155, %936, %.thread413, %804, %787, %761, %484, %446, %378, %338, %200
  %.14 = phi i1 [ %199, %200 ], [ %337, %338 ], [ %377, %378 ], [ %445, %446 ], [ %483, %484 ], [ %.5, %761 ], [ %786, %787 ], [ %803, %804 ], [ false, %.thread413 ], [ true, %936 ], [ %294, %306 ], [ %158, %159 ], [ false, %155 ], [ %179, %180 ], [ false, %176 ], [ %215, %216 ], [ false, %212 ], [ false, %796 ], [ %876, %874 ], [ true, %839 ], [ true, %884 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #10
  ret i1 %.14

938:                                              ; preds = %916, %935, %918, %840, %842, %877, %217, %219, %181, %183, %166, %168, %885, %830, %829, %812, %795, %763, %543, %508, %471, %418, %348, %339, %305, %201, %164
  %.pn388.pn = phi { ptr, i32 } [ %202, %201 ], [ %165, %164 ], [ %.pn378.pn, %348 ], [ %.pn374.pn.pn, %418 ], [ %.pn358.pn.pn.pn, %471 ], [ %.pn350.pn.pn, %508 ], [ %340, %339 ], [ %.pn340.pn.pn.pn, %763 ], [ %544, %543 ], [ %.pn308.pn, %795 ], [ %.pn305.pn, %812 ], [ %831, %830 ], [ %.pn298, %829 ], [ %886, %885 ], [ %.pn282.pn.pn.pn.pn, %305 ], [ %169, %168 ], [ %167, %166 ], [ %184, %183 ], [ %182, %181 ], [ %220, %219 ], [ %218, %217 ], [ %.pn300.pn.pn, %877 ], [ %843, %842 ], [ %841, %840 ], [ %917, %916 ], [ %.pn291.pn.pn.pn, %935 ], [ %919, %918 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #10
  br label %939

939:                                              ; preds = %938, %162
  %.pn388.pn.pn = phi { ptr, i32 } [ %.pn388.pn, %938 ], [ %163, %162 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #10
  br label %940

940:                                              ; preds = %939, %160
  %.pn388.pn.pn.pn = phi { ptr, i32 } [ %.pn388.pn.pn, %939 ], [ %161, %160 ]
  resume { ptr, i32 } %.pn388.pn.pn.pn

941:                                              ; preds = %824, %679, %658
  unreachable
}

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

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

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

; Function Attrs: nofree nounwind
declare void @__cxa_guard_abort(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

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

; Function Attrs: mustprogress uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_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 uwtable
declare dso_local noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

; Function Attrs: 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 uwtable
declare dso_local noundef i32 @_ZNK15TraitResolution12type_is_copyERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(280), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

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

declare void @_ZNK3HIR10SimplePath5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::SimplePath") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN8RcString12new_internedEPKc(ptr dead_on_unwind noalias writable sret(%class.RcString) align 8, ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3HIR15TypePathBinding11make_OpaqueENS0_11Data_OpaqueE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypePathBinding") align 8) local_unnamed_addr #4 align 2

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

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

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

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

declare void @_ZN3HIR4Enum13get_repr_typeENS0_4ReprE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, i32 noundef) local_unnamed_addr #2

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

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

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

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

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

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

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

declare noundef nonnull align 8 dereferenceable(252) ptr @_ZNK3HIR5Crate18get_struct_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 void @_ZN3HIR15TypePathBindingC2EPKNS_6StructE(ptr noundef nonnull align 8 dereferenceable(16), ptr noundef) unnamed_addr #4 align 2

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZNK15TraitResolution22find_trait_impls_magicERK4SpanRKN3HIR10SimplePathERKNS8_10PathParamsERKNS8_7TypeRefES_IFb7ImplRefNS8_7CompareEEEE3$_2vEEOT_"(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 void @_ZSt9make_pairI8RcStringN3HIR9TraitPath8AtyEqualEESt4pairINSt25__strip_reference_wrapperINSt5decayIT_E4typeEE6__typeENS5_INS6_IT0_E4typeEE6__typeEEOS7_OSC_(ptr dead_on_unwind noalias writable sret(%"struct.std::pair.457") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #4

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

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

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

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

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

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

declare void @_ZNK3HIR10PathParams5cloneEv(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(24)) local_unnamed_addr #2

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef ptr @_ZNK3HIR8TypeData11opt_PointerEv(ptr noundef nonnull align 8 dereferenceable(184)) local_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 = { noreturn nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #9 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #10 = { nounwind }
attributes #11 = { noreturn }
attributes #12 = { noreturn nounwind }

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

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


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