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

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

%struct.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%class.anon.613 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.507" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.514" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.518" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.614" = type { ptr }
%"struct.HIR::TypeData_Path" = type { %"class.HIR::Path", %"class.HIR::TypePathBinding", %"class.std::unique_ptr" }
%"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" }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%class.RcString = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.17, %class.ThinVector.18, %class.ThinVector.19 }
%class.ThinVector.17 = type { ptr }
%class.ThinVector.18 = type { ptr }
%class.ThinVector.19 = type { ptr }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = type { ptr }
%"class.std::unique_ptr" = type { %"struct.std::__uniq_ptr_data" }
%"struct.std::__uniq_ptr_data" = type { %"class.std::__uniq_ptr_impl" }
%"class.std::__uniq_ptr_impl" = type { %"class.std::tuple" }
%"class.std::tuple" = type { %"struct.std::_Tuple_impl" }
%"struct.std::_Tuple_impl" = type { %"struct.std::_Head_base.46" }
%"struct.std::_Head_base.46" = type { ptr }
%struct.TraitResolveCommon = type { ptr, ptr, ptr, %"class.std::map.23", %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.23" = type { %"class.std::_Rb_tree.24" }
%"class.std::_Rb_tree.24" = 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" }
%"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.RangeVecMap = type <{ %"class.std::vector.29", [8 x i8] }>
%"class.std::vector.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>, std::allocator<std::unique_ptr<std::pair<std::pair<HIR::TypeRef, HIR::GenericPath>, TraitResolveCommon::CachedBound>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Struct" = type <{ %"class.HIR::GenericParams", i32, [4 x i8], %"class.HIR::Struct::Data", i32, i32, %"struct.HIR::TraitMarkings", %"struct.HIR::StructMarkings", i32, [4 x i8] }>
%"class.HIR::GenericParams" = type { %"class.std::vector", %"class.std::vector.2", %"class.std::vector.7", %"class.std::vector.12" }
%"class.std::vector" = type { %"struct.std::_Vector_base" }
%"struct.std::_Vector_base" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeParamDef, std::allocator<HIR::TypeParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.2" = type { %"struct.std::_Vector_base.3" }
%"struct.std::_Vector_base.3" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::LifetimeDef, std::allocator<HIR::LifetimeDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.7" = type { %"struct.std::_Vector_base.8" }
%"struct.std::_Vector_base.8" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ValueParamDef, std::allocator<HIR::ValueParamDef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::vector.12" = type { %"struct.std::_Vector_base.13" }
%"struct.std::_Vector_base.13" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericBound, std::allocator<HIR::GenericBound>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Struct::Data" = type { i32, %"union.HIR::Struct::Data::DataUnion" }
%"union.HIR::Struct::Data::DataUnion" = type { %"class.std::vector.252" }
%"class.std::vector.252" = type { %"struct.std::_Vector_base.253" }
%"struct.std::_Vector_base.253" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::VisEnt<HIR::TypeRef>, std::allocator<HIR::VisEnt<HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TraitMarkings" = type { i8, i8, i8, %"class.std::map.91" }
%"class.std::map.91" = type { %"class.std::_Rb_tree.92" }
%"class.std::_Rb_tree.92" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.508" }
%"class.std::shared_ptr.508" = type { %"class.std::__shared_ptr.509" }
%"class.std::__shared_ptr.509" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"struct.std::pair.512" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"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.81", [8 x i8] }
%"class.std::vector.81" = type { %"struct.std::_Vector_base.82" }
%"struct.std::_Vector_base.82" = 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::Enum::DataVariant" = type { %class.RcString, i8, %"class.HIR::TypeRef" }
%"class.HIR::Union" = type { %"class.HIR::GenericParams", i32, %"class.std::vector.257", %"struct.HIR::TraitMarkings" }
%"class.std::vector.257" = type { %"struct.std::_Vector_base.258" }
%"struct.std::_Vector_base.258" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>, std::allocator<std::pair<RcString, HIR::VisEnt<HIR::TypeRef>>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData::Data_Array" = type { %"class.HIR::TypeRef", %"class.HIR::ArraySize" }
%"class.HIR::ArraySize" = type { i32, %"union.HIR::ArraySize::DataUnion" }
%"union.HIR::ArraySize::DataUnion" = type { %"class.HIR::ConstGeneric" }
%"class.HIR::ConstGeneric" = type { i32, %"union.HIR::ConstGeneric::DataUnion" }
%"union.HIR::ConstGeneric::DataUnion" = type { %"class.std::unique_ptr.67", [8 x i8] }
%"class.std::unique_ptr.67" = type { %"struct.std::__uniq_ptr_data.68" }
%"struct.std::__uniq_ptr_data.68" = type { %"class.std::__uniq_ptr_impl.69" }
%"class.std::__uniq_ptr_impl.69" = type { %"class.std::tuple.70" }
%"class.std::tuple.70" = type { %"struct.std::_Tuple_impl.71" }
%"struct.std::_Tuple_impl.71" = type { %"struct.std::_Head_base.74" }
%"struct.std::_Head_base.74" = type { ptr }
%"struct.HIR::TypeData::Data_Slice" = type { %"class.HIR::TypeRef" }
%"struct.HIR::TypeData::Data_Closure" = type { ptr }
%"struct.HIR::ExprNode_Closure" = type { %"class.HIR::ExprNode.base", %"class.std::vector.266", %"class.HIR::TypeRef", %"class.std::unique_ptr.271", i8, i32, i8, %"struct.HIR::ExprNode_Closure::AvuCache", %"struct.HIR::LifetimeRef", ptr, %"class.HIR::GenericPath", %"class.HIR::GenericPath", %"class.std::vector.289" }
%"class.HIR::ExprNode.base" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32 }>
%struct.Span = type { ptr }
%"class.std::vector.266" = type { %"struct.std::_Vector_base.267" }
%"struct.std::_Vector_base.267" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.std::unique_ptr.271" = type { %"struct.std::__uniq_ptr_data.272" }
%"struct.std::__uniq_ptr_data.272" = type { %"class.std::__uniq_ptr_impl.273" }
%"class.std::__uniq_ptr_impl.273" = type { %"class.std::tuple.274" }
%"class.std::tuple.274" = type { %"struct.std::_Tuple_impl.275" }
%"struct.std::_Tuple_impl.275" = type { %"struct.std::_Head_base.278" }
%"struct.std::_Head_base.278" = type { ptr }
%"struct.HIR::ExprNode_Closure::AvuCache" = type { %"class.std::vector.279", %"class.std::vector.284" }
%"class.std::vector.279" = type { %"struct.std::_Vector_base.280" }
%"struct.std::_Vector_base.280" = 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.284" = type { %"struct.std::_Vector_base.285" }
%"struct.std::_Vector_base.285" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::ExprNode_Closure::AvuCache::Capture, std::allocator<HIR::ExprNode_Closure::AvuCache::Capture>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"class.std::vector.289" = type { %"struct.std::_Vector_base.290" }
%"struct.std::_Vector_base.290" = 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 }
%"class.HIR::ExprNode" = type <{ ptr, %struct.Span, %"class.HIR::TypeRef", i32, [4 x i8] }>
%"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.271", i8, i8, %struct.anon, ptr, %"class.HIR::GenericPath", %"class.std::vector.289", %"class.HIR::TypeRef" }
%struct.anon = type { %"class.std::vector.279", %"class.std::vector.331" }
%"class.std::vector.331" = type { %"struct.std::_Vector_base.332" }
%"struct.std::_Vector_base.332" = 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 }

@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40)) #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) #1 align 2 personality ptr @__gxx_personality_v0 {
  %4 = alloca i32, align 4
  %5 = alloca ptr, align 8
  %6 = alloca ptr, align 8
  %7 = alloca ptr, align 8
  %8 = alloca i8, align 1
  %9 = alloca i32, align 4
  %10 = alloca ptr, align 8
  %11 = alloca i8, align 1
  %12 = alloca ptr, align 8
  %13 = alloca i8, align 1
  %14 = alloca ptr, align 8
  %15 = alloca i8, align 1
  %16 = alloca ptr, align 8
  %17 = alloca i8, align 1
  %18 = alloca ptr, align 8
  %19 = alloca %struct.MonomorphStatePtr, align 8
  %20 = alloca %"class.HIR::TypeRef", align 8
  %21 = alloca ptr, align 8
  %22 = alloca i32, align 4
  %23 = alloca %class.anon.613, align 8
  %24 = alloca i8, align 1
  %25 = alloca ptr, align 8
  %26 = alloca i8, align 1
  %27 = alloca ptr, align 8
  %28 = alloca i8, align 1
  %29 = alloca ptr, align 8
  %30 = alloca i8, align 1
  %31 = alloca ptr, align 8
  %32 = alloca i8, align 1
  %33 = alloca ptr, align 8
  %34 = alloca ptr, align 8
  %35 = alloca i8, align 1
  %36 = alloca ptr, align 8
  %37 = alloca i8, align 1
  %38 = alloca ptr, align 8
  %39 = alloca i8, align 1
  %40 = alloca ptr, align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %43 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %44 = alloca ptr, align 8
  %45 = alloca i8, align 1
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %49 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %50 = alloca ptr, align 8
  %51 = alloca i8, align 1
  %52 = alloca ptr, align 8
  %53 = alloca i8, align 1
  %54 = alloca ptr, align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca i8, align 1
  %58 = alloca ptr, align 8
  %59 = alloca ptr, align 8
  %60 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %61 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %62 = alloca ptr, align 8
  %63 = alloca i8, align 1
  %64 = alloca ptr, align 8
  %65 = alloca ptr, align 8
  %66 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %67 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %68 = alloca ptr, align 8
  %69 = alloca i8, align 1
  %70 = alloca ptr, align 8
  %71 = alloca i8, align 1
  %72 = alloca ptr, align 8
  %73 = alloca i8, align 1
  %74 = alloca ptr, align 8
  %75 = alloca i8, align 1
  %76 = alloca ptr, align 8
  %77 = alloca i8, align 1
  %78 = alloca ptr, align 8
  %79 = alloca i8, align 1
  %80 = alloca ptr, align 8
  %81 = alloca ptr, align 8
  %82 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %83 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %84 = alloca ptr, align 8
  %85 = alloca i32, align 4
  %86 = alloca i8, align 1
  %87 = alloca ptr, align 8
  %88 = alloca ptr, align 8
  %89 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %90 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %91 = alloca ptr, align 8
  %92 = alloca i32, align 4
  %93 = alloca i8, align 1
  %94 = alloca ptr, align 8
  %95 = alloca ptr, align 8
  %96 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %97 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %98 = alloca ptr, align 8
  %99 = alloca i32, align 4
  %100 = alloca i8, align 1
  %101 = alloca ptr, align 8
  %102 = alloca i8, align 1
  %103 = alloca ptr, align 8
  %104 = alloca i8, align 1
  %105 = alloca ptr, align 8
  %106 = alloca i8, align 1
  %107 = alloca ptr, align 8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %6, align 8, !tbaa !5
  store ptr %2, ptr %7, align 8, !tbaa !5
  %108 = load ptr, ptr %5, align 8
  call void @llvm.lifetime.start.p0(i64 1, ptr %8) #7
  store i8 1, ptr %8, align 1, !tbaa !9
  br label %109

109:                                              ; preds = %1191, %3
  %110 = load i8, ptr %8, align 1, !tbaa !9, !range !11, !noundef !12
  %111 = trunc i8 %110 to i1
  br i1 %111, label %113, label %112

112:                                              ; preds = %109
  store i32 2, ptr %9, align 4
  br label %1192

113:                                              ; preds = %109
  call void @llvm.lifetime.start.p0(i64 8, ptr %10) #7
  %114 = load ptr, ptr %7, align 8, !tbaa !5
  %115 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %114)
  store ptr %115, ptr %10, align 8, !tbaa !5
  br label %116

116:                                              ; preds = %1187, %113
  %117 = load i8, ptr %8, align 1, !tbaa !9, !range !11, !noundef !12
  %118 = trunc i8 %117 to i1
  br i1 %118, label %120, label %119

119:                                              ; preds = %116
  store i32 5, ptr %9, align 4
  br label %1188

120:                                              ; preds = %116
  %121 = load ptr, ptr %10, align 8, !tbaa !5
  %122 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %121)
  switch i32 %122, label %1186 [
    i32 0, label %123
    i32 1, label %124
    i32 2, label %146
    i32 3, label %168
    i32 4, label %190
    i32 5, label %795
    i32 6, label %817
    i32 7, label %839
    i32 8, label %861
    i32 9, label %887
    i32 10, label %913
    i32 15, label %966
    i32 16, label %1040
    i32 11, label %1098
    i32 12, label %1120
    i32 13, label %1142
    i32 14, label %1164
  ]

123:                                              ; preds = %120
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2610, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #8
  unreachable

124:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %11) #7
  store i8 1, ptr %11, align 1, !tbaa !9
  br label %125

125:                                              ; preds = %142, %124
  %126 = load i8, ptr %11, align 1, !tbaa !9, !range !11, !noundef !12
  %127 = trunc i8 %126 to i1
  br i1 %127, label %129, label %128

128:                                              ; preds = %125
  store i32 9, ptr %9, align 4
  br label %143

129:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %12) #7
  %130 = load ptr, ptr %10, align 8, !tbaa !5
  %131 = call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %130)
  store ptr %131, ptr %12, align 8, !tbaa !5
  br label %132

132:                                              ; preds = %138, %129
  %133 = load ptr, ptr %12, align 8, !tbaa !5
  %134 = load i8, ptr %11, align 1, !tbaa !9, !range !11, !noundef !12
  %135 = trunc i8 %134 to i1
  br i1 %135, label %137, label %136

136:                                              ; preds = %132
  store i32 12, ptr %9, align 4
  br label %139

137:                                              ; preds = %132
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %139

138:                                              ; No predecessors!
  store i8 0, ptr %11, align 1, !tbaa !9
  br label %132, !llvm.loop !13

139:                                              ; preds = %137, %136
  call void @llvm.lifetime.end.p0(i64 8, ptr %12) #7
  %140 = load i32, ptr %9, align 4
  switch i32 %140, label %143 [
    i32 12, label %141
  ]

141:                                              ; preds = %139
  br label %142

142:                                              ; preds = %141
  store i8 0, ptr %11, align 1, !tbaa !9
  br label %125, !llvm.loop !15

143:                                              ; preds = %139, %128
  call void @llvm.lifetime.end.p0(i64 1, ptr %11) #7
  %144 = load i32, ptr %9, align 4
  switch i32 %144, label %1188 [
    i32 9, label %145
  ]

145:                                              ; preds = %143
  br label %1186

146:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %13) #7
  store i8 1, ptr %13, align 1, !tbaa !9
  br label %147

147:                                              ; preds = %164, %146
  %148 = load i8, ptr %13, align 1, !tbaa !9, !range !11, !noundef !12
  %149 = trunc i8 %148 to i1
  br i1 %149, label %151, label %150

150:                                              ; preds = %147
  store i32 15, ptr %9, align 4
  br label %165

151:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr %14) #7
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %152)
  store ptr %153, ptr %14, align 8, !tbaa !5
  br label %154

154:                                              ; preds = %160, %151
  %155 = load ptr, ptr %14, align 8, !tbaa !5
  %156 = load i8, ptr %13, align 1, !tbaa !9, !range !11, !noundef !12
  %157 = trunc i8 %156 to i1
  br i1 %157, label %159, label %158

158:                                              ; preds = %154
  store i32 18, ptr %9, align 4
  br label %161

159:                                              ; preds = %154
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %161

160:                                              ; No predecessors!
  store i8 0, ptr %13, align 1, !tbaa !9
  br label %154, !llvm.loop !16

161:                                              ; preds = %159, %158
  call void @llvm.lifetime.end.p0(i64 8, ptr %14) #7
  %162 = load i32, ptr %9, align 4
  switch i32 %162, label %165 [
    i32 18, label %163
  ]

163:                                              ; preds = %161
  br label %164

164:                                              ; preds = %163
  store i8 0, ptr %13, align 1, !tbaa !9
  br label %147, !llvm.loop !17

165:                                              ; preds = %161, %150
  call void @llvm.lifetime.end.p0(i64 1, ptr %13) #7
  %166 = load i32, ptr %9, align 4
  switch i32 %166, label %1188 [
    i32 15, label %167
  ]

167:                                              ; preds = %165
  br label %1186

168:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %15) #7
  store i8 1, ptr %15, align 1, !tbaa !9
  br label %169

169:                                              ; preds = %186, %168
  %170 = load i8, ptr %15, align 1, !tbaa !9, !range !11, !noundef !12
  %171 = trunc i8 %170 to i1
  br i1 %171, label %173, label %172

172:                                              ; preds = %169
  store i32 21, ptr %9, align 4
  br label %187

173:                                              ; preds = %169
  call void @llvm.lifetime.start.p0(i64 8, ptr %16) #7
  %174 = load ptr, ptr %10, align 8, !tbaa !5
  %175 = call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %174)
  store ptr %175, ptr %16, align 8, !tbaa !5
  br label %176

176:                                              ; preds = %182, %173
  %177 = load ptr, ptr %16, align 8, !tbaa !5
  %178 = load i8, ptr %15, align 1, !tbaa !9, !range !11, !noundef !12
  %179 = trunc i8 %178 to i1
  br i1 %179, label %181, label %180

180:                                              ; preds = %176
  store i32 24, ptr %9, align 4
  br label %183

181:                                              ; preds = %176
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %183

182:                                              ; No predecessors!
  store i8 0, ptr %15, align 1, !tbaa !9
  br label %176, !llvm.loop !18

183:                                              ; preds = %181, %180
  call void @llvm.lifetime.end.p0(i64 8, ptr %16) #7
  %184 = load i32, ptr %9, align 4
  switch i32 %184, label %187 [
    i32 24, label %185
  ]

185:                                              ; preds = %183
  br label %186

186:                                              ; preds = %185
  store i8 0, ptr %15, align 1, !tbaa !9
  br label %169, !llvm.loop !19

187:                                              ; preds = %183, %172
  call void @llvm.lifetime.end.p0(i64 1, ptr %15) #7
  %188 = load i32, ptr %9, align 4
  switch i32 %188, label %1188 [
    i32 21, label %189
  ]

189:                                              ; preds = %187
  br label %1186

190:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %17) #7
  store i8 1, ptr %17, align 1, !tbaa !9
  br label %191

191:                                              ; preds = %791, %190
  %192 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %193 = trunc i8 %192 to i1
  br i1 %193, label %195, label %194

194:                                              ; preds = %191
  store i32 27, ptr %9, align 4
  br label %792

195:                                              ; preds = %191
  call void @llvm.lifetime.start.p0(i64 8, ptr %18) #7
  %196 = load ptr, ptr %10, align 8, !tbaa !5
  %197 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %196)
  store ptr %197, ptr %18, align 8, !tbaa !5
  br label %198

198:                                              ; preds = %786, %195
  %199 = load ptr, ptr %18, align 8, !tbaa !5
  %200 = load i8, ptr %17, align 1, !tbaa !9, !range !11, !noundef !12
  %201 = trunc i8 %200 to i1
  br i1 %201, label %203, label %202

202:                                              ; preds = %198
  store i32 30, ptr %9, align 4
  br label %788

203:                                              ; preds = %198
  call void @llvm.lifetime.start.p0(i64 128, ptr %19) #7
  %204 = load ptr, ptr %18, align 8, !tbaa !5
  %205 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %204, i32 0, i32 0
  %206 = getelementptr inbounds %"class.HIR::Path", ptr %205, i32 0, i32 0
  %207 = call noundef zeroext i1 @_ZNK3HIR4Path4Data10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %206)
  br i1 %207, label %208, label %214

208:                                              ; preds = %203
  %209 = load ptr, ptr %18, align 8, !tbaa !5
  %210 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %209, i32 0, i32 0
  %211 = getelementptr inbounds %"class.HIR::Path", ptr %210, i32 0, i32 0
  %212 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %211)
  %213 = getelementptr inbounds %"class.HIR::GenericPath", ptr %212, i32 0, i32 1
  br label %215

214:                                              ; preds = %203
  br label %215

215:                                              ; preds = %214, %208
  %216 = phi ptr [ %213, %208 ], [ null, %214 ]
  call void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %19, ptr noundef null, ptr noundef %216, ptr noundef null, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20)
          to label %217 unwind label %227

217:                                              ; preds = %215
  call void @llvm.lifetime.start.p0(i64 32, ptr %23) #7
  %218 = getelementptr inbounds %class.anon.613, ptr %23, i32 0, i32 0
  store ptr %108, ptr %218, align 8, !tbaa !20
  %219 = getelementptr inbounds %class.anon.613, ptr %23, i32 0, i32 1
  %220 = load ptr, ptr %6, align 8, !tbaa !5
  store ptr %220, ptr %219, align 8, !tbaa !5
  %221 = getelementptr inbounds %class.anon.613, ptr %23, i32 0, i32 2
  store ptr %20, ptr %221, align 8, !tbaa !5
  %222 = getelementptr inbounds %class.anon.613, ptr %23, i32 0, i32 3
  store ptr %19, ptr %222, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %24) #7
  store i8 1, ptr %24, align 1, !tbaa !9
  br label %223

223:                                              ; preds = %779, %217
  %224 = load i8, ptr %24, align 1, !tbaa !9, !range !11, !noundef !12
  %225 = trunc i8 %224 to i1
  br i1 %225, label %231, label %226

226:                                              ; preds = %223
  store i32 33, ptr %9, align 4
  br label %780

227:                                              ; preds = %215
  %228 = landingpad { ptr, i32 }
          cleanup
  %229 = extractvalue { ptr, i32 } %228, 0
  store ptr %229, ptr %21, align 8
  %230 = extractvalue { ptr, i32 } %228, 1
  store i32 %230, ptr %22, align 4
  br label %787

231:                                              ; preds = %223
  call void @llvm.lifetime.start.p0(i64 8, ptr %25) #7
  %232 = load ptr, ptr %18, align 8, !tbaa !5
  %233 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %232, i32 0, i32 1
  store ptr %233, ptr %25, align 8, !tbaa !5
  br label %234

234:                                              ; preds = %774, %231
  %235 = load i8, ptr %24, align 1, !tbaa !9, !range !11, !noundef !12
  %236 = trunc i8 %235 to i1
  br i1 %236, label %238, label %237

237:                                              ; preds = %234
  store i32 36, ptr %9, align 4
  br label %775

238:                                              ; preds = %234
  %239 = load ptr, ptr %25, align 8, !tbaa !5
  %240 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %239)
          to label %241 unwind label %242

241:                                              ; preds = %238
  switch i32 %240, label %773 [
    i32 0, label %246
    i32 1, label %247
    i32 2, label %274
    i32 3, label %301
    i32 4, label %328
    i32 6, label %562
    i32 5, label %709
  ]

242:                                              ; preds = %238
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %21, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %22, align 4
  br label %777

246:                                              ; preds = %241
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2627, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #8
  unreachable

247:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %26) #7
  store i8 1, ptr %26, align 1, !tbaa !9
  br label %248

248:                                              ; preds = %270, %247
  %249 = load i8, ptr %26, align 1, !tbaa !9, !range !11, !noundef !12
  %250 = trunc i8 %249 to i1
  br i1 %250, label %252, label %251

251:                                              ; preds = %248
  store i32 40, ptr %9, align 4
  br label %271

252:                                              ; preds = %248
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #7
  %253 = load ptr, ptr %25, align 8, !tbaa !5
  %254 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %253)
          to label %255 unwind label %261

255:                                              ; preds = %252
  store ptr %254, ptr %27, align 8, !tbaa !5
  br label %256

256:                                              ; preds = %266, %255
  %257 = load ptr, ptr %27, align 8, !tbaa !5
  %258 = load i8, ptr %26, align 1, !tbaa !9, !range !11, !noundef !12
  %259 = trunc i8 %258 to i1
  br i1 %259, label %265, label %260

260:                                              ; preds = %256
  store i32 43, ptr %9, align 4
  br label %267

261:                                              ; preds = %252
  %262 = landingpad { ptr, i32 }
          cleanup
  %263 = extractvalue { ptr, i32 } %262, 0
  store ptr %263, ptr %21, align 8
  %264 = extractvalue { ptr, i32 } %262, 1
  store i32 %264, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  br label %777

265:                                              ; preds = %256
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %267

266:                                              ; No predecessors!
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %256, !llvm.loop !22

267:                                              ; preds = %265, %260
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #7
  %268 = load i32, ptr %9, align 4
  switch i32 %268, label %271 [
    i32 43, label %269
  ]

269:                                              ; preds = %267
  br label %270

270:                                              ; preds = %269
  store i8 0, ptr %26, align 1, !tbaa !9
  br label %248, !llvm.loop !23

271:                                              ; preds = %267, %251
  call void @llvm.lifetime.end.p0(i64 1, ptr %26) #7
  %272 = load i32, ptr %9, align 4
  switch i32 %272, label %775 [
    i32 40, label %273
  ]

273:                                              ; preds = %271
  br label %773

274:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %28) #7
  store i8 1, ptr %28, align 1, !tbaa !9
  br label %275

275:                                              ; preds = %297, %274
  %276 = load i8, ptr %28, align 1, !tbaa !9, !range !11, !noundef !12
  %277 = trunc i8 %276 to i1
  br i1 %277, label %279, label %278

278:                                              ; preds = %275
  store i32 46, ptr %9, align 4
  br label %298

279:                                              ; preds = %275
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #7
  %280 = load ptr, ptr %25, align 8, !tbaa !5
  %281 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %280)
          to label %282 unwind label %288

282:                                              ; preds = %279
  store ptr %281, ptr %29, align 8, !tbaa !5
  br label %283

283:                                              ; preds = %293, %282
  %284 = load ptr, ptr %29, align 8, !tbaa !5
  %285 = load i8, ptr %28, align 1, !tbaa !9, !range !11, !noundef !12
  %286 = trunc i8 %285 to i1
  br i1 %286, label %292, label %287

287:                                              ; preds = %283
  store i32 49, ptr %9, align 4
  br label %294

288:                                              ; preds = %279
  %289 = landingpad { ptr, i32 }
          cleanup
  %290 = extractvalue { ptr, i32 } %289, 0
  store ptr %290, ptr %21, align 8
  %291 = extractvalue { ptr, i32 } %289, 1
  store i32 %291, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  br label %777

292:                                              ; preds = %283
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %294

293:                                              ; No predecessors!
  store i8 0, ptr %28, align 1, !tbaa !9
  br label %283, !llvm.loop !24

294:                                              ; preds = %292, %287
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #7
  %295 = load i32, ptr %9, align 4
  switch i32 %295, label %298 [
    i32 49, label %296
  ]

296:                                              ; preds = %294
  br label %297

297:                                              ; preds = %296
  store i8 0, ptr %28, align 1, !tbaa !9
  br label %275, !llvm.loop !25

298:                                              ; preds = %294, %278
  call void @llvm.lifetime.end.p0(i64 1, ptr %28) #7
  %299 = load i32, ptr %9, align 4
  switch i32 %299, label %775 [
    i32 46, label %300
  ]

300:                                              ; preds = %298
  br label %773

301:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %30) #7
  store i8 1, ptr %30, align 1, !tbaa !9
  br label %302

302:                                              ; preds = %324, %301
  %303 = load i8, ptr %30, align 1, !tbaa !9, !range !11, !noundef !12
  %304 = trunc i8 %303 to i1
  br i1 %304, label %306, label %305

305:                                              ; preds = %302
  store i32 52, ptr %9, align 4
  br label %325

306:                                              ; preds = %302
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %307 = load ptr, ptr %25, align 8, !tbaa !5
  %308 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %307)
          to label %309 unwind label %315

309:                                              ; preds = %306
  store ptr %308, ptr %31, align 8, !tbaa !5
  br label %310

310:                                              ; preds = %320, %309
  %311 = load ptr, ptr %31, align 8, !tbaa !5
  %312 = load i8, ptr %30, align 1, !tbaa !9, !range !11, !noundef !12
  %313 = trunc i8 %312 to i1
  br i1 %313, label %319, label %314

314:                                              ; preds = %310
  store i32 55, ptr %9, align 4
  br label %321

315:                                              ; preds = %306
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %21, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  br label %777

319:                                              ; preds = %310
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %321

320:                                              ; No predecessors!
  store i8 0, ptr %30, align 1, !tbaa !9
  br label %310, !llvm.loop !26

321:                                              ; preds = %319, %314
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  %322 = load i32, ptr %9, align 4
  switch i32 %322, label %325 [
    i32 55, label %323
  ]

323:                                              ; preds = %321
  br label %324

324:                                              ; preds = %323
  store i8 0, ptr %30, align 1, !tbaa !9
  br label %302, !llvm.loop !27

325:                                              ; preds = %321, %305
  call void @llvm.lifetime.end.p0(i64 1, ptr %30) #7
  %326 = load i32, ptr %9, align 4
  switch i32 %326, label %775 [
    i32 52, label %327
  ]

327:                                              ; preds = %325
  br label %773

328:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %32) #7
  store i8 1, ptr %32, align 1, !tbaa !9
  br label %329

329:                                              ; preds = %558, %328
  %330 = load i8, ptr %32, align 1, !tbaa !9, !range !11, !noundef !12
  %331 = trunc i8 %330 to i1
  br i1 %331, label %333, label %332

332:                                              ; preds = %329
  store i32 58, ptr %9, align 4
  br label %559

333:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %33) #7
  %334 = load ptr, ptr %25, align 8, !tbaa !5
  %335 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %334)
          to label %336 unwind label %342

336:                                              ; preds = %333
  store ptr %335, ptr %33, align 8, !tbaa !5
  br label %337

337:                                              ; preds = %552, %336
  %338 = load ptr, ptr %33, align 8, !tbaa !5
  %339 = load i8, ptr %32, align 1, !tbaa !9, !range !11, !noundef !12
  %340 = trunc i8 %339 to i1
  br i1 %340, label %346, label %341

341:                                              ; preds = %337
  store i32 61, ptr %9, align 4
  br label %554

342:                                              ; preds = %333
  %343 = landingpad { ptr, i32 }
          cleanup
  %344 = extractvalue { ptr, i32 } %343, 0
  store ptr %344, ptr %21, align 8
  %345 = extractvalue { ptr, i32 } %343, 1
  store i32 %345, ptr %22, align 4
  br label %556

346:                                              ; preds = %337
  call void @llvm.lifetime.start.p0(i64 8, ptr %34) #7
  %347 = load ptr, ptr %18, align 8, !tbaa !5
  %348 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %347, i32 0, i32 0
  %349 = getelementptr inbounds %"class.HIR::Path", ptr %348, i32 0, i32 0
  %350 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %349)
          to label %351 unwind label %363

351:                                              ; preds = %346
  store ptr %350, ptr %34, align 8, !tbaa !5
  %352 = load ptr, ptr %34, align 8, !tbaa !5
  %353 = getelementptr inbounds %"class.HIR::GenericPath", ptr %352, i32 0, i32 0
  %354 = getelementptr inbounds i8, ptr %108, i64 8
  %355 = getelementptr inbounds %struct.TraitResolveCommon, ptr %354, i32 0, i32 0
  %356 = load ptr, ptr %355, align 8, !tbaa !28
  %357 = load ptr, ptr %6, align 8, !tbaa !5
  %358 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %356, ptr noundef nonnull align 8 dereferenceable(8) %357, ptr noundef @.str.86)
          to label %359 unwind label %363

359:                                              ; preds = %351
  %360 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %353, ptr noundef nonnull align 8 dereferenceable(8) %358)
          to label %361 unwind label %363

361:                                              ; preds = %359
  br i1 %360, label %362, label %367

362:                                              ; preds = %361
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %549

363:                                              ; preds = %359, %351, %346
  %364 = landingpad { ptr, i32 }
          cleanup
  %365 = extractvalue { ptr, i32 } %364, 0
  store ptr %365, ptr %21, align 8
  %366 = extractvalue { ptr, i32 } %364, 1
  store i32 %366, ptr %22, align 4
  br label %553

367:                                              ; preds = %361
  call void @llvm.lifetime.start.p0(i64 1, ptr %35) #7
  store i8 1, ptr %35, align 1, !tbaa !9
  br label %368

368:                                              ; preds = %545, %367
  %369 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %370 = trunc i8 %369 to i1
  br i1 %370, label %372, label %371

371:                                              ; preds = %368
  store i32 64, ptr %9, align 4
  br label %546

372:                                              ; preds = %368
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #7
  %373 = load ptr, ptr %33, align 8, !tbaa !5
  %374 = load ptr, ptr %373, align 8, !tbaa !5
  %375 = getelementptr inbounds %"class.HIR::Struct", ptr %374, i32 0, i32 3
  store ptr %375, ptr %36, align 8, !tbaa !5
  br label %376

376:                                              ; preds = %540, %372
  %377 = load i8, ptr %35, align 1, !tbaa !9, !range !11, !noundef !12
  %378 = trunc i8 %377 to i1
  br i1 %378, label %380, label %379

379:                                              ; preds = %376
  store i32 67, ptr %9, align 4
  br label %541

380:                                              ; preds = %376
  %381 = load ptr, ptr %36, align 8, !tbaa !5
  %382 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %381)
          to label %383 unwind label %384

383:                                              ; preds = %380
  switch i32 %382, label %539 [
    i32 0, label %388
    i32 1, label %389
    i32 2, label %416
    i32 3, label %477
  ]

384:                                              ; preds = %380
  %385 = landingpad { ptr, i32 }
          cleanup
  %386 = extractvalue { ptr, i32 } %385, 0
  store ptr %386, ptr %21, align 8
  %387 = extractvalue { ptr, i32 } %385, 1
  store i32 %387, ptr %22, align 4
  br label %543

388:                                              ; preds = %383
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2641, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #8
  unreachable

389:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #7
  store i8 1, ptr %37, align 1, !tbaa !9
  br label %390

390:                                              ; preds = %412, %389
  %391 = load i8, ptr %37, align 1, !tbaa !9, !range !11, !noundef !12
  %392 = trunc i8 %391 to i1
  br i1 %392, label %394, label %393

393:                                              ; preds = %390
  store i32 71, ptr %9, align 4
  br label %413

394:                                              ; preds = %390
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %395 = load ptr, ptr %36, align 8, !tbaa !5
  %396 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %395)
          to label %397 unwind label %403

397:                                              ; preds = %394
  store ptr %396, ptr %38, align 8, !tbaa !5
  br label %398

398:                                              ; preds = %408, %397
  %399 = load ptr, ptr %38, align 8, !tbaa !5
  %400 = load i8, ptr %37, align 1, !tbaa !9, !range !11, !noundef !12
  %401 = trunc i8 %400 to i1
  br i1 %401, label %407, label %402

402:                                              ; preds = %398
  store i32 74, ptr %9, align 4
  br label %409

403:                                              ; preds = %394
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %21, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  br label %543

407:                                              ; preds = %398
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %409

408:                                              ; No predecessors!
  store i8 0, ptr %37, align 1, !tbaa !9
  br label %398, !llvm.loop !47

409:                                              ; preds = %407, %402
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  %410 = load i32, ptr %9, align 4
  switch i32 %410, label %413 [
    i32 74, label %411
  ]

411:                                              ; preds = %409
  br label %412

412:                                              ; preds = %411
  store i8 0, ptr %37, align 1, !tbaa !9
  br label %390, !llvm.loop !48

413:                                              ; preds = %409, %393
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #7
  %414 = load i32, ptr %9, align 4
  switch i32 %414, label %541 [
    i32 71, label %415
  ]

415:                                              ; preds = %413
  br label %539

416:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 1, ptr %39) #7
  store i8 1, ptr %39, align 1, !tbaa !9
  br label %417

417:                                              ; preds = %473, %416
  %418 = load i8, ptr %39, align 1, !tbaa !9, !range !11, !noundef !12
  %419 = trunc i8 %418 to i1
  br i1 %419, label %421, label %420

420:                                              ; preds = %417
  store i32 77, ptr %9, align 4
  br label %474

421:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %422 = load ptr, ptr %36, align 8, !tbaa !5
  %423 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %422)
          to label %424 unwind label %430

424:                                              ; preds = %421
  store ptr %423, ptr %40, align 8, !tbaa !5
  br label %425

425:                                              ; preds = %468, %424
  %426 = load ptr, ptr %40, align 8, !tbaa !5
  %427 = load i8, ptr %39, align 1, !tbaa !9, !range !11, !noundef !12
  %428 = trunc i8 %427 to i1
  br i1 %428, label %434, label %429

429:                                              ; preds = %425
  store i32 80, ptr %9, align 4
  br label %469

430:                                              ; preds = %421
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %21, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %22, align 4
  br label %471

434:                                              ; preds = %425
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #7
  %435 = load ptr, ptr %40, align 8, !tbaa !5
  store ptr %435, ptr %41, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #7
  %436 = load ptr, ptr %41, align 8, !tbaa !5
  %437 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %436) #7
  %438 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.507", ptr %42, i32 0, i32 0
  store ptr %437, ptr %438, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #7
  %439 = load ptr, ptr %41, align 8, !tbaa !5
  %440 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %439) #7
  %441 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.507", ptr %43, i32 0, i32 0
  store ptr %440, ptr %441, align 8
  br label %442

442:                                              ; preds = %463, %434
  %443 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %42, ptr noundef nonnull align 8 dereferenceable(8) %43) #7
  br i1 %443, label %445, label %444

444:                                              ; preds = %442
  store i32 83, ptr %9, align 4
  br label %465

445:                                              ; preds = %442
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %446 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  store ptr %446, ptr %44, align 8, !tbaa !5
  %447 = load ptr, ptr %6, align 8, !tbaa !5
  %448 = load ptr, ptr %44, align 8, !tbaa !5
  %449 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %448, i32 0, i32 1
  %450 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %449)
          to label %451 unwind label %454

451:                                              ; preds = %445
  %452 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %447, ptr noundef nonnull align 8 dereferenceable(8) %450)
          to label %453 unwind label %454

453:                                              ; preds = %451
  switch i32 %452, label %460 [
    i32 0, label %458
    i32 1, label %459
  ]

454:                                              ; preds = %451, %445
  %455 = landingpad { ptr, i32 }
          cleanup
  %456 = extractvalue { ptr, i32 } %455, 0
  store ptr %456, ptr %21, align 8
  %457 = extractvalue { ptr, i32 } %455, 1
  store i32 %457, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  br label %471

458:                                              ; preds = %453
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %461

459:                                              ; preds = %453
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %461

460:                                              ; preds = %453
  store i32 84, ptr %9, align 4
  br label %461

461:                                              ; preds = %460, %459, %458
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  %462 = load i32, ptr %9, align 4
  switch i32 %462, label %465 [
    i32 84, label %463
  ]

463:                                              ; preds = %461
  %464 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %42) #7
  br label %442

465:                                              ; preds = %461, %444
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #7
  %466 = load i32, ptr %9, align 4
  switch i32 %466, label %469 [
    i32 83, label %467
  ]

467:                                              ; preds = %465
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %469

468:                                              ; No predecessors!
  store i8 0, ptr %39, align 1, !tbaa !9
  br label %425, !llvm.loop !49

469:                                              ; preds = %467, %465, %429
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  %470 = load i32, ptr %9, align 4
  switch i32 %470, label %474 [
    i32 80, label %472
  ]

471:                                              ; preds = %454, %430
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  br label %543

472:                                              ; preds = %469
  br label %473

473:                                              ; preds = %472
  store i8 0, ptr %39, align 1, !tbaa !9
  br label %417, !llvm.loop !50

474:                                              ; preds = %469, %420
  call void @llvm.lifetime.end.p0(i64 1, ptr %39) #7
  %475 = load i32, ptr %9, align 4
  switch i32 %475, label %541 [
    i32 77, label %476
  ]

476:                                              ; preds = %474
  br label %539

477:                                              ; preds = %383
  call void @llvm.lifetime.start.p0(i64 1, ptr %45) #7
  store i8 1, ptr %45, align 1, !tbaa !9
  br label %478

478:                                              ; preds = %535, %477
  %479 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %480 = trunc i8 %479 to i1
  br i1 %480, label %482, label %481

481:                                              ; preds = %478
  store i32 86, ptr %9, align 4
  br label %536

482:                                              ; preds = %478
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %483 = load ptr, ptr %36, align 8, !tbaa !5
  %484 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %483)
          to label %485 unwind label %491

485:                                              ; preds = %482
  store ptr %484, ptr %46, align 8, !tbaa !5
  br label %486

486:                                              ; preds = %530, %485
  %487 = load ptr, ptr %46, align 8, !tbaa !5
  %488 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %489 = trunc i8 %488 to i1
  br i1 %489, label %495, label %490

490:                                              ; preds = %486
  store i32 89, ptr %9, align 4
  br label %531

491:                                              ; preds = %482
  %492 = landingpad { ptr, i32 }
          cleanup
  %493 = extractvalue { ptr, i32 } %492, 0
  store ptr %493, ptr %21, align 8
  %494 = extractvalue { ptr, i32 } %492, 1
  store i32 %494, ptr %22, align 4
  br label %533

495:                                              ; preds = %486
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  %496 = load ptr, ptr %46, align 8, !tbaa !5
  store ptr %496, ptr %47, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %48) #7
  %497 = load ptr, ptr %47, align 8, !tbaa !5
  %498 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %497) #7
  %499 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %48, i32 0, i32 0
  store ptr %498, ptr %499, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %49) #7
  %500 = load ptr, ptr %47, align 8, !tbaa !5
  %501 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %500) #7
  %502 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %49, i32 0, i32 0
  store ptr %501, ptr %502, align 8
  br label %503

503:                                              ; preds = %525, %495
  %504 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %49) #7
  br i1 %504, label %506, label %505

505:                                              ; preds = %503
  store i32 92, ptr %9, align 4
  br label %527

506:                                              ; preds = %503
  call void @llvm.lifetime.start.p0(i64 8, ptr %50) #7
  %507 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  store ptr %507, ptr %50, align 8, !tbaa !5
  %508 = load ptr, ptr %6, align 8, !tbaa !5
  %509 = load ptr, ptr %50, align 8, !tbaa !5
  %510 = getelementptr inbounds %"struct.std::pair.512", ptr %509, i32 0, i32 1
  %511 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %510, i32 0, i32 1
  %512 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %511)
          to label %513 unwind label %516

513:                                              ; preds = %506
  %514 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %508, ptr noundef nonnull align 8 dereferenceable(8) %512)
          to label %515 unwind label %516

515:                                              ; preds = %513
  switch i32 %514, label %522 [
    i32 0, label %520
    i32 1, label %521
  ]

516:                                              ; preds = %513, %506
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %21, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %533

520:                                              ; preds = %515
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %523

521:                                              ; preds = %515
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %523

522:                                              ; preds = %515
  store i32 93, ptr %9, align 4
  br label %523

523:                                              ; preds = %522, %521, %520
  call void @llvm.lifetime.end.p0(i64 8, ptr %50) #7
  %524 = load i32, ptr %9, align 4
  switch i32 %524, label %527 [
    i32 93, label %525
  ]

525:                                              ; preds = %523
  %526 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %48) #7
  br label %503

527:                                              ; preds = %523, %505
  call void @llvm.lifetime.end.p0(i64 8, ptr %49) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %48) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  %528 = load i32, ptr %9, align 4
  switch i32 %528, label %531 [
    i32 92, label %529
  ]

529:                                              ; preds = %527
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %531

530:                                              ; No predecessors!
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %486, !llvm.loop !51

531:                                              ; preds = %529, %527, %490
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  %532 = load i32, ptr %9, align 4
  switch i32 %532, label %536 [
    i32 89, label %534
  ]

533:                                              ; preds = %516, %491
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  br label %543

534:                                              ; preds = %531
  br label %535

535:                                              ; preds = %534
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %478, !llvm.loop !52

536:                                              ; preds = %531, %481
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  %537 = load i32, ptr %9, align 4
  switch i32 %537, label %541 [
    i32 86, label %538
  ]

538:                                              ; preds = %536
  br label %539

539:                                              ; preds = %538, %476, %415, %383
  br label %540

540:                                              ; preds = %539
  store i8 0, ptr %35, align 1, !tbaa !9
  br label %376, !llvm.loop !53

541:                                              ; preds = %536, %474, %413, %379
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  %542 = load i32, ptr %9, align 4
  switch i32 %542, label %546 [
    i32 67, label %544
  ]

543:                                              ; preds = %533, %471, %403, %384
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  br label %553

544:                                              ; preds = %541
  br label %545

545:                                              ; preds = %544
  store i8 0, ptr %35, align 1, !tbaa !9
  br label %368, !llvm.loop !54

546:                                              ; preds = %541, %371
  call void @llvm.lifetime.end.p0(i64 1, ptr %35) #7
  %547 = load i32, ptr %9, align 4
  switch i32 %547, label %549 [
    i32 64, label %548
  ]

548:                                              ; preds = %546
  store i32 0, ptr %9, align 4
  br label %549

549:                                              ; preds = %548, %546, %362
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  %550 = load i32, ptr %9, align 4
  switch i32 %550, label %554 [
    i32 0, label %551
  ]

551:                                              ; preds = %549
  br label %552

552:                                              ; preds = %551
  store i8 0, ptr %32, align 1, !tbaa !9
  br label %337, !llvm.loop !55

553:                                              ; preds = %543, %363
  call void @llvm.lifetime.end.p0(i64 8, ptr %34) #7
  br label %556

554:                                              ; preds = %549, %341
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  %555 = load i32, ptr %9, align 4
  switch i32 %555, label %559 [
    i32 61, label %557
  ]

556:                                              ; preds = %553, %342
  call void @llvm.lifetime.end.p0(i64 8, ptr %33) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  br label %777

557:                                              ; preds = %554
  br label %558

558:                                              ; preds = %557
  store i8 0, ptr %32, align 1, !tbaa !9
  br label %329, !llvm.loop !56

559:                                              ; preds = %554, %332
  call void @llvm.lifetime.end.p0(i64 1, ptr %32) #7
  %560 = load i32, ptr %9, align 4
  switch i32 %560, label %775 [
    i32 58, label %561
  ]

561:                                              ; preds = %559
  br label %773

562:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %51) #7
  store i8 1, ptr %51, align 1, !tbaa !9
  br label %563

563:                                              ; preds = %705, %562
  %564 = load i8, ptr %51, align 1, !tbaa !9, !range !11, !noundef !12
  %565 = trunc i8 %564 to i1
  br i1 %565, label %567, label %566

566:                                              ; preds = %563
  store i32 95, ptr %9, align 4
  br label %706

567:                                              ; preds = %563
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %568 = load ptr, ptr %25, align 8, !tbaa !5
  %569 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %568)
          to label %570 unwind label %576

570:                                              ; preds = %567
  store ptr %569, ptr %52, align 8, !tbaa !5
  br label %571

571:                                              ; preds = %700, %570
  %572 = load ptr, ptr %52, align 8, !tbaa !5
  %573 = load i8, ptr %51, align 1, !tbaa !9, !range !11, !noundef !12
  %574 = trunc i8 %573 to i1
  br i1 %574, label %580, label %575

575:                                              ; preds = %571
  store i32 98, ptr %9, align 4
  br label %701

576:                                              ; preds = %567
  %577 = landingpad { ptr, i32 }
          cleanup
  %578 = extractvalue { ptr, i32 } %577, 0
  store ptr %578, ptr %21, align 8
  %579 = extractvalue { ptr, i32 } %577, 1
  store i32 %579, ptr %22, align 4
  br label %703

580:                                              ; preds = %571
  call void @llvm.lifetime.start.p0(i64 1, ptr %53) #7
  store i8 1, ptr %53, align 1, !tbaa !9
  br label %581

581:                                              ; preds = %696, %580
  %582 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %583 = trunc i8 %582 to i1
  br i1 %583, label %585, label %584

584:                                              ; preds = %581
  store i32 101, ptr %9, align 4
  br label %697

585:                                              ; preds = %581
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %586 = load ptr, ptr %52, align 8, !tbaa !5
  %587 = load ptr, ptr %586, align 8, !tbaa !5
  %588 = getelementptr inbounds %"class.HIR::Enum", ptr %587, i32 0, i32 3
  store ptr %588, ptr %54, align 8, !tbaa !5
  br label %589

589:                                              ; preds = %691, %585
  %590 = load i8, ptr %53, align 1, !tbaa !9, !range !11, !noundef !12
  %591 = trunc i8 %590 to i1
  br i1 %591, label %593, label %592

592:                                              ; preds = %589
  store i32 104, ptr %9, align 4
  br label %692

593:                                              ; preds = %589
  %594 = load ptr, ptr %54, align 8, !tbaa !5
  %595 = invoke noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %594)
          to label %596 unwind label %597

596:                                              ; preds = %593
  switch i32 %595, label %690 [
    i32 0, label %601
    i32 2, label %602
    i32 1, label %629
  ]

597:                                              ; preds = %593
  %598 = landingpad { ptr, i32 }
          cleanup
  %599 = extractvalue { ptr, i32 } %598, 0
  store ptr %599, ptr %21, align 8
  %600 = extractvalue { ptr, i32 } %598, 1
  store i32 %600, ptr %22, align 4
  br label %694

601:                                              ; preds = %596
  call void @__assert_fail(ptr noundef @.str.4, ptr noundef @.str.5, i32 noundef 2674, ptr noundef @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #8
  unreachable

602:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 1, ptr %55) #7
  store i8 1, ptr %55, align 1, !tbaa !9
  br label %603

603:                                              ; preds = %625, %602
  %604 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %605 = trunc i8 %604 to i1
  br i1 %605, label %607, label %606

606:                                              ; preds = %603
  store i32 108, ptr %9, align 4
  br label %626

607:                                              ; preds = %603
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %608 = load ptr, ptr %54, align 8, !tbaa !5
  %609 = invoke noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40) %608)
          to label %610 unwind label %616

610:                                              ; preds = %607
  store ptr %609, ptr %56, align 8, !tbaa !5
  br label %611

611:                                              ; preds = %621, %610
  %612 = load ptr, ptr %56, align 8, !tbaa !5
  %613 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %614 = trunc i8 %613 to i1
  br i1 %614, label %620, label %615

615:                                              ; preds = %611
  store i32 111, ptr %9, align 4
  br label %622

616:                                              ; preds = %607
  %617 = landingpad { ptr, i32 }
          cleanup
  %618 = extractvalue { ptr, i32 } %617, 0
  store ptr %618, ptr %21, align 8
  %619 = extractvalue { ptr, i32 } %617, 1
  store i32 %619, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %694

620:                                              ; preds = %611
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %622

621:                                              ; No predecessors!
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %611, !llvm.loop !57

622:                                              ; preds = %620, %615
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  %623 = load i32, ptr %9, align 4
  switch i32 %623, label %626 [
    i32 111, label %624
  ]

624:                                              ; preds = %622
  br label %625

625:                                              ; preds = %624
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %603, !llvm.loop !58

626:                                              ; preds = %622, %606
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  %627 = load i32, ptr %9, align 4
  switch i32 %627, label %692 [
    i32 108, label %628
  ]

628:                                              ; preds = %626
  br label %690

629:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 1, ptr %57) #7
  store i8 1, ptr %57, align 1, !tbaa !9
  br label %630

630:                                              ; preds = %686, %629
  %631 = load i8, ptr %57, align 1, !tbaa !9, !range !11, !noundef !12
  %632 = trunc i8 %631 to i1
  br i1 %632, label %634, label %633

633:                                              ; preds = %630
  store i32 114, ptr %9, align 4
  br label %687

634:                                              ; preds = %630
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %635 = load ptr, ptr %54, align 8, !tbaa !5
  %636 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %635)
          to label %637 unwind label %643

637:                                              ; preds = %634
  store ptr %636, ptr %58, align 8, !tbaa !5
  br label %638

638:                                              ; preds = %681, %637
  %639 = load ptr, ptr %58, align 8, !tbaa !5
  %640 = load i8, ptr %57, align 1, !tbaa !9, !range !11, !noundef !12
  %641 = trunc i8 %640 to i1
  br i1 %641, label %647, label %642

642:                                              ; preds = %638
  store i32 117, ptr %9, align 4
  br label %682

643:                                              ; preds = %634
  %644 = landingpad { ptr, i32 }
          cleanup
  %645 = extractvalue { ptr, i32 } %644, 0
  store ptr %645, ptr %21, align 8
  %646 = extractvalue { ptr, i32 } %644, 1
  store i32 %646, ptr %22, align 4
  br label %684

647:                                              ; preds = %638
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %648 = load ptr, ptr %58, align 8, !tbaa !5
  store ptr %648, ptr %59, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %60) #7
  %649 = load ptr, ptr %59, align 8, !tbaa !5
  %650 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %649) #7
  %651 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.514", ptr %60, i32 0, i32 0
  store ptr %650, ptr %651, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %652 = load ptr, ptr %59, align 8, !tbaa !5
  %653 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %652) #7
  %654 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.514", ptr %61, i32 0, i32 0
  store ptr %653, ptr %654, align 8
  br label %655

655:                                              ; preds = %676, %647
  %656 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %60, ptr noundef nonnull align 8 dereferenceable(8) %61) #7
  br i1 %656, label %658, label %657

657:                                              ; preds = %655
  store i32 120, ptr %9, align 4
  br label %678

658:                                              ; preds = %655
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %659 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  store ptr %659, ptr %62, align 8, !tbaa !5
  %660 = load ptr, ptr %6, align 8, !tbaa !5
  %661 = load ptr, ptr %62, align 8, !tbaa !5
  %662 = getelementptr inbounds %"struct.HIR::Enum::DataVariant", ptr %661, i32 0, i32 2
  %663 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %662)
          to label %664 unwind label %667

664:                                              ; preds = %658
  %665 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %660, ptr noundef nonnull align 8 dereferenceable(8) %663)
          to label %666 unwind label %667

666:                                              ; preds = %664
  switch i32 %665, label %673 [
    i32 0, label %671
    i32 1, label %672
  ]

667:                                              ; preds = %664, %658
  %668 = landingpad { ptr, i32 }
          cleanup
  %669 = extractvalue { ptr, i32 } %668, 0
  store ptr %669, ptr %21, align 8
  %670 = extractvalue { ptr, i32 } %668, 1
  store i32 %670, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  br label %684

671:                                              ; preds = %666
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %674

672:                                              ; preds = %666
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %674

673:                                              ; preds = %666
  store i32 121, ptr %9, align 4
  br label %674

674:                                              ; preds = %673, %672, %671
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  %675 = load i32, ptr %9, align 4
  switch i32 %675, label %678 [
    i32 121, label %676
  ]

676:                                              ; preds = %674
  %677 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %60) #7
  br label %655

678:                                              ; preds = %674, %657
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %60) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  %679 = load i32, ptr %9, align 4
  switch i32 %679, label %682 [
    i32 120, label %680
  ]

680:                                              ; preds = %678
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %682

681:                                              ; No predecessors!
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %638, !llvm.loop !59

682:                                              ; preds = %680, %678, %642
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  %683 = load i32, ptr %9, align 4
  switch i32 %683, label %687 [
    i32 117, label %685
  ]

684:                                              ; preds = %667, %643
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  br label %694

685:                                              ; preds = %682
  br label %686

686:                                              ; preds = %685
  store i8 0, ptr %57, align 1, !tbaa !9
  br label %630, !llvm.loop !60

687:                                              ; preds = %682, %633
  call void @llvm.lifetime.end.p0(i64 1, ptr %57) #7
  %688 = load i32, ptr %9, align 4
  switch i32 %688, label %692 [
    i32 114, label %689
  ]

689:                                              ; preds = %687
  br label %690

690:                                              ; preds = %689, %628, %596
  br label %691

691:                                              ; preds = %690
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %589, !llvm.loop !61

692:                                              ; preds = %687, %626, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  %693 = load i32, ptr %9, align 4
  switch i32 %693, label %697 [
    i32 104, label %695
  ]

694:                                              ; preds = %684, %616, %597
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  br label %703

695:                                              ; preds = %692
  br label %696

696:                                              ; preds = %695
  store i8 0, ptr %53, align 1, !tbaa !9
  br label %581, !llvm.loop !62

697:                                              ; preds = %692, %584
  call void @llvm.lifetime.end.p0(i64 1, ptr %53) #7
  %698 = load i32, ptr %9, align 4
  switch i32 %698, label %701 [
    i32 101, label %699
  ]

699:                                              ; preds = %697
  br label %700

700:                                              ; preds = %699
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %571, !llvm.loop !63

701:                                              ; preds = %697, %575
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  %702 = load i32, ptr %9, align 4
  switch i32 %702, label %706 [
    i32 98, label %704
  ]

703:                                              ; preds = %694, %576
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  br label %777

704:                                              ; preds = %701
  br label %705

705:                                              ; preds = %704
  store i8 0, ptr %51, align 1, !tbaa !9
  br label %563, !llvm.loop !64

706:                                              ; preds = %701, %566
  call void @llvm.lifetime.end.p0(i64 1, ptr %51) #7
  %707 = load i32, ptr %9, align 4
  switch i32 %707, label %775 [
    i32 95, label %708
  ]

708:                                              ; preds = %706
  br label %773

709:                                              ; preds = %241
  call void @llvm.lifetime.start.p0(i64 1, ptr %63) #7
  store i8 1, ptr %63, align 1, !tbaa !9
  br label %710

710:                                              ; preds = %769, %709
  %711 = load i8, ptr %63, align 1, !tbaa !9, !range !11, !noundef !12
  %712 = trunc i8 %711 to i1
  br i1 %712, label %714, label %713

713:                                              ; preds = %710
  store i32 123, ptr %9, align 4
  br label %770

714:                                              ; preds = %710
  call void @llvm.lifetime.start.p0(i64 8, ptr %64) #7
  %715 = load ptr, ptr %25, align 8, !tbaa !5
  %716 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %715)
          to label %717 unwind label %723

717:                                              ; preds = %714
  store ptr %716, ptr %64, align 8, !tbaa !5
  br label %718

718:                                              ; preds = %764, %717
  %719 = load ptr, ptr %64, align 8, !tbaa !5
  %720 = load i8, ptr %63, align 1, !tbaa !9, !range !11, !noundef !12
  %721 = trunc i8 %720 to i1
  br i1 %721, label %727, label %722

722:                                              ; preds = %718
  store i32 126, ptr %9, align 4
  br label %765

723:                                              ; preds = %714
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %21, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %22, align 4
  br label %767

727:                                              ; preds = %718
  call void @llvm.lifetime.start.p0(i64 8, ptr %65) #7
  %728 = load ptr, ptr %64, align 8, !tbaa !5
  %729 = load ptr, ptr %728, align 8, !tbaa !5
  %730 = getelementptr inbounds %"class.HIR::Union", ptr %729, i32 0, i32 2
  store ptr %730, ptr %65, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %66) #7
  %731 = load ptr, ptr %65, align 8, !tbaa !5
  %732 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %731) #7
  %733 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %66, i32 0, i32 0
  store ptr %732, ptr %733, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  %734 = load ptr, ptr %65, align 8, !tbaa !5
  %735 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %734) #7
  %736 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.511", ptr %67, i32 0, i32 0
  store ptr %735, ptr %736, align 8
  br label %737

737:                                              ; preds = %759, %727
  %738 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %66, ptr noundef nonnull align 8 dereferenceable(8) %67) #7
  br i1 %738, label %740, label %739

739:                                              ; preds = %737
  store i32 129, ptr %9, align 4
  br label %761

740:                                              ; preds = %737
  call void @llvm.lifetime.start.p0(i64 8, ptr %68) #7
  %741 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  store ptr %741, ptr %68, align 8, !tbaa !5
  %742 = load ptr, ptr %6, align 8, !tbaa !5
  %743 = load ptr, ptr %68, align 8, !tbaa !5
  %744 = getelementptr inbounds %"struct.std::pair.512", ptr %743, i32 0, i32 1
  %745 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %744, i32 0, i32 1
  %746 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %23, ptr noundef nonnull align 8 dereferenceable(8) %745)
          to label %747 unwind label %750

747:                                              ; preds = %740
  %748 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %742, ptr noundef nonnull align 8 dereferenceable(8) %746)
          to label %749 unwind label %750

749:                                              ; preds = %747
  switch i32 %748, label %756 [
    i32 0, label %754
    i32 1, label %755
  ]

750:                                              ; preds = %747, %740
  %751 = landingpad { ptr, i32 }
          cleanup
  %752 = extractvalue { ptr, i32 } %751, 0
  store ptr %752, ptr %21, align 8
  %753 = extractvalue { ptr, i32 } %751, 1
  store i32 %753, ptr %22, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  br label %767

754:                                              ; preds = %749
  store i32 0, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %757

755:                                              ; preds = %749
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %757

756:                                              ; preds = %749
  store i32 130, ptr %9, align 4
  br label %757

757:                                              ; preds = %756, %755, %754
  call void @llvm.lifetime.end.p0(i64 8, ptr %68) #7
  %758 = load i32, ptr %9, align 4
  switch i32 %758, label %761 [
    i32 130, label %759
  ]

759:                                              ; preds = %757
  %760 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %66) #7
  br label %737

761:                                              ; preds = %757, %739
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %66) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %65) #7
  %762 = load i32, ptr %9, align 4
  switch i32 %762, label %765 [
    i32 129, label %763
  ]

763:                                              ; preds = %761
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %765

764:                                              ; No predecessors!
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %718, !llvm.loop !65

765:                                              ; preds = %763, %761, %722
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  %766 = load i32, ptr %9, align 4
  switch i32 %766, label %770 [
    i32 126, label %768
  ]

767:                                              ; preds = %750, %723
  call void @llvm.lifetime.end.p0(i64 8, ptr %64) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  br label %777

768:                                              ; preds = %765
  br label %769

769:                                              ; preds = %768
  store i8 0, ptr %63, align 1, !tbaa !9
  br label %710, !llvm.loop !66

770:                                              ; preds = %765, %713
  call void @llvm.lifetime.end.p0(i64 1, ptr %63) #7
  %771 = load i32, ptr %9, align 4
  switch i32 %771, label %775 [
    i32 123, label %772
  ]

772:                                              ; preds = %770
  br label %773

773:                                              ; preds = %772, %708, %561, %327, %300, %273, %241
  br label %774

774:                                              ; preds = %773
  store i8 0, ptr %24, align 1, !tbaa !9
  br label %234, !llvm.loop !67

775:                                              ; preds = %770, %706, %559, %325, %298, %271, %237
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  %776 = load i32, ptr %9, align 4
  switch i32 %776, label %780 [
    i32 36, label %778
  ]

777:                                              ; preds = %767, %703, %556, %315, %288, %261, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %25) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  br label %787

778:                                              ; preds = %775
  br label %779

779:                                              ; preds = %778
  store i8 0, ptr %24, align 1, !tbaa !9
  br label %223, !llvm.loop !68

780:                                              ; preds = %775, %226
  call void @llvm.lifetime.end.p0(i64 1, ptr %24) #7
  %781 = load i32, ptr %9, align 4
  switch i32 %781, label %783 [
    i32 33, label %782
  ]

782:                                              ; preds = %780
  store i32 0, ptr %9, align 4
  br label %783

783:                                              ; preds = %782, %780
  call void @llvm.lifetime.end.p0(i64 32, ptr %23) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %19) #7
  %784 = load i32, ptr %9, align 4
  switch i32 %784, label %788 [
    i32 0, label %785
  ]

785:                                              ; preds = %783
  br label %786

786:                                              ; preds = %785
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %198, !llvm.loop !69

787:                                              ; preds = %777, %227
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %19) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %19) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  br label %1197

788:                                              ; preds = %783, %202
  call void @llvm.lifetime.end.p0(i64 8, ptr %18) #7
  %789 = load i32, ptr %9, align 4
  switch i32 %789, label %792 [
    i32 30, label %790
  ]

790:                                              ; preds = %788
  br label %791

791:                                              ; preds = %790
  store i8 0, ptr %17, align 1, !tbaa !9
  br label %191, !llvm.loop !70

792:                                              ; preds = %788, %194
  call void @llvm.lifetime.end.p0(i64 1, ptr %17) #7
  %793 = load i32, ptr %9, align 4
  switch i32 %793, label %1188 [
    i32 27, label %794
  ]

794:                                              ; preds = %792
  br label %1186

795:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %69) #7
  store i8 1, ptr %69, align 1, !tbaa !9
  br label %796

796:                                              ; preds = %813, %795
  %797 = load i8, ptr %69, align 1, !tbaa !9, !range !11, !noundef !12
  %798 = trunc i8 %797 to i1
  br i1 %798, label %800, label %799

799:                                              ; preds = %796
  store i32 132, ptr %9, align 4
  br label %814

800:                                              ; preds = %796
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #7
  %801 = load ptr, ptr %10, align 8, !tbaa !5
  %802 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %801)
  store ptr %802, ptr %70, align 8, !tbaa !5
  br label %803

803:                                              ; preds = %809, %800
  %804 = load ptr, ptr %70, align 8, !tbaa !5
  %805 = load i8, ptr %69, align 1, !tbaa !9, !range !11, !noundef !12
  %806 = trunc i8 %805 to i1
  br i1 %806, label %808, label %807

807:                                              ; preds = %803
  store i32 135, ptr %9, align 4
  br label %810

808:                                              ; preds = %803
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %810

809:                                              ; No predecessors!
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %803, !llvm.loop !71

810:                                              ; preds = %808, %807
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #7
  %811 = load i32, ptr %9, align 4
  switch i32 %811, label %814 [
    i32 135, label %812
  ]

812:                                              ; preds = %810
  br label %813

813:                                              ; preds = %812
  store i8 0, ptr %69, align 1, !tbaa !9
  br label %796, !llvm.loop !72

814:                                              ; preds = %810, %799
  call void @llvm.lifetime.end.p0(i64 1, ptr %69) #7
  %815 = load i32, ptr %9, align 4
  switch i32 %815, label %1188 [
    i32 132, label %816
  ]

816:                                              ; preds = %814
  br label %1186

817:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %71) #7
  store i8 1, ptr %71, align 1, !tbaa !9
  br label %818

818:                                              ; preds = %835, %817
  %819 = load i8, ptr %71, align 1, !tbaa !9, !range !11, !noundef !12
  %820 = trunc i8 %819 to i1
  br i1 %820, label %822, label %821

821:                                              ; preds = %818
  store i32 138, ptr %9, align 4
  br label %836

822:                                              ; preds = %818
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %823 = load ptr, ptr %10, align 8, !tbaa !5
  %824 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %823)
  store ptr %824, ptr %72, align 8, !tbaa !5
  br label %825

825:                                              ; preds = %831, %822
  %826 = load ptr, ptr %72, align 8, !tbaa !5
  %827 = load i8, ptr %71, align 1, !tbaa !9, !range !11, !noundef !12
  %828 = trunc i8 %827 to i1
  br i1 %828, label %830, label %829

829:                                              ; preds = %825
  store i32 141, ptr %9, align 4
  br label %832

830:                                              ; preds = %825
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %832

831:                                              ; No predecessors!
  store i8 0, ptr %71, align 1, !tbaa !9
  br label %825, !llvm.loop !73

832:                                              ; preds = %830, %829
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  %833 = load i32, ptr %9, align 4
  switch i32 %833, label %836 [
    i32 141, label %834
  ]

834:                                              ; preds = %832
  br label %835

835:                                              ; preds = %834
  store i8 0, ptr %71, align 1, !tbaa !9
  br label %818, !llvm.loop !74

836:                                              ; preds = %832, %821
  call void @llvm.lifetime.end.p0(i64 1, ptr %71) #7
  %837 = load i32, ptr %9, align 4
  switch i32 %837, label %1188 [
    i32 138, label %838
  ]

838:                                              ; preds = %836
  br label %1186

839:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %73) #7
  store i8 1, ptr %73, align 1, !tbaa !9
  br label %840

840:                                              ; preds = %857, %839
  %841 = load i8, ptr %73, align 1, !tbaa !9, !range !11, !noundef !12
  %842 = trunc i8 %841 to i1
  br i1 %842, label %844, label %843

843:                                              ; preds = %840
  store i32 144, ptr %9, align 4
  br label %858

844:                                              ; preds = %840
  call void @llvm.lifetime.start.p0(i64 8, ptr %74) #7
  %845 = load ptr, ptr %10, align 8, !tbaa !5
  %846 = call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %845)
  store ptr %846, ptr %74, align 8, !tbaa !5
  br label %847

847:                                              ; preds = %853, %844
  %848 = load ptr, ptr %74, align 8, !tbaa !5
  %849 = load i8, ptr %73, align 1, !tbaa !9, !range !11, !noundef !12
  %850 = trunc i8 %849 to i1
  br i1 %850, label %852, label %851

851:                                              ; preds = %847
  store i32 147, ptr %9, align 4
  br label %854

852:                                              ; preds = %847
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %854

853:                                              ; No predecessors!
  store i8 0, ptr %73, align 1, !tbaa !9
  br label %847, !llvm.loop !75

854:                                              ; preds = %852, %851
  call void @llvm.lifetime.end.p0(i64 8, ptr %74) #7
  %855 = load i32, ptr %9, align 4
  switch i32 %855, label %858 [
    i32 147, label %856
  ]

856:                                              ; preds = %854
  br label %857

857:                                              ; preds = %856
  store i8 0, ptr %73, align 1, !tbaa !9
  br label %840, !llvm.loop !76

858:                                              ; preds = %854, %843
  call void @llvm.lifetime.end.p0(i64 1, ptr %73) #7
  %859 = load i32, ptr %9, align 4
  switch i32 %859, label %1188 [
    i32 144, label %860
  ]

860:                                              ; preds = %858
  br label %1186

861:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %75) #7
  store i8 1, ptr %75, align 1, !tbaa !9
  br label %862

862:                                              ; preds = %883, %861
  %863 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %864 = trunc i8 %863 to i1
  br i1 %864, label %866, label %865

865:                                              ; preds = %862
  store i32 150, ptr %9, align 4
  br label %884

866:                                              ; preds = %862
  call void @llvm.lifetime.start.p0(i64 8, ptr %76) #7
  %867 = load ptr, ptr %10, align 8, !tbaa !5
  %868 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %867)
  store ptr %868, ptr %76, align 8, !tbaa !5
  br label %869

869:                                              ; preds = %879, %866
  %870 = load ptr, ptr %76, align 8, !tbaa !5
  %871 = load i8, ptr %75, align 1, !tbaa !9, !range !11, !noundef !12
  %872 = trunc i8 %871 to i1
  br i1 %872, label %874, label %873

873:                                              ; preds = %869
  store i32 153, ptr %9, align 4
  br label %880

874:                                              ; preds = %869
  %875 = load ptr, ptr %6, align 8, !tbaa !5
  %876 = load ptr, ptr %76, align 8, !tbaa !5
  %877 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %876, i32 0, i32 0
  %878 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %875, ptr noundef nonnull align 8 dereferenceable(8) %877)
  store i32 %878, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %880

879:                                              ; No predecessors!
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %869, !llvm.loop !77

880:                                              ; preds = %874, %873
  call void @llvm.lifetime.end.p0(i64 8, ptr %76) #7
  %881 = load i32, ptr %9, align 4
  switch i32 %881, label %884 [
    i32 153, label %882
  ]

882:                                              ; preds = %880
  br label %883

883:                                              ; preds = %882
  store i8 0, ptr %75, align 1, !tbaa !9
  br label %862, !llvm.loop !78

884:                                              ; preds = %880, %865
  call void @llvm.lifetime.end.p0(i64 1, ptr %75) #7
  %885 = load i32, ptr %9, align 4
  switch i32 %885, label %1188 [
    i32 150, label %886
  ]

886:                                              ; preds = %884
  br label %1186

887:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %77) #7
  store i8 1, ptr %77, align 1, !tbaa !9
  br label %888

888:                                              ; preds = %909, %887
  %889 = load i8, ptr %77, align 1, !tbaa !9, !range !11, !noundef !12
  %890 = trunc i8 %889 to i1
  br i1 %890, label %892, label %891

891:                                              ; preds = %888
  store i32 156, ptr %9, align 4
  br label %910

892:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %893 = load ptr, ptr %10, align 8, !tbaa !5
  %894 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %893)
  store ptr %894, ptr %78, align 8, !tbaa !5
  br label %895

895:                                              ; preds = %905, %892
  %896 = load ptr, ptr %78, align 8, !tbaa !5
  %897 = load i8, ptr %77, align 1, !tbaa !9, !range !11, !noundef !12
  %898 = trunc i8 %897 to i1
  br i1 %898, label %900, label %899

899:                                              ; preds = %895
  store i32 159, ptr %9, align 4
  br label %906

900:                                              ; preds = %895
  %901 = load ptr, ptr %6, align 8, !tbaa !5
  %902 = load ptr, ptr %78, align 8, !tbaa !5
  %903 = getelementptr inbounds %"struct.HIR::TypeData::Data_Slice", ptr %902, i32 0, i32 0
  %904 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %901, ptr noundef nonnull align 8 dereferenceable(8) %903)
  store i32 %904, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %906

905:                                              ; No predecessors!
  store i8 0, ptr %77, align 1, !tbaa !9
  br label %895, !llvm.loop !79

906:                                              ; preds = %900, %899
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  %907 = load i32, ptr %9, align 4
  switch i32 %907, label %910 [
    i32 159, label %908
  ]

908:                                              ; preds = %906
  br label %909

909:                                              ; preds = %908
  store i8 0, ptr %77, align 1, !tbaa !9
  br label %888, !llvm.loop !80

910:                                              ; preds = %906, %891
  call void @llvm.lifetime.end.p0(i64 1, ptr %77) #7
  %911 = load i32, ptr %9, align 4
  switch i32 %911, label %1188 [
    i32 156, label %912
  ]

912:                                              ; preds = %910
  br label %1186

913:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %79) #7
  store i8 1, ptr %79, align 1, !tbaa !9
  br label %914

914:                                              ; preds = %962, %913
  %915 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %916 = trunc i8 %915 to i1
  br i1 %916, label %918, label %917

917:                                              ; preds = %914
  store i32 162, ptr %9, align 4
  br label %963

918:                                              ; preds = %914
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  %919 = load ptr, ptr %10, align 8, !tbaa !5
  %920 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %919)
  store ptr %920, ptr %80, align 8, !tbaa !5
  br label %921

921:                                              ; preds = %958, %918
  %922 = load ptr, ptr %80, align 8, !tbaa !5
  %923 = load i8, ptr %79, align 1, !tbaa !9, !range !11, !noundef !12
  %924 = trunc i8 %923 to i1
  br i1 %924, label %926, label %925

925:                                              ; preds = %921
  store i32 165, ptr %9, align 4
  br label %959

926:                                              ; preds = %921
  call void @llvm.lifetime.start.p0(i64 8, ptr %81) #7
  %927 = load ptr, ptr %80, align 8, !tbaa !5
  store ptr %927, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %82) #7
  %928 = load ptr, ptr %81, align 8, !tbaa !5
  %929 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %928) #7
  %930 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.518", ptr %82, i32 0, i32 0
  store ptr %929, ptr %930, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %83) #7
  %931 = load ptr, ptr %81, align 8, !tbaa !5
  %932 = call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %931) #7
  %933 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.518", ptr %83, i32 0, i32 0
  store ptr %932, ptr %933, align 8
  br label %934

934:                                              ; preds = %953, %926
  %935 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %82, ptr noundef nonnull align 8 dereferenceable(8) %83) #7
  br i1 %935, label %937, label %936

936:                                              ; preds = %934
  store i32 168, ptr %9, align 4
  br label %955

937:                                              ; preds = %934
  call void @llvm.lifetime.start.p0(i64 8, ptr %84) #7
  %938 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  store ptr %938, ptr %84, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %85) #7
  %939 = load ptr, ptr %6, align 8, !tbaa !5
  %940 = load ptr, ptr %84, align 8, !tbaa !5
  %941 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %939, ptr noundef nonnull align 8 dereferenceable(8) %940)
  store i32 %941, ptr %85, align 4, !tbaa !81
  %942 = load i32, ptr %85, align 4, !tbaa !81
  %943 = icmp ne i32 %942, 2
  br i1 %943, label %944, label %946

944:                                              ; preds = %937
  %945 = load i32, ptr %85, align 4, !tbaa !81
  store i32 %945, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %947

946:                                              ; preds = %937
  store i32 0, ptr %9, align 4
  br label %947

947:                                              ; preds = %946, %944
  call void @llvm.lifetime.end.p0(i64 4, ptr %85) #7
  %948 = load i32, ptr %9, align 4
  switch i32 %948, label %950 [
    i32 0, label %949
  ]

949:                                              ; preds = %947
  store i32 0, ptr %9, align 4
  br label %950

950:                                              ; preds = %949, %947
  call void @llvm.lifetime.end.p0(i64 8, ptr %84) #7
  %951 = load i32, ptr %9, align 4
  switch i32 %951, label %955 [
    i32 0, label %952
  ]

952:                                              ; preds = %950
  br label %953

953:                                              ; preds = %952
  %954 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %82) #7
  br label %934

955:                                              ; preds = %950, %936
  call void @llvm.lifetime.end.p0(i64 8, ptr %83) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %82) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %81) #7
  %956 = load i32, ptr %9, align 4
  switch i32 %956, label %959 [
    i32 168, label %957
  ]

957:                                              ; preds = %955
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %959

958:                                              ; No predecessors!
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %921, !llvm.loop !83

959:                                              ; preds = %957, %955, %925
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  %960 = load i32, ptr %9, align 4
  switch i32 %960, label %963 [
    i32 165, label %961
  ]

961:                                              ; preds = %959
  br label %962

962:                                              ; preds = %961
  store i8 0, ptr %79, align 1, !tbaa !9
  br label %914, !llvm.loop !84

963:                                              ; preds = %959, %917
  call void @llvm.lifetime.end.p0(i64 1, ptr %79) #7
  %964 = load i32, ptr %9, align 4
  switch i32 %964, label %1188 [
    i32 162, label %965
  ]

965:                                              ; preds = %963
  br label %1186

966:                                              ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %86) #7
  store i8 1, ptr %86, align 1, !tbaa !9
  br label %967

967:                                              ; preds = %1036, %966
  %968 = load i8, ptr %86, align 1, !tbaa !9, !range !11, !noundef !12
  %969 = trunc i8 %968 to i1
  br i1 %969, label %971, label %970

970:                                              ; preds = %967
  store i32 170, ptr %9, align 4
  br label %1037

971:                                              ; preds = %967
  call void @llvm.lifetime.start.p0(i64 8, ptr %87) #7
  %972 = load ptr, ptr %10, align 8, !tbaa !5
  %973 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %972)
  store ptr %973, ptr %87, align 8, !tbaa !5
  br label %974

974:                                              ; preds = %1032, %971
  %975 = load ptr, ptr %87, align 8, !tbaa !5
  %976 = load i8, ptr %86, align 1, !tbaa !9, !range !11, !noundef !12
  %977 = trunc i8 %976 to i1
  br i1 %977, label %979, label %978

978:                                              ; preds = %974
  store i32 173, ptr %9, align 4
  br label %1033

979:                                              ; preds = %974
  %980 = load ptr, ptr %87, align 8, !tbaa !5
  %981 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %980, i32 0, i32 0
  %982 = load ptr, ptr %981, align 8, !tbaa !85
  %983 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %982, i32 0, i32 5
  %984 = load i32, ptr %983, align 4, !tbaa !87
  %985 = icmp eq i32 %984, 0
  br i1 %985, label %986, label %987

986:                                              ; preds = %979
  store i32 1, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1033

987:                                              ; preds = %979
  %988 = load ptr, ptr %87, align 8, !tbaa !5
  %989 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %988, i32 0, i32 0
  %990 = load ptr, ptr %989, align 8, !tbaa !85
  %991 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %990, i32 0, i32 6
  %992 = load i8, ptr %991, align 8, !tbaa !124, !range !11, !noundef !12
  %993 = trunc i8 %992 to i1
  br i1 %993, label %994, label %995

994:                                              ; preds = %987
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1033

995:                                              ; preds = %987
  call void @llvm.lifetime.start.p0(i64 8, ptr %88) #7
  %996 = load ptr, ptr %87, align 8, !tbaa !5
  %997 = getelementptr inbounds %"struct.HIR::TypeData::Data_Closure", ptr %996, i32 0, i32 0
  %998 = load ptr, ptr %997, align 8, !tbaa !85
  %999 = getelementptr inbounds %"struct.HIR::ExprNode_Closure", ptr %998, i32 0, i32 12
  store ptr %999, ptr %88, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %89) #7
  %1000 = load ptr, ptr %88, align 8, !tbaa !5
  %1001 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1000) #7
  %1002 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.614", ptr %89, i32 0, i32 0
  store ptr %1001, ptr %1002, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %90) #7
  %1003 = load ptr, ptr %88, align 8, !tbaa !5
  %1004 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1003) #7
  %1005 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.614", ptr %90, i32 0, i32 0
  store ptr %1004, ptr %1005, align 8
  br label %1006

1006:                                             ; preds = %1027, %995
  %1007 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %89, ptr noundef nonnull align 8 dereferenceable(8) %90) #7
  br i1 %1007, label %1009, label %1008

1008:                                             ; preds = %1006
  store i32 176, ptr %9, align 4
  br label %1029

1009:                                             ; preds = %1006
  call void @llvm.lifetime.start.p0(i64 8, ptr %91) #7
  %1010 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  store ptr %1010, ptr %91, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %92) #7
  %1011 = load ptr, ptr %6, align 8, !tbaa !5
  %1012 = load ptr, ptr %91, align 8, !tbaa !5
  %1013 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1012) #7
  %1014 = getelementptr inbounds %"class.HIR::ExprNode", ptr %1013, i32 0, i32 2
  %1015 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %1011, ptr noundef nonnull align 8 dereferenceable(8) %1014)
  store i32 %1015, ptr %92, align 4, !tbaa !81
  %1016 = load i32, ptr %92, align 4, !tbaa !81
  %1017 = icmp ne i32 %1016, 2
  br i1 %1017, label %1018, label %1020

1018:                                             ; preds = %1009
  %1019 = load i32, ptr %92, align 4, !tbaa !81
  store i32 %1019, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1021

1020:                                             ; preds = %1009
  store i32 0, ptr %9, align 4
  br label %1021

1021:                                             ; preds = %1020, %1018
  call void @llvm.lifetime.end.p0(i64 4, ptr %92) #7
  %1022 = load i32, ptr %9, align 4
  switch i32 %1022, label %1024 [
    i32 0, label %1023
  ]

1023:                                             ; preds = %1021
  store i32 0, ptr %9, align 4
  br label %1024

1024:                                             ; preds = %1023, %1021
  call void @llvm.lifetime.end.p0(i64 8, ptr %91) #7
  %1025 = load i32, ptr %9, align 4
  switch i32 %1025, label %1029 [
    i32 0, label %1026
  ]

1026:                                             ; preds = %1024
  br label %1027

1027:                                             ; preds = %1026
  %1028 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %89) #7
  br label %1006

1029:                                             ; preds = %1024, %1008
  call void @llvm.lifetime.end.p0(i64 8, ptr %90) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %89) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %88) #7
  %1030 = load i32, ptr %9, align 4
  switch i32 %1030, label %1033 [
    i32 176, label %1031
  ]

1031:                                             ; preds = %1029
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1033

1032:                                             ; No predecessors!
  store i8 0, ptr %86, align 1, !tbaa !9
  br label %974, !llvm.loop !125

1033:                                             ; preds = %1031, %1029, %994, %986, %978
  call void @llvm.lifetime.end.p0(i64 8, ptr %87) #7
  %1034 = load i32, ptr %9, align 4
  switch i32 %1034, label %1037 [
    i32 173, label %1035
  ]

1035:                                             ; preds = %1033
  br label %1036

1036:                                             ; preds = %1035
  store i8 0, ptr %86, align 1, !tbaa !9
  br label %967, !llvm.loop !126

1037:                                             ; preds = %1033, %970
  call void @llvm.lifetime.end.p0(i64 1, ptr %86) #7
  %1038 = load i32, ptr %9, align 4
  switch i32 %1038, label %1188 [
    i32 170, label %1039
  ]

1039:                                             ; preds = %1037
  br label %1186

1040:                                             ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %93) #7
  store i8 1, ptr %93, align 1, !tbaa !9
  br label %1041

1041:                                             ; preds = %1094, %1040
  %1042 = load i8, ptr %93, align 1, !tbaa !9, !range !11, !noundef !12
  %1043 = trunc i8 %1042 to i1
  br i1 %1043, label %1045, label %1044

1044:                                             ; preds = %1041
  store i32 178, ptr %9, align 4
  br label %1095

1045:                                             ; preds = %1041
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #7
  %1046 = load ptr, ptr %10, align 8, !tbaa !5
  %1047 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %1046)
  store ptr %1047, ptr %94, align 8, !tbaa !5
  br label %1048

1048:                                             ; preds = %1090, %1045
  %1049 = load ptr, ptr %94, align 8, !tbaa !5
  %1050 = load i8, ptr %93, align 1, !tbaa !9, !range !11, !noundef !12
  %1051 = trunc i8 %1050 to i1
  br i1 %1051, label %1053, label %1052

1052:                                             ; preds = %1048
  store i32 181, ptr %9, align 4
  br label %1091

1053:                                             ; preds = %1048
  call void @llvm.lifetime.start.p0(i64 8, ptr %95) #7
  %1054 = load ptr, ptr %94, align 8, !tbaa !5
  %1055 = getelementptr inbounds %"struct.HIR::TypeData::Data_Generator", ptr %1054, i32 0, i32 0
  %1056 = load ptr, ptr %1055, align 8, !tbaa !127
  %1057 = getelementptr inbounds %"struct.HIR::ExprNode_Generator", ptr %1056, i32 0, i32 10
  store ptr %1057, ptr %95, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %96) #7
  %1058 = load ptr, ptr %95, align 8, !tbaa !5
  %1059 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %1058) #7
  %1060 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.614", ptr %96, i32 0, i32 0
  store ptr %1059, ptr %1060, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr %97) #7
  %1061 = load ptr, ptr %95, align 8, !tbaa !5
  %1062 = call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %1061) #7
  %1063 = getelementptr inbounds %"class.__gnu_cxx::__normal_iterator.614", ptr %97, i32 0, i32 0
  store ptr %1062, ptr %1063, align 8
  br label %1064

1064:                                             ; preds = %1085, %1053
  %1065 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %96, ptr noundef nonnull align 8 dereferenceable(8) %97) #7
  br i1 %1065, label %1067, label %1066

1066:                                             ; preds = %1064
  store i32 184, ptr %9, align 4
  br label %1087

1067:                                             ; preds = %1064
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #7
  %1068 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  store ptr %1068, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %99) #7
  %1069 = load ptr, ptr %6, align 8, !tbaa !5
  %1070 = load ptr, ptr %98, align 8, !tbaa !5
  %1071 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %1070) #7
  %1072 = getelementptr inbounds %"class.HIR::ExprNode", ptr %1071, i32 0, i32 2
  %1073 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %108, ptr noundef nonnull align 8 dereferenceable(8) %1069, ptr noundef nonnull align 8 dereferenceable(8) %1072)
  store i32 %1073, ptr %99, align 4, !tbaa !81
  %1074 = load i32, ptr %99, align 4, !tbaa !81
  %1075 = icmp ne i32 %1074, 2
  br i1 %1075, label %1076, label %1078

1076:                                             ; preds = %1067
  %1077 = load i32, ptr %99, align 4, !tbaa !81
  store i32 %1077, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1079

1078:                                             ; preds = %1067
  store i32 0, ptr %9, align 4
  br label %1079

1079:                                             ; preds = %1078, %1076
  call void @llvm.lifetime.end.p0(i64 4, ptr %99) #7
  %1080 = load i32, ptr %9, align 4
  switch i32 %1080, label %1082 [
    i32 0, label %1081
  ]

1081:                                             ; preds = %1079
  store i32 0, ptr %9, align 4
  br label %1082

1082:                                             ; preds = %1081, %1079
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #7
  %1083 = load i32, ptr %9, align 4
  switch i32 %1083, label %1087 [
    i32 0, label %1084
  ]

1084:                                             ; preds = %1082
  br label %1085

1085:                                             ; preds = %1084
  %1086 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %96) #7
  br label %1064

1087:                                             ; preds = %1082, %1066
  call void @llvm.lifetime.end.p0(i64 8, ptr %97) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %96) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %95) #7
  %1088 = load i32, ptr %9, align 4
  switch i32 %1088, label %1091 [
    i32 184, label %1089
  ]

1089:                                             ; preds = %1087
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1091

1090:                                             ; No predecessors!
  store i8 0, ptr %93, align 1, !tbaa !9
  br label %1048, !llvm.loop !129

1091:                                             ; preds = %1089, %1087, %1052
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #7
  %1092 = load i32, ptr %9, align 4
  switch i32 %1092, label %1095 [
    i32 181, label %1093
  ]

1093:                                             ; preds = %1091
  br label %1094

1094:                                             ; preds = %1093
  store i8 0, ptr %93, align 1, !tbaa !9
  br label %1041, !llvm.loop !130

1095:                                             ; preds = %1091, %1044
  call void @llvm.lifetime.end.p0(i64 1, ptr %93) #7
  %1096 = load i32, ptr %9, align 4
  switch i32 %1096, label %1188 [
    i32 178, label %1097
  ]

1097:                                             ; preds = %1095
  br label %1186

1098:                                             ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %100) #7
  store i8 1, ptr %100, align 1, !tbaa !9
  br label %1099

1099:                                             ; preds = %1116, %1098
  %1100 = load i8, ptr %100, align 1, !tbaa !9, !range !11, !noundef !12
  %1101 = trunc i8 %1100 to i1
  br i1 %1101, label %1103, label %1102

1102:                                             ; preds = %1099
  store i32 186, ptr %9, align 4
  br label %1117

1103:                                             ; preds = %1099
  call void @llvm.lifetime.start.p0(i64 8, ptr %101) #7
  %1104 = load ptr, ptr %10, align 8, !tbaa !5
  %1105 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %1104)
  store ptr %1105, ptr %101, align 8, !tbaa !5
  br label %1106

1106:                                             ; preds = %1112, %1103
  %1107 = load ptr, ptr %101, align 8, !tbaa !5
  %1108 = load i8, ptr %100, align 1, !tbaa !9, !range !11, !noundef !12
  %1109 = trunc i8 %1108 to i1
  br i1 %1109, label %1111, label %1110

1110:                                             ; preds = %1106
  store i32 189, ptr %9, align 4
  br label %1113

1111:                                             ; preds = %1106
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1113

1112:                                             ; No predecessors!
  store i8 0, ptr %100, align 1, !tbaa !9
  br label %1106, !llvm.loop !131

1113:                                             ; preds = %1111, %1110
  call void @llvm.lifetime.end.p0(i64 8, ptr %101) #7
  %1114 = load i32, ptr %9, align 4
  switch i32 %1114, label %1117 [
    i32 189, label %1115
  ]

1115:                                             ; preds = %1113
  br label %1116

1116:                                             ; preds = %1115
  store i8 0, ptr %100, align 1, !tbaa !9
  br label %1099, !llvm.loop !132

1117:                                             ; preds = %1113, %1102
  call void @llvm.lifetime.end.p0(i64 1, ptr %100) #7
  %1118 = load i32, ptr %9, align 4
  switch i32 %1118, label %1188 [
    i32 186, label %1119
  ]

1119:                                             ; preds = %1117
  br label %1186

1120:                                             ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %102) #7
  store i8 1, ptr %102, align 1, !tbaa !9
  br label %1121

1121:                                             ; preds = %1138, %1120
  %1122 = load i8, ptr %102, align 1, !tbaa !9, !range !11, !noundef !12
  %1123 = trunc i8 %1122 to i1
  br i1 %1123, label %1125, label %1124

1124:                                             ; preds = %1121
  store i32 192, ptr %9, align 4
  br label %1139

1125:                                             ; preds = %1121
  call void @llvm.lifetime.start.p0(i64 8, ptr %103) #7
  %1126 = load ptr, ptr %10, align 8, !tbaa !5
  %1127 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %1126)
  store ptr %1127, ptr %103, align 8, !tbaa !5
  br label %1128

1128:                                             ; preds = %1134, %1125
  %1129 = load ptr, ptr %103, align 8, !tbaa !5
  %1130 = load i8, ptr %102, align 1, !tbaa !9, !range !11, !noundef !12
  %1131 = trunc i8 %1130 to i1
  br i1 %1131, label %1133, label %1132

1132:                                             ; preds = %1128
  store i32 195, ptr %9, align 4
  br label %1135

1133:                                             ; preds = %1128
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1135

1134:                                             ; No predecessors!
  store i8 0, ptr %102, align 1, !tbaa !9
  br label %1128, !llvm.loop !133

1135:                                             ; preds = %1133, %1132
  call void @llvm.lifetime.end.p0(i64 8, ptr %103) #7
  %1136 = load i32, ptr %9, align 4
  switch i32 %1136, label %1139 [
    i32 195, label %1137
  ]

1137:                                             ; preds = %1135
  br label %1138

1138:                                             ; preds = %1137
  store i8 0, ptr %102, align 1, !tbaa !9
  br label %1121, !llvm.loop !134

1139:                                             ; preds = %1135, %1124
  call void @llvm.lifetime.end.p0(i64 1, ptr %102) #7
  %1140 = load i32, ptr %9, align 4
  switch i32 %1140, label %1188 [
    i32 192, label %1141
  ]

1141:                                             ; preds = %1139
  br label %1186

1142:                                             ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #7
  store i8 1, ptr %104, align 1, !tbaa !9
  br label %1143

1143:                                             ; preds = %1160, %1142
  %1144 = load i8, ptr %104, align 1, !tbaa !9, !range !11, !noundef !12
  %1145 = trunc i8 %1144 to i1
  br i1 %1145, label %1147, label %1146

1146:                                             ; preds = %1143
  store i32 198, ptr %9, align 4
  br label %1161

1147:                                             ; preds = %1143
  call void @llvm.lifetime.start.p0(i64 8, ptr %105) #7
  %1148 = load ptr, ptr %10, align 8, !tbaa !5
  %1149 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1148)
  store ptr %1149, ptr %105, align 8, !tbaa !5
  br label %1150

1150:                                             ; preds = %1156, %1147
  %1151 = load ptr, ptr %105, align 8, !tbaa !5
  %1152 = load i8, ptr %104, align 1, !tbaa !9, !range !11, !noundef !12
  %1153 = trunc i8 %1152 to i1
  br i1 %1153, label %1155, label %1154

1154:                                             ; preds = %1150
  store i32 201, ptr %9, align 4
  br label %1157

1155:                                             ; preds = %1150
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1157

1156:                                             ; No predecessors!
  store i8 0, ptr %104, align 1, !tbaa !9
  br label %1150, !llvm.loop !135

1157:                                             ; preds = %1155, %1154
  call void @llvm.lifetime.end.p0(i64 8, ptr %105) #7
  %1158 = load i32, ptr %9, align 4
  switch i32 %1158, label %1161 [
    i32 201, label %1159
  ]

1159:                                             ; preds = %1157
  br label %1160

1160:                                             ; preds = %1159
  store i8 0, ptr %104, align 1, !tbaa !9
  br label %1143, !llvm.loop !136

1161:                                             ; preds = %1157, %1146
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #7
  %1162 = load i32, ptr %9, align 4
  switch i32 %1162, label %1188 [
    i32 198, label %1163
  ]

1163:                                             ; preds = %1161
  br label %1186

1164:                                             ; preds = %120
  call void @llvm.lifetime.start.p0(i64 1, ptr %106) #7
  store i8 1, ptr %106, align 1, !tbaa !9
  br label %1165

1165:                                             ; preds = %1182, %1164
  %1166 = load i8, ptr %106, align 1, !tbaa !9, !range !11, !noundef !12
  %1167 = trunc i8 %1166 to i1
  br i1 %1167, label %1169, label %1168

1168:                                             ; preds = %1165
  store i32 204, ptr %9, align 4
  br label %1183

1169:                                             ; preds = %1165
  call void @llvm.lifetime.start.p0(i64 8, ptr %107) #7
  %1170 = load ptr, ptr %10, align 8, !tbaa !5
  %1171 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %1170)
  store ptr %1171, ptr %107, align 8, !tbaa !5
  br label %1172

1172:                                             ; preds = %1178, %1169
  %1173 = load ptr, ptr %107, align 8, !tbaa !5
  %1174 = load i8, ptr %106, align 1, !tbaa !9, !range !11, !noundef !12
  %1175 = trunc i8 %1174 to i1
  br i1 %1175, label %1177, label %1176

1176:                                             ; preds = %1172
  store i32 207, ptr %9, align 4
  br label %1179

1177:                                             ; preds = %1172
  store i32 2, ptr %4, align 4
  store i32 1, ptr %9, align 4
  br label %1179

1178:                                             ; No predecessors!
  store i8 0, ptr %106, align 1, !tbaa !9
  br label %1172, !llvm.loop !137

1179:                                             ; preds = %1177, %1176
  call void @llvm.lifetime.end.p0(i64 8, ptr %107) #7
  %1180 = load i32, ptr %9, align 4
  switch i32 %1180, label %1183 [
    i32 207, label %1181
  ]

1181:                                             ; preds = %1179
  br label %1182

1182:                                             ; preds = %1181
  store i8 0, ptr %106, align 1, !tbaa !9
  br label %1165, !llvm.loop !138

1183:                                             ; preds = %1179, %1168
  call void @llvm.lifetime.end.p0(i64 1, ptr %106) #7
  %1184 = load i32, ptr %9, align 4
  switch i32 %1184, label %1188 [
    i32 204, label %1185
  ]

1185:                                             ; preds = %1183
  br label %1186

1186:                                             ; preds = %1185, %1163, %1141, %1119, %1097, %1039, %965, %912, %886, %860, %838, %816, %794, %189, %167, %145, %120
  br label %1187

1187:                                             ; preds = %1186
  store i8 0, ptr %8, align 1, !tbaa !9
  br label %116, !llvm.loop !139

1188:                                             ; preds = %1183, %1161, %1139, %1117, %1095, %1037, %963, %910, %884, %858, %836, %814, %792, %187, %165, %143, %119
  call void @llvm.lifetime.end.p0(i64 8, ptr %10) #7
  %1189 = load i32, ptr %9, align 4
  switch i32 %1189, label %1192 [
    i32 5, label %1190
  ]

1190:                                             ; preds = %1188
  br label %1191

1191:                                             ; preds = %1190
  store i8 0, ptr %8, align 1, !tbaa !9
  br label %109, !llvm.loop !140

1192:                                             ; preds = %1188, %112
  call void @llvm.lifetime.end.p0(i64 1, ptr %8) #7
  %1193 = load i32, ptr %9, align 4
  switch i32 %1193, label %1202 [
    i32 2, label %1194
    i32 1, label %1195
  ]

1194:                                             ; preds = %1192
  store i32 1, ptr %4, align 4
  br label %1195

1195:                                             ; preds = %1194, %1192
  %1196 = load i32, ptr %4, align 4
  ret i32 %1196

1197:                                             ; preds = %787
  %1198 = load ptr, ptr %21, align 8
  %1199 = load i32, ptr %22, align 4
  %1200 = insertvalue { ptr, i32 } poison, ptr %1198, 0
  %1201 = insertvalue { ptr, i32 } %1200, i32 %1199, 1
  resume { ptr, i32 } %1201

1202:                                             ; preds = %1192
  unreachable
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) #4 align 2

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

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

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !10, i64 0}
!10 = !{!"bool", !7, i64 0}
!11 = !{i8 0, i8 2}
!12 = !{}
!13 = distinct !{!13, !14}
!14 = !{!"llvm.loop.mustprogress"}
!15 = distinct !{!15, !14}
!16 = distinct !{!16, !14}
!17 = distinct !{!17, !14}
!18 = distinct !{!18, !14}
!19 = distinct !{!19, !14}
!20 = !{!21, !6, i64 0}
!21 = !{!"_ZTSZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEE3$_0", !6, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!22 = distinct !{!22, !14}
!23 = distinct !{!23, !14}
!24 = distinct !{!24, !14}
!25 = distinct !{!25, !14}
!26 = distinct !{!26, !14}
!27 = distinct !{!27, !14}
!28 = !{!29, !6, i64 0}
!29 = !{!"_ZTS18TraitResolveCommon", !6, i64 0, !6, i64 8, !6, i64 16, !30, i64 24, !39, i64 72, !45, i64 104, !45, i64 112, !45, i64 120, !45, i64 128, !45, i64 136, !45, i64 144, !45, i64 152, !45, i64 160, !45, i64 168, !45, i64 176, !45, i64 184, !45, i64 192, !45, i64 200, !45, i64 208}
!30 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !31, i64 0}
!31 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !32, i64 0}
!32 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !33, i64 0, !35, i64 8}
!33 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !34, i64 0}
!34 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!35 = !{!"_ZTSSt15_Rb_tree_header", !36, i64 0, !38, i64 32}
!36 = !{!"_ZTSSt18_Rb_tree_node_base", !37, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!37 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!38 = !{!"long", !7, i64 0}
!39 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !40, i64 0, !44, i64 24}
!40 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !41, i64 0}
!41 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !42, i64 0}
!42 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!44 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!45 = !{!"_ZTSN3HIR10SimplePathE", !46, i64 0}
!46 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!47 = distinct !{!47, !14}
!48 = distinct !{!48, !14}
!49 = distinct !{!49, !14}
!50 = distinct !{!50, !14}
!51 = distinct !{!51, !14}
!52 = distinct !{!52, !14}
!53 = distinct !{!53, !14}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = distinct !{!56, !14}
!57 = distinct !{!57, !14}
!58 = distinct !{!58, !14}
!59 = distinct !{!59, !14}
!60 = distinct !{!60, !14}
!61 = distinct !{!61, !14}
!62 = distinct !{!62, !14}
!63 = distinct !{!63, !14}
!64 = distinct !{!64, !14}
!65 = distinct !{!65, !14}
!66 = distinct !{!66, !14}
!67 = distinct !{!67, !14}
!68 = distinct !{!68, !14}
!69 = distinct !{!69, !14}
!70 = distinct !{!70, !14}
!71 = distinct !{!71, !14}
!72 = distinct !{!72, !14}
!73 = distinct !{!73, !14}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = distinct !{!76, !14}
!77 = distinct !{!77, !14}
!78 = distinct !{!78, !14}
!79 = distinct !{!79, !14}
!80 = distinct !{!80, !14}
!81 = !{!82, !82, i64 0}
!82 = !{!"_ZTSN3HIR7CompareE", !7, i64 0}
!83 = distinct !{!83, !14}
!84 = distinct !{!84, !14}
!85 = !{!86, !6, i64 0}
!86 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !6, i64 0}
!87 = !{!88, !103, i64 76}
!88 = !{!"_ZTSN3HIR16ExprNode_ClosureE", !89, i64 0, !93, i64 32, !91, i64 56, !97, i64 64, !10, i64 72, !103, i64 76, !10, i64 80, !104, i64 88, !113, i64 136, !6, i64 144, !115, i64 152, !115, i64 184, !120, i64 216}
!89 = !{!"_ZTSN3HIR8ExprNodeE", !90, i64 8, !91, i64 16, !92, i64 24}
!90 = !{!"_ZTS4Span", !6, i64 0}
!91 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!92 = !{!"_ZTSN3HIR10ValueUsageE", !7, i64 0}
!93 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !94, i64 0}
!94 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !95, i64 0}
!95 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !96, i64 0}
!96 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!97 = !{!"_ZTSSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EE", !98, i64 0}
!98 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR8ExprNodeESt14default_deleteIS1_ELb1ELb1EE", !99, i64 0}
!99 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR8ExprNodeESt14default_deleteIS1_EE", !100, i64 0}
!100 = !{!"_ZTSSt5tupleIJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !101, i64 0}
!101 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !102, i64 0}
!102 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR8ExprNodeELb0EE", !6, i64 0}
!103 = !{!"_ZTSN3HIR16ExprNode_Closure5ClassE", !7, i64 0}
!104 = !{!"_ZTSN3HIR16ExprNode_Closure8AvuCacheE", !105, i64 0, !109, i64 24}
!105 = !{!"_ZTSSt6vectorIjSaIjEE", !106, i64 0}
!106 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !107, i64 0}
!107 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !108, i64 0}
!108 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!109 = !{!"_ZTSSt6vectorIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !110, i64 0}
!110 = !{!"_ZTSSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !111, i64 0}
!111 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE12_Vector_implE", !112, i64 0}
!112 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!113 = !{!"_ZTSN3HIR11LifetimeRefE", !114, i64 0}
!114 = !{!"int", !7, i64 0}
!115 = !{!"_ZTSN3HIR11GenericPathE", !45, i64 0, !116, i64 8}
!116 = !{!"_ZTSN3HIR10PathParamsE", !117, i64 0, !118, i64 8, !119, i64 16}
!117 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!118 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!119 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!120 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !121, i64 0}
!121 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !122, i64 0}
!122 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !123, i64 0}
!123 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!124 = !{!88, !10, i64 80}
!125 = distinct !{!125, !14}
!126 = distinct !{!126, !14}
!127 = !{!128, !6, i64 0}
!128 = !{!"_ZTSN3HIR8TypeData14Data_GeneratorE", !6, i64 0}
!129 = distinct !{!129, !14}
!130 = distinct !{!130, !14}
!131 = distinct !{!131, !14}
!132 = distinct !{!132, !14}
!133 = distinct !{!133, !14}
!134 = distinct !{!134, !14}
!135 = distinct !{!135, !14}
!136 = distinct !{!136, !14}
!137 = distinct !{!137, !14}
!138 = distinct !{!138, !14}
!139 = distinct !{!139, !14}
!140 = distinct !{!140, !14}


; 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.MonomorphStatePtr = type { %class.MonomorphiserPP, ptr, ptr, ptr, ptr }
%class.MonomorphiserPP = type { %class.Monomorphiser }
%class.Monomorphiser = type { ptr, ptr, %"class.HIR::ItemPath", %"class.std::vector.401" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.401" = type { %"struct.std::_Vector_base.402" }
%"struct.std::_Vector_base.402" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::TypeRef" = type { ptr }
%class.anon.613 = type { ptr, ptr, ptr, ptr }
%"class.__gnu_cxx::__normal_iterator.507" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.511" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.514" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.518" = type { ptr }
%"class.__gnu_cxx::__normal_iterator.614" = type { ptr }

@.str.4 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.5 = external hidden unnamed_addr constant [80 x i8], align 1
@__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE = external hidden unnamed_addr constant [102 x i8], align 1
@.str.86 = external hidden unnamed_addr constant [12 x i8], align 1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16)) local_unnamed_addr #3 align 2

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40)) local_unnamed_addr #3 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %2) local_unnamed_addr #1 align 2 personality ptr @__gxx_personality_v0 {
.lr.ph:
  %3 = alloca %struct.MonomorphStatePtr, align 8
  %4 = alloca %"class.HIR::TypeRef", align 8
  %5 = alloca %class.anon.613, align 8
  %6 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %7 = alloca %"class.__gnu_cxx::__normal_iterator.507", align 8
  %8 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %9 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %10 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %11 = alloca %"class.__gnu_cxx::__normal_iterator.514", align 8
  %12 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %13 = alloca %"class.__gnu_cxx::__normal_iterator.511", align 8
  %14 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %15 = alloca %"class.__gnu_cxx::__normal_iterator.518", align 8
  %16 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %17 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %18 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  %19 = alloca %"class.__gnu_cxx::__normal_iterator.614", align 8
  br label %tailrecurse

tailrecurse:                                      ; preds = %139, %137, %.lr.ph
  %.tr1393 = phi ptr [ %2, %.lr.ph ], [ %138, %137 ], [ %140, %139 ]
  %20 = getelementptr inbounds i8, ptr %5, i64 8
  %21 = getelementptr inbounds i8, ptr %5, i64 16
  %22 = getelementptr inbounds i8, ptr %5, i64 24
  %23 = getelementptr inbounds i8, ptr %0, i64 8
  %24 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %.tr1393)
  %25 = tail call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  switch i32 %25, label %.thread578 [
    i32 0, label %26
    i32 1, label %27
    i32 2, label %29
    i32 3, label %31
    i32 4, label %.preheader632
    i32 5, label %131
    i32 6, label %133
    i32 7, label %135
    i32 8, label %137
    i32 9, label %139
    i32 10, label %141
    i32 15, label %151
    i32 16, label %173
    i32 11, label %187
    i32 12, label %189
    i32 13, label %191
    i32 14, label %193
  ]

26:                                               ; preds = %tailrecurse
  tail call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2610, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #7
  unreachable

27:                                               ; preds = %tailrecurse
  %28 = tail call noundef nonnull align 4 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_InferEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

29:                                               ; preds = %tailrecurse
  %30 = tail call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR8TypeData10as_DivergeEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

31:                                               ; preds = %tailrecurse
  %32 = tail call noundef nonnull align 4 dereferenceable(4) ptr @_ZNK3HIR8TypeData12as_PrimitiveEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

.preheader632:                                    ; preds = %tailrecurse
  %33 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  %34 = getelementptr inbounds i8, ptr %33, i64 88
  br label %35

35:                                               ; preds = %.thread522, %.preheader632
  %.1431 = phi i1 [ true, %.preheader632 ], [ false, %.thread522 ]
  %.12 = phi i32 [ undef, %.preheader632 ], [ %.75564, %.thread522 ]
  br i1 %.1431, label %36, label %.thread578

36:                                               ; preds = %35
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %3) #8
  %37 = call noundef zeroext i1 @_ZNK3HIR4Path4Data10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %33)
  br i1 %37, label %38, label %41

38:                                               ; preds = %36
  %39 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %33)
  %40 = getelementptr inbounds i8, ptr %39, i64 8
  br label %41

41:                                               ; preds = %36, %38
  %42 = phi ptr [ %40, %38 ], [ null, %36 ]
  call void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %3, ptr noundef null, ptr noundef %42, ptr noundef null, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4)
          to label %.split1190 unwind label %44

.split1190:                                       ; preds = %41
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %5) #8
  store ptr %0, ptr %5, align 8, !tbaa !5
  store ptr %1, ptr %20, align 8, !tbaa !10
  store ptr %4, ptr %21, align 8, !tbaa !10
  store ptr %3, ptr %22, align 8, !tbaa !10
  %43 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  switch i32 %43, label %.thread522 [
    i32 0, label %.split1062
    i32 1, label %.split1064.split
    i32 2, label %.split1068.split
    i32 3, label %.split1072.split
    i32 4, label %.preheader626
    i32 6, label %.preheader627
    i32 5, label %.split1076.split
  ]

44:                                               ; preds = %41
  %45 = landingpad { ptr, i32 }
          cleanup
  br label %130

.preheader627:                                    ; preds = %.split1190
  %46 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding7as_EnumEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  %47 = load ptr, ptr %46, align 8, !tbaa !10
  %48 = getelementptr inbounds i8, ptr %47, i64 104
  %49 = call noundef i32 @_ZNK3HIR4Enum5Class3tagEv(ptr noundef nonnull align 8 dereferenceable(40) %48)
  switch i32 %49, label %.thread522 [
    i32 0, label %.split
    i32 2, label %.split751.split.split.split.split
    i32 1, label %.split754.split.split.split.split
  ], !llvm.loop !11

.preheader626:                                    ; preds = %.split1190
  %50 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  %51 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %33)
  %52 = load ptr, ptr %23, align 8, !tbaa !13
  %53 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR5Crate18get_lang_item_pathERK4SpanPKc(ptr noundef nonnull align 8 dereferenceable(944) %52, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull @.str.86)
          to label %57 unwind label %.split912.split.split.split

.split1062:                                       ; preds = %.split1190
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2627, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #7
  unreachable

.split1064.split:                                 ; preds = %.split1190
  %54 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding10as_UnboundEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  br label %.thread522

.split1068.split:                                 ; preds = %.split1190
  %55 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR15TypePathBinding9as_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  br label %.thread522

.split1072.split:                                 ; preds = %.split1190
  %56 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding13as_ExternTypeEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  br label %.thread522

57:                                               ; preds = %.preheader626
  %58 = invoke noundef zeroext i1 @_ZNK3HIR10SimplePatheqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %53)
          to label %59 unwind label %.split912.split.split.split

59:                                               ; preds = %57
  br i1 %58, label %.thread522, label %.preheader

.preheader:                                       ; preds = %59
  %60 = load ptr, ptr %50, align 8, !tbaa !10
  %61 = getelementptr inbounds i8, ptr %60, i64 104
  %62 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %61)
  switch i32 %62, label %.thread522 [
    i32 0, label %.split868
    i32 1, label %.split870.split.split.split.split
    i32 2, label %.split874.split.split.split.split
    i32 3, label %.split878.split.split.split.split
  ], !llvm.loop !32

.split912.split.split.split:                      ; preds = %57, %.preheader626
  %63 = landingpad { ptr, i32 }
          cleanup
  br label %128

.split868:                                        ; preds = %.preheader
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2641, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #7
  unreachable

.split870.split.split.split.split:                ; preds = %.preheader
  %64 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %61)
  br label %.thread522

.split874.split.split.split.split:                ; preds = %.preheader
  %65 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %61)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %6) #8
  %66 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #8
  store ptr %66, ptr %6, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %7) #8
  %67 = call ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %65) #8
  store ptr %67, ptr %7, align 8
  %68 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %68, label %.lr.ph1283, label %select.unfold501

.lr.ph1283:                                       ; preds = %.split874.split.split.split.split, %77
  %69 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %70 = getelementptr inbounds i8, ptr %69, i64 16
  %71 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %70)
          to label %72 unwind label %75

72:                                               ; preds = %.lr.ph1283
  %73 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %71)
          to label %74 unwind label %75

74:                                               ; preds = %72
  %switch = icmp ult i32 %73, 2
  br i1 %switch, label %.thread.thread, label %77

75:                                               ; preds = %72, %.lr.ph1283
  %76 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %128

77:                                               ; preds = %74
  %78 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %6) #8
  %79 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR6VisEntINS1_7TypeRefEEESt6vectorIS4_SaIS4_EEEEbRKNS_17__normal_iteratorIT_T0_EESF_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %7) #8
  br i1 %79, label %.lr.ph1283, label %select.unfold501

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

.split878.split.split.split.split:                ; preds = %.preheader
  %80 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %61)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %8) #8
  %81 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #8
  store ptr %81, ptr %8, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %9) #8
  %82 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %80) #8
  store ptr %82, ptr %9, align 8
  %83 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br i1 %83, label %.lr.ph1282, label %select.unfold

.lr.ph1282:                                       ; preds = %.split878.split.split.split.split, %92
  %84 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %85 = getelementptr inbounds i8, ptr %84, i64 24
  %86 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %85)
          to label %87 unwind label %90

87:                                               ; preds = %.lr.ph1282
  %88 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %86)
          to label %89 unwind label %90

89:                                               ; preds = %87
  %switch616 = icmp ult i32 %88, 2
  br i1 %switch616, label %.thread497.thread, label %92

90:                                               ; preds = %87, %.lr.ph1282
  %91 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %128

92:                                               ; preds = %89
  %93 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %8) #8
  %94 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %8, ptr noundef nonnull align 8 dereferenceable(8) %9) #8
  br i1 %94, label %.lr.ph1282, label %select.unfold

.thread497.thread:                                ; preds = %89
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %.thread522

select.unfold:                                    ; preds = %92, %.split878.split.split.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %8) #8
  br label %.thread522

select.unfold501:                                 ; preds = %77, %.split874.split.split.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %7) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %6) #8
  br label %.thread522

.split:                                           ; preds = %.preheader627
  call void @__assert_fail(ptr noundef nonnull @.str.4, ptr noundef nonnull @.str.5, i32 noundef 2674, ptr noundef nonnull @__PRETTY_FUNCTION__._ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE) #7
  unreachable

.split751.split.split.split.split:                ; preds = %.preheader627
  %95 = call noundef nonnull align 8 dereferenceable(25) ptr @_ZNK3HIR4Enum5Class8as_ValueEv(ptr noundef nonnull align 8 dereferenceable(40) %48)
  br label %.thread522

.split754.split.split.split.split:                ; preds = %.preheader627
  %96 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR4Enum5Class7as_DataEv(ptr noundef nonnull align 8 dereferenceable(40) %48)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  %97 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #8
  store ptr %97, ptr %10, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %11) #8
  %98 = call ptr @_ZNKSt6vectorIN3HIR4Enum11DataVariantESaIS2_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %96) #8
  store ptr %98, ptr %11, align 8
  %99 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %99, label %.lr.ph1281, label %select.unfold531

.lr.ph1281:                                       ; preds = %.split754.split.split.split.split, %108
  %100 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %101 = getelementptr inbounds i8, ptr %100, i64 16
  %102 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %101)
          to label %103 unwind label %106

103:                                              ; preds = %.lr.ph1281
  %104 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %102)
          to label %105 unwind label %106

105:                                              ; preds = %103
  %switch617 = icmp ult i32 %104, 2
  br i1 %switch617, label %.thread527.thread, label %108

106:                                              ; preds = %103, %.lr.ph1281
  %107 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %128

108:                                              ; preds = %105
  %109 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  %110 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR4Enum11DataVariantESt6vectorIS3_SaIS3_EEEEbRKNS_17__normal_iteratorIT_T0_EESE_(ptr noundef nonnull align 8 dereferenceable(8) %10, ptr noundef nonnull align 8 dereferenceable(8) %11) #8
  br i1 %110, label %.lr.ph1281, label %select.unfold531

.thread527.thread:                                ; preds = %105
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %.thread522

select.unfold531:                                 ; preds = %108, %.split754.split.split.split.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %.thread522

.split1076.split:                                 ; preds = %.split1190
  %111 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding8as_UnionEv(ptr noundef nonnull align 8 dereferenceable(16) %34)
  %112 = load ptr, ptr %111, align 8, !tbaa !10
  %113 = getelementptr inbounds i8, ptr %112, i64 104
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  %114 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  store ptr %114, ptr %12, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  %115 = call ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %113) #8
  store ptr %115, ptr %13, align 8
  %116 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %116, label %.lr.ph1280, label %select.unfold554

.lr.ph1280:                                       ; preds = %.split1076.split, %125
  %117 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %118 = getelementptr inbounds i8, ptr %117, i64 24
  %119 = invoke noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32) %5, ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %120 unwind label %123

120:                                              ; preds = %.lr.ph1280
  %121 = invoke noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %119)
          to label %122 unwind label %123

122:                                              ; preds = %120
  %switch618 = icmp ult i32 %121, 2
  br i1 %switch618, label %.thread550.thread, label %125

123:                                              ; preds = %120, %.lr.ph1280
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %128

125:                                              ; preds = %122
  %126 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  %127 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt4pairI8RcStringN3HIR6VisEntINS3_7TypeRefEEEESt6vectorIS7_SaIS7_EEEEbRKNS_17__normal_iteratorIT_T0_EESI_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  br i1 %127, label %.lr.ph1280, label %select.unfold554

.thread550.thread:                                ; preds = %122
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %.thread522

select.unfold554:                                 ; preds = %125, %.split1076.split
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %.thread522

128:                                              ; preds = %.split912.split.split.split, %90, %75, %123, %106
  %.pn474 = phi { ptr, i32 } [ %124, %123 ], [ %107, %106 ], [ %63, %.split912.split.split.split ], [ %91, %90 ], [ %76, %75 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  br label %130

.thread522:                                       ; preds = %.preheader627, %.preheader, %59, %.split1190, %.thread550.thread, %.thread527.thread, %.thread497.thread, %.thread.thread, %select.unfold554, %.split751.split.split.split.split, %select.unfold531, %select.unfold501, %select.unfold, %.split870.split.split.split.split, %.split1064.split, %.split1068.split, %.split1072.split
  %129 = phi i1 [ true, %select.unfold554 ], [ true, %.split751.split.split.split.split ], [ true, %select.unfold531 ], [ true, %select.unfold501 ], [ true, %select.unfold ], [ true, %.split870.split.split.split.split ], [ true, %.split1064.split ], [ true, %.split1068.split ], [ true, %.split1072.split ], [ true, %.thread.thread ], [ true, %.thread497.thread ], [ true, %.thread527.thread ], [ true, %.thread550.thread ], [ false, %.split1190 ], [ true, %59 ], [ false, %.preheader ], [ false, %.preheader627 ]
  %.75564 = phi i32 [ 2, %select.unfold554 ], [ 2, %.split751.split.split.split.split ], [ 2, %select.unfold531 ], [ 2, %select.unfold501 ], [ 2, %select.unfold ], [ 2, %.split870.split.split.split.split ], [ 1, %.split1064.split ], [ 1, %.split1068.split ], [ 2, %.split1072.split ], [ %73, %.thread.thread ], [ %88, %.thread497.thread ], [ %104, %.thread527.thread ], [ %121, %.thread550.thread ], [ %.12, %.split1190 ], [ 0, %59 ], [ %.12, %.preheader ], [ %.12, %.preheader627 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %5) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %4) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8
  br i1 %129, label %.thread578, label %35

130:                                              ; preds = %128, %44
  %.pn474.pn = phi { ptr, i32 } [ %.pn474, %128 ], [ %45, %44 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %3) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %3) #8
  resume { ptr, i32 } %.pn474.pn

131:                                              ; preds = %tailrecurse
  %132 = tail call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

133:                                              ; preds = %tailrecurse
  %134 = tail call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

135:                                              ; preds = %tailrecurse
  %136 = tail call noundef nonnull align 8 dereferenceable(160) ptr @_ZNK3HIR8TypeData13as_ErasedTypeEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

137:                                              ; preds = %tailrecurse
  %138 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %tailrecurse

139:                                              ; preds = %tailrecurse
  %140 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %tailrecurse

141:                                              ; preds = %tailrecurse
  %142 = tail call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR8TypeData8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %14) #8
  %143 = tail call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %142) #8
  store ptr %143, ptr %14, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %15) #8
  %144 = tail call ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %142) #8
  store ptr %144, ptr %15, align 8
  %145 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %145, label %.lr.ph1295, label %._crit_edge1296

.lr.ph1295:                                       ; preds = %141, %148
  %146 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %147 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %146)
  %.not471 = icmp eq i32 %147, 2
  br i1 %.not471, label %148, label %select.unfold575

148:                                              ; preds = %.lr.ph1295
  %149 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %14) #8
  %150 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKN3HIR7TypeRefESt6vectorIS2_SaIS2_EEEEbRKNS_17__normal_iteratorIT_T0_EESD_(ptr noundef nonnull align 8 dereferenceable(8) %14, ptr noundef nonnull align 8 dereferenceable(8) %15) #8
  br i1 %150, label %.lr.ph1295, label %._crit_edge1296

._crit_edge1296:                                  ; preds = %148, %141
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.thread578

151:                                              ; preds = %tailrecurse
  %152 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData10as_ClosureEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  %153 = load ptr, ptr %152, align 8, !tbaa !33
  %154 = getelementptr inbounds i8, ptr %153, i64 76
  %155 = load i32, ptr %154, align 4, !tbaa !35
  %156 = icmp eq i32 %155, 0
  br i1 %156, label %.thread578, label %157

157:                                              ; preds = %151
  %158 = getelementptr inbounds i8, ptr %153, i64 80
  %159 = load i8, ptr %158, align 8, !tbaa !73, !range !74, !noundef !75
  %160 = trunc nuw i8 %159 to i1
  br i1 %160, label %.thread578, label %161

161:                                              ; preds = %157
  %162 = getelementptr inbounds i8, ptr %153, i64 216
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %163 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #8
  store ptr %163, ptr %16, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %17) #8
  %164 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %162) #8
  store ptr %164, ptr %17, align 8
  %165 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %165, label %.lr.ph1292, label %._crit_edge1293

.lr.ph1292:                                       ; preds = %161, %170
  %166 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %167 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %166) #8
  %168 = getelementptr inbounds i8, ptr %167, i64 16
  %169 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %168)
  %.not470 = icmp eq i32 %169, 2
  br i1 %.not470, label %170, label %select.unfold576

170:                                              ; preds = %.lr.ph1292
  %171 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  %172 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br i1 %172, label %.lr.ph1292, label %._crit_edge1293

._crit_edge1293:                                  ; preds = %170, %161
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %.thread578

173:                                              ; preds = %tailrecurse
  %174 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData12as_GeneratorEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  %175 = load ptr, ptr %174, align 8, !tbaa !76
  %176 = getelementptr inbounds i8, ptr %175, i64 160
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %18) #8
  %177 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE5beginEv(ptr noundef nonnull align 8 dereferenceable(24) %176) #8
  store ptr %177, ptr %18, align 8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #8
  %178 = tail call ptr @_ZNKSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE3endEv(ptr noundef nonnull align 8 dereferenceable(24) %176) #8
  store ptr %178, ptr %19, align 8
  %179 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %179, label %.lr.ph1290, label %._crit_edge

.lr.ph1290:                                       ; preds = %173, %184
  %180 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEdeEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %181 = call noundef ptr @_ZNKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EEptEv(ptr noundef nonnull align 8 dereferenceable(8) %180) #8
  %182 = getelementptr inbounds i8, ptr %181, i64 16
  %183 = call noundef i32 @_ZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %182)
  %.not = icmp eq i32 %183, 2
  br i1 %.not, label %184, label %select.unfold574

184:                                              ; preds = %.lr.ph1290
  %185 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN9__gnu_cxx17__normal_iteratorIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEppEv(ptr noundef nonnull align 8 dereferenceable(8) %18) #8
  %186 = call noundef zeroext i1 @_ZN9__gnu_cxxneIPKSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS3_EESt6vectorIS6_SaIS6_EEEEbRKNS_17__normal_iteratorIT_T0_EESH_(ptr noundef nonnull align 8 dereferenceable(8) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br i1 %186, label %.lr.ph1290, label %._crit_edge

._crit_edge:                                      ; preds = %184, %173
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %.thread578

187:                                              ; preds = %tailrecurse
  %188 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

189:                                              ; preds = %tailrecurse
  %190 = tail call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

191:                                              ; preds = %tailrecurse
  %192 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData16as_NamedFunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

193:                                              ; preds = %tailrecurse
  %194 = tail call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %24)
  br label %.thread578

select.unfold574:                                 ; preds = %.lr.ph1290
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %18) #8
  br label %.thread578

select.unfold575:                                 ; preds = %.lr.ph1295
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %14) #8
  br label %.thread578

select.unfold576:                                 ; preds = %.lr.ph1292
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %17) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %.thread578

.thread578:                                       ; preds = %.thread522, %35, %tailrecurse, %._crit_edge, %._crit_edge1293, %._crit_edge1296, %select.unfold576, %select.unfold575, %select.unfold574, %157, %151, %27, %29, %31, %131, %133, %135, %187, %189, %191, %193
  %spec.select492 = phi i32 [ %169, %select.unfold576 ], [ %147, %select.unfold575 ], [ %183, %select.unfold574 ], [ 2, %._crit_edge1293 ], [ 2, %157 ], [ 1, %151 ], [ 1, %27 ], [ 2, %29 ], [ 2, %31 ], [ 1, %131 ], [ 1, %133 ], [ 1, %135 ], [ 2, %._crit_edge1296 ], [ 2, %._crit_edge ], [ 2, %187 ], [ 2, %189 ], [ 2, %191 ], [ 2, %193 ], [ 1, %tailrecurse ], [ %.75564, %.thread522 ], [ 1, %35 ]
  ret i32 %spec.select492
}

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

; Function Attrs: inlinehint mustprogress uwtable
declare hidden noundef nonnull align 8 dereferenceable(8) ptr @"_ZZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEENK3$_0clIS4_EES6_RKT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #4 align 2

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { 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 #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { 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 #5 = { 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 #6 = { "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 }
attributes #8 = { 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, !7, i64 0}
!6 = !{!"_ZTSZNK18StaticTraitResolve24type_is_interior_mutableERK4SpanRKN3HIR7TypeRefEE3$_0", !7, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!7 = !{!"any pointer", !8, i64 0}
!8 = !{!"omnipotent char", !9, i64 0}
!9 = !{!"Simple C++ TBAA"}
!10 = !{!7, !7, i64 0}
!11 = distinct !{!11, !12}
!12 = !{!"llvm.loop.mustprogress"}
!13 = !{!14, !7, i64 0}
!14 = !{!"_ZTS18TraitResolveCommon", !7, i64 0, !7, i64 8, !7, i64 16, !15, i64 24, !24, i64 72, !30, i64 104, !30, i64 112, !30, i64 120, !30, i64 128, !30, i64 136, !30, i64 144, !30, i64 152, !30, i64 160, !30, i64 168, !30, i64 176, !30, i64 184, !30, i64 192, !30, i64 200, !30, i64 208}
!15 = !{!"_ZTSSt3mapIN3HIR7TypeRefEN18TraitResolveCommon14CachedEqualityESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !16, i64 0}
!16 = !{!"_ZTSSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !17, i64 0}
!17 = !{!"_ZTSNSt8_Rb_treeIN3HIR7TypeRefESt4pairIKS1_N18TraitResolveCommon14CachedEqualityEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !18, i64 0, !20, i64 8}
!18 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR7TypeRefEEE", !19, i64 0}
!19 = !{!"_ZTSSt4lessIN3HIR7TypeRefEE"}
!20 = !{!"_ZTSSt15_Rb_tree_header", !21, i64 0, !23, i64 32}
!21 = !{!"_ZTSSt18_Rb_tree_node_base", !22, i64 0, !7, i64 8, !7, i64 16, !7, i64 24}
!22 = !{!"_ZTSSt14_Rb_tree_color", !8, i64 0}
!23 = !{!"long", !8, i64 0}
!24 = !{!"_ZTS11RangeVecMapISt4pairIN3HIR7TypeRefENS1_11GenericPathEEN18TraitResolveCommon11CachedBoundENS5_14CachedBoundCmpEE", !25, i64 0, !29, i64 24}
!25 = !{!"_ZTSSt6vectorISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !26, i64 0}
!26 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE12_Vector_implE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrISt4pairIS1_IN3HIR7TypeRefENS2_11GenericPathEEN18TraitResolveCommon11CachedBoundEESt14default_deleteIS8_EESaISB_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!29 = !{!"_ZTSN18TraitResolveCommon14CachedBoundCmpE"}
!30 = !{!"_ZTSN3HIR10SimplePathE", !31, i64 0}
!31 = !{!"_ZTS10ThinVectorI8RcStringE", !7, i64 0}
!32 = distinct !{!32, !12}
!33 = !{!34, !7, i64 0}
!34 = !{!"_ZTSN3HIR8TypeData12Data_ClosureE", !7, i64 0}
!35 = !{!36, !52, i64 76}
!36 = !{!"_ZTSN3HIR16ExprNode_ClosureE", !37, i64 0, !41, i64 32, !39, i64 56, !45, i64 64, !51, i64 72, !52, i64 76, !51, i64 80, !53, i64 88, !62, i64 136, !7, i64 144, !64, i64 152, !64, i64 184, !69, i64 216}
!37 = !{!"_ZTSN3HIR8ExprNodeE", !38, i64 8, !39, i64 16, !40, i64 24}
!38 = !{!"_ZTS4Span", !7, i64 0}
!39 = !{!"_ZTSN3HIR7TypeRefE", !7, i64 0}
!40 = !{!"_ZTSN3HIR10ValueUsageE", !8, i64 0}
!41 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !42, i64 0}
!42 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !43, i64 0}
!43 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !44, i64 0}
!44 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!45 = !{!"_ZTSSt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS1_EE", !46, i64 0}
!46 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR8ExprNodeESt14default_deleteIS1_ELb1ELb1EE", !47, i64 0}
!47 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR8ExprNodeESt14default_deleteIS1_EE", !48, i64 0}
!48 = !{!"_ZTSSt5tupleIJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !49, i64 0}
!49 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR8ExprNodeESt14default_deleteIS1_EEE", !50, i64 0}
!50 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR8ExprNodeELb0EE", !7, i64 0}
!51 = !{!"bool", !8, i64 0}
!52 = !{!"_ZTSN3HIR16ExprNode_Closure5ClassE", !8, i64 0}
!53 = !{!"_ZTSN3HIR16ExprNode_Closure8AvuCacheE", !54, i64 0, !58, i64 24}
!54 = !{!"_ZTSSt6vectorIjSaIjEE", !55, i64 0}
!55 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !56, i64 0}
!56 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !57, i64 0}
!57 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!58 = !{!"_ZTSSt6vectorIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !59, i64 0}
!59 = !{!"_ZTSSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE", !60, i64 0}
!60 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE12_Vector_implE", !61, i64 0}
!61 = !{!"_ZTSNSt12_Vector_baseIN3HIR16ExprNode_Closure8AvuCache7CaptureESaIS3_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!62 = !{!"_ZTSN3HIR11LifetimeRefE", !63, i64 0}
!63 = !{!"int", !8, i64 0}
!64 = !{!"_ZTSN3HIR11GenericPathE", !30, i64 0, !65, i64 8}
!65 = !{!"_ZTSN3HIR10PathParamsE", !66, i64 0, !67, i64 8, !68, i64 16}
!66 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !7, i64 0}
!67 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !7, i64 0}
!68 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !7, i64 0}
!69 = !{!"_ZTSSt6vectorISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseISt10unique_ptrIN3HIR8ExprNodeESt14default_deleteIS2_EESaIS5_EE17_Vector_impl_dataE", !7, i64 0, !7, i64 8, !7, i64 16}
!73 = !{!36, !51, i64 80}
!74 = !{i8 0, i8 2}
!75 = !{}
!76 = !{!77, !7, i64 0}
!77 = !{!"_ZTSN3HIR8TypeData14Data_GeneratorE", !7, i64 0}


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