; LLVM IR from thepowersgang/mrustc :: src/mir (cleanup)

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

%"class.HIR::TypeRef" = type { ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.68" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.68" = type { %"struct.std::_Vector_base.69" }
%"struct.std::_Vector_base.69" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.424 = type { ptr }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr, ptr }
%class.anon.427 = type { ptr }
%class.anon.428 = type { ptr, ptr }
%class.anon.429 = type { ptr }
%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.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.430 = type { ptr, ptr }
%class.anon.436 = type { ptr, ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%class.anon.437 = type { ptr, ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%class.anon.438 = 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.RcString = 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.4" }
%"struct.std::_Head_base.4" = type { 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.24", %"class.std::vector.29", %"class.std::vector.34", %"class.std::vector.39" }
%"class.std::vector.24" = type { %"struct.std::_Vector_base.25" }
%"struct.std::_Vector_base.25" = 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.29" = type { %"struct.std::_Vector_base.30" }
%"struct.std::_Vector_base.30" = 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.34" = type { %"struct.std::_Vector_base.35" }
%"struct.std::_Vector_base.35" = 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.39" = type { %"struct.std::_Vector_base.40" }
%"struct.std::_Vector_base.40" = 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.398" }
%"class.std::vector.398" = type { %"struct.std::_Vector_base.399" }
%"struct.std::_Vector_base.399" = 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.155" }
%"class.std::map.155" = type { %"class.std::_Rb_tree.156" }
%"class.std::_Rb_tree.156" = type { %"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<HIR::SimplePath, std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>, std::_Select1st<std::pair<const HIR::SimplePath, HIR::TraitMarkings::AutoMarking>>, std::less<HIR::SimplePath>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"struct.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%"struct.HIR::VisEnt" = type { %"class.HIR::Publicity", %"class.HIR::TypeRef" }
%"class.HIR::Publicity" = type { %"class.std::shared_ptr.431" }
%"class.std::shared_ptr.431" = type { %"class.std::__shared_ptr.432" }
%"class.std::__shared_ptr.432" = type { ptr, %"class.std::__shared_count" }
%"class.std::__shared_count" = type { ptr }
%"class.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%"struct.std::pair.434" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"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.84", [8 x i8] }
%"class.std::unique_ptr.84" = type { %"struct.std::__uniq_ptr_data.85" }
%"struct.std::__uniq_ptr_data.85" = type { %"class.std::__uniq_ptr_impl.86" }
%"class.std::__uniq_ptr_impl.86" = type { %"class.std::tuple.87" }
%"class.std::tuple.87" = type { %"struct.std::_Tuple_impl.88" }
%"struct.std::_Tuple_impl.88" = type { %"struct.std::_Head_base.91" }
%"struct.std::_Head_base.91" = type { ptr }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.109", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.98", %"class.std::map.104", ptr }
%"class.std::map.98" = type { %"class.std::_Rb_tree.99" }
%"class.std::_Rb_tree.99" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::map.104" = type { %"class.std::_Rb_tree.105" }
%"class.std::_Rb_tree.105" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb = external hidden unnamed_addr constant [191 x i8], align 1
@__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb = external hidden unnamed_addr constant [31 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

declare 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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) #2 align 2

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) #4 align 2

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

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

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

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

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

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(144)) #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) #4 personality ptr @__gxx_personality_v0 {
  %9 = alloca i1, align 1
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca ptr, align 8
  %16 = alloca ptr, align 8
  %17 = alloca ptr, align 8
  %18 = alloca i8, align 1
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca %"class.std::function", align 8
  %22 = alloca %class.anon.424, align 8
  %23 = alloca ptr, align 8
  %24 = alloca i32, align 4
  %25 = alloca i8, align 1
  %26 = alloca ptr, align 8
  %27 = alloca i8, align 1
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.425, align 8
  %31 = alloca ptr, align 8
  %32 = alloca %"class.std::function", align 8
  %33 = alloca %class.anon.426, align 8
  %34 = alloca %"class.std::function", align 8
  %35 = alloca %class.anon.427, align 8
  %36 = alloca %"class.std::function", align 8
  %37 = alloca %class.anon.428, align 8
  %38 = alloca ptr, align 8
  %39 = alloca %"class.std::function", align 8
  %40 = alloca %class.anon.429, align 8
  %41 = alloca %struct.MonomorphStatePtr, align 8
  %42 = alloca %struct.MonomorphStatePtr, align 8
  %43 = alloca i8, align 1
  %44 = alloca ptr, align 8
  %45 = alloca i8, align 1
  %46 = alloca ptr, align 8
  %47 = alloca ptr, align 8
  %48 = alloca %"class.std::function", align 8
  %49 = alloca %class.anon.430, align 8
  %50 = alloca i8, align 1
  %51 = alloca ptr, align 8
  %52 = alloca ptr, align 8
  %53 = alloca %"class.HIR::TypeRef", align 8
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca i8, align 1
  %56 = alloca ptr, align 8
  %57 = alloca ptr, align 8
  %58 = alloca %"class.HIR::TypeRef", align 8
  %59 = alloca %"class.HIR::TypeRef", align 8
  %60 = alloca i8, align 1
  %61 = alloca ptr, align 8
  %62 = alloca ptr, align 8
  %63 = alloca %"class.HIR::TypeRef", align 8
  %64 = alloca %"class.MIR::Param", align 8
  %65 = alloca %"class.MIR::Constant", align 8
  %66 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %67 = alloca ptr, align 8
  %68 = alloca %"class.std::function", align 8
  %69 = alloca %class.anon.436, align 8
  %70 = alloca i8, align 1
  %71 = alloca ptr, align 8
  %72 = alloca %"class.HIR::TypeRef", align 8
  %73 = alloca %"class.HIR::GenericPath", align 8
  %74 = alloca %"struct.HIR::SimplePath", align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"class.HIR::TypeRef", align 8
  %77 = alloca ptr, align 8
  %78 = alloca ptr, align 8
  %79 = alloca %"class.HIR::TypeRef", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.HIR::TypeRef", align 8
  %82 = alloca i32, align 4
  %83 = alloca %"class.std::function", align 8
  %84 = alloca %class.anon.437, align 8
  %85 = alloca %"struct.MIR::LValue", align 8
  %86 = alloca %"class.HIR::TypeRef", align 8
  %87 = alloca %"class.MIR::RValue", align 8
  %88 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %89 = alloca %"class.MIR::Param", align 8
  %90 = alloca %"struct.MIR::LValue", align 8
  %91 = alloca %"struct.MIR::LValue", align 8
  %92 = alloca %"struct.MIR::LValue", align 8
  %93 = alloca %"class.MIR::Param", align 8
  %94 = alloca %"struct.MIR::LValue", align 8
  %95 = alloca %"class.HIR::TypeRef", align 8
  %96 = alloca %"class.MIR::RValue", align 8
  %97 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %98 = alloca %"class.std::function", align 8
  %99 = alloca %class.anon.438, align 8
  %100 = alloca %"class.MIR::Param", align 8
  %101 = alloca %"class.MIR::Constant", align 8
  %102 = alloca %"class.HIR::TypeRef", align 8
  store ptr %0, ptr %10, align 8, !tbaa !5
  store ptr %1, ptr %11, align 8, !tbaa !5
  store ptr %2, ptr %12, align 8, !tbaa !5
  store ptr %3, ptr %13, align 8, !tbaa !5
  store ptr %4, ptr %14, align 8, !tbaa !5
  store ptr %5, ptr %15, align 8, !tbaa !5
  store ptr %6, ptr %16, align 8, !tbaa !5
  store ptr %7, ptr %17, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %18) #7
  store i8 1, ptr %18, align 1, !tbaa !9
  br label %103

103:                                              ; preds = %968, %8
  %104 = load i8, ptr %18, align 1, !tbaa !9, !range !11, !noundef !12
  %105 = trunc i8 %104 to i1
  br i1 %105, label %107, label %106

106:                                              ; preds = %103
  store i32 2, ptr %19, align 4
  br label %969

107:                                              ; preds = %103
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #7
  %108 = load ptr, ptr %12, align 8, !tbaa !5
  %109 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %108)
  store ptr %109, ptr %20, align 8, !tbaa !5
  br label %110

110:                                              ; preds = %963, %107
  %111 = load i8, ptr %18, align 1, !tbaa !9, !range !11, !noundef !12
  %112 = trunc i8 %111 to i1
  br i1 %112, label %114, label %113

113:                                              ; preds = %110
  store i32 5, ptr %19, align 4
  br label %964

114:                                              ; preds = %110
  %115 = load ptr, ptr %20, align 8, !tbaa !5
  %116 = call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %115)
  switch i32 %116, label %118 [
    i32 0, label %117
    i32 5, label %131
    i32 4, label %153
    i32 9, label %531
    i32 6, label %639
  ]

117:                                              ; preds = %114
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 670, ptr noundef @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #8
  unreachable

118:                                              ; preds = %114
  br label %119

119:                                              ; preds = %118
  %120 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %22) #7
  %121 = getelementptr inbounds %class.anon.424, ptr %22, i32 0, i32 0
  %122 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %122, ptr %121, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %21, ptr noundef nonnull align 8 dereferenceable(8) %22) #7
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %120, ptr noundef %21)
          to label %123 unwind label %125

123:                                              ; preds = %119
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  %124 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str, ptr %124, align 16, !tbaa !5
  call void @__cxa_throw(ptr %124, ptr @_ZTIPKc, ptr null) #9
  unreachable

125:                                              ; preds = %119
  %126 = landingpad { ptr, i32 }
          cleanup
  %127 = extractvalue { ptr, i32 } %126, 0
  store ptr %127, ptr %23, align 8
  %128 = extractvalue { ptr, i32 } %126, 1
  store i32 %128, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %21) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %22) #7
  br label %966

129:                                              ; No predecessors!
  br label %130

130:                                              ; preds = %129
  br label %962

131:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 1, ptr %25) #7
  store i8 1, ptr %25, align 1, !tbaa !9
  br label %132

132:                                              ; preds = %149, %131
  %133 = load i8, ptr %25, align 1, !tbaa !9, !range !11, !noundef !12
  %134 = trunc i8 %133 to i1
  br i1 %134, label %136, label %135

135:                                              ; preds = %132
  store i32 11, ptr %19, align 4
  br label %150

136:                                              ; preds = %132
  call void @llvm.lifetime.start.p0(i64 8, ptr %26) #7
  %137 = load ptr, ptr %20, align 8, !tbaa !5
  %138 = call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %137)
  store ptr %138, ptr %26, align 8, !tbaa !5
  br label %139

139:                                              ; preds = %145, %136
  %140 = load ptr, ptr %26, align 8, !tbaa !5
  %141 = load i8, ptr %25, align 1, !tbaa !9, !range !11, !noundef !12
  %142 = trunc i8 %141 to i1
  br i1 %142, label %144, label %143

143:                                              ; preds = %139
  store i32 14, ptr %19, align 4
  br label %146

144:                                              ; preds = %139
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %146

145:                                              ; No predecessors!
  store i8 0, ptr %25, align 1, !tbaa !9
  br label %139, !llvm.loop !13

146:                                              ; preds = %144, %143
  call void @llvm.lifetime.end.p0(i64 8, ptr %26) #7
  %147 = load i32, ptr %19, align 4
  switch i32 %147, label %150 [
    i32 14, label %148
  ]

148:                                              ; preds = %146
  br label %149

149:                                              ; preds = %148
  store i8 0, ptr %25, align 1, !tbaa !9
  br label %132, !llvm.loop !15

150:                                              ; preds = %146, %135
  call void @llvm.lifetime.end.p0(i64 1, ptr %25) #7
  %151 = load i32, ptr %19, align 4
  switch i32 %151, label %964 [
    i32 11, label %152
  ]

152:                                              ; preds = %150
  br label %962

153:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 1, ptr %27) #7
  store i8 1, ptr %27, align 1, !tbaa !9
  br label %154

154:                                              ; preds = %527, %153
  %155 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %156 = trunc i8 %155 to i1
  br i1 %156, label %158, label %157

157:                                              ; preds = %154
  store i32 17, ptr %19, align 4
  br label %528

158:                                              ; preds = %154
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #7
  %159 = load ptr, ptr %20, align 8, !tbaa !5
  %160 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %159)
  store ptr %160, ptr %28, align 8, !tbaa !5
  br label %161

161:                                              ; preds = %522, %158
  %162 = load ptr, ptr %28, align 8, !tbaa !5
  %163 = load i8, ptr %27, align 1, !tbaa !9, !range !11, !noundef !12
  %164 = trunc i8 %163 to i1
  br i1 %164, label %166, label %165

165:                                              ; preds = %161
  store i32 20, ptr %19, align 4
  br label %523

166:                                              ; preds = %161
  %167 = load ptr, ptr %28, align 8, !tbaa !5
  %168 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %167, i32 0, i32 1
  %169 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %168)
  br i1 %169, label %170, label %171

170:                                              ; preds = %166
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %523

171:                                              ; preds = %166
  br label %172

172:                                              ; preds = %171
  %173 = load ptr, ptr %13, align 8, !tbaa !5
  %174 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %173)
  %175 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %174)
  br i1 %175, label %185, label %176

176:                                              ; preds = %172
  %177 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #7
  %178 = getelementptr inbounds %class.anon.425, ptr %30, i32 0, i32 0
  %179 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %179, ptr %178, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %177, ptr noundef %29)
          to label %180 unwind label %181

180:                                              ; preds = %176
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %185

181:                                              ; preds = %176
  %182 = landingpad { ptr, i32 }
          cleanup
  %183 = extractvalue { ptr, i32 } %182, 0
  store ptr %183, ptr %23, align 8
  %184 = extractvalue { ptr, i32 } %182, 1
  store i32 %184, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #7
  br label %525

185:                                              ; preds = %180, %172
  br label %186

186:                                              ; preds = %185
  br label %187

187:                                              ; preds = %186
  call void @llvm.lifetime.start.p0(i64 8, ptr %31) #7
  %188 = load ptr, ptr %13, align 8, !tbaa !5
  %189 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %188)
  %190 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %189)
  store ptr %190, ptr %31, align 8, !tbaa !5
  br label %191

191:                                              ; preds = %187
  %192 = load ptr, ptr %28, align 8, !tbaa !5
  %193 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %192, i32 0, i32 1
  %194 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %193)
  %195 = load ptr, ptr %31, align 8, !tbaa !5
  %196 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %195, i32 0, i32 1
  %197 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %196)
  %198 = icmp eq i32 %194, %197
  br i1 %198, label %210, label %199

199:                                              ; preds = %191
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %33) #7
  %201 = getelementptr inbounds %class.anon.426, ptr %33, i32 0, i32 0
  %202 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %202, ptr %201, align 8, !tbaa !5
  %203 = getelementptr inbounds %class.anon.426, ptr %33, i32 0, i32 1
  %204 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %204, ptr %203, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(16) %33) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %200, ptr noundef %32)
          to label %205 unwind label %206

205:                                              ; preds = %199
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  br label %210

206:                                              ; preds = %199
  %207 = landingpad { ptr, i32 }
          cleanup
  %208 = extractvalue { ptr, i32 } %207, 0
  store ptr %208, ptr %23, align 8
  %209 = extractvalue { ptr, i32 } %207, 1
  store i32 %209, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %33) #7
  br label %521

210:                                              ; preds = %205, %191
  br label %211

211:                                              ; preds = %210
  br label %212

212:                                              ; preds = %211
  br label %213

213:                                              ; preds = %212
  %214 = load ptr, ptr %28, align 8, !tbaa !5
  %215 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %214, i32 0, i32 1
  %216 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %215)
  br i1 %216, label %226, label %217

217:                                              ; preds = %213
  %218 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %35) #7
  %219 = getelementptr inbounds %class.anon.427, ptr %35, i32 0, i32 0
  %220 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %220, ptr %219, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %34, ptr noundef nonnull align 8 dereferenceable(8) %35) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %218, ptr noundef %34)
          to label %221 unwind label %222

221:                                              ; preds = %217
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %226

222:                                              ; preds = %217
  %223 = landingpad { ptr, i32 }
          cleanup
  %224 = extractvalue { ptr, i32 } %223, 0
  store ptr %224, ptr %23, align 8
  %225 = extractvalue { ptr, i32 } %223, 1
  store i32 %225, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %34) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %35) #7
  br label %521

226:                                              ; preds = %221, %213
  br label %227

227:                                              ; preds = %226
  br label %228

228:                                              ; preds = %227
  br label %229

229:                                              ; preds = %228
  %230 = load ptr, ptr %28, align 8, !tbaa !5
  %231 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %230, i32 0, i32 1
  %232 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %231)
  %233 = load ptr, ptr %232, align 8, !tbaa !5
  %234 = load ptr, ptr %31, align 8, !tbaa !5
  %235 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %234, i32 0, i32 1
  %236 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %235)
  %237 = load ptr, ptr %236, align 8, !tbaa !5
  %238 = icmp eq ptr %233, %237
  br i1 %238, label %250, label %239

239:                                              ; preds = %229
  %240 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %37) #7
  %241 = getelementptr inbounds %class.anon.428, ptr %37, i32 0, i32 0
  %242 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %242, ptr %241, align 8, !tbaa !5
  %243 = getelementptr inbounds %class.anon.428, ptr %37, i32 0, i32 1
  %244 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %244, ptr %243, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %36, ptr noundef nonnull align 8 dereferenceable(16) %37) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %240, ptr noundef %36)
          to label %245 unwind label %246

245:                                              ; preds = %239
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %250

246:                                              ; preds = %239
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %23, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %37) #7
  br label %521

250:                                              ; preds = %245, %229
  br label %251

251:                                              ; preds = %250
  br label %252

252:                                              ; preds = %251
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #7
  %253 = load ptr, ptr %28, align 8, !tbaa !5
  %254 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %253, i32 0, i32 1
  %255 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %254)
  %256 = load ptr, ptr %255, align 8, !tbaa !5
  store ptr %256, ptr %38, align 8, !tbaa !5
  br label %257

257:                                              ; preds = %252
  %258 = load ptr, ptr %38, align 8, !tbaa !5
  %259 = getelementptr inbounds %"class.HIR::Struct", ptr %258, i32 0, i32 7
  %260 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %259, i32 0, i32 3
  %261 = load i32, ptr %260, align 4, !tbaa !16
  %262 = icmp ne i32 %261, -1
  br i1 %262, label %272, label %263

263:                                              ; preds = %257
  %264 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #7
  %265 = getelementptr inbounds %class.anon.429, ptr %40, i32 0, i32 0
  %266 = load ptr, ptr %12, align 8, !tbaa !5
  store ptr %266, ptr %265, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %39, ptr noundef nonnull align 8 dereferenceable(8) %40) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %264, ptr noundef %39)
          to label %267 unwind label %268

267:                                              ; preds = %263
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %272

268:                                              ; preds = %263
  %269 = landingpad { ptr, i32 }
          cleanup
  %270 = extractvalue { ptr, i32 } %269, 0
  store ptr %270, ptr %23, align 8
  %271 = extractvalue { ptr, i32 } %269, 1
  store i32 %271, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #7
  br label %520

272:                                              ; preds = %267, %257
  br label %273

273:                                              ; preds = %272
  br label %274

274:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 128, ptr %41) #7
  %275 = load ptr, ptr %28, align 8, !tbaa !5
  %276 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %275, i32 0, i32 0
  %277 = getelementptr inbounds %"class.HIR::Path", ptr %276, i32 0, i32 0
  %278 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %277)
  %279 = getelementptr inbounds %"class.HIR::GenericPath", ptr %278, i32 0, i32 1
  call void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %41, ptr noundef null, ptr noundef %279, ptr noundef null, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 128, ptr %42) #7
  %280 = load ptr, ptr %31, align 8, !tbaa !5
  %281 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %280, i32 0, i32 0
  %282 = getelementptr inbounds %"class.HIR::Path", ptr %281, i32 0, i32 0
  %283 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %282)
          to label %284 unwind label %291

284:                                              ; preds = %274
  %285 = getelementptr inbounds %"class.HIR::GenericPath", ptr %283, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %42, ptr noundef null, ptr noundef %285, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %286 unwind label %291

286:                                              ; preds = %284
  call void @llvm.lifetime.start.p0(i64 1, ptr %43) #7
  store i8 1, ptr %43, align 1, !tbaa !9
  br label %287

287:                                              ; preds = %508, %286
  %288 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %289 = trunc i8 %288 to i1
  br i1 %289, label %295, label %290

290:                                              ; preds = %287
  store i32 33, ptr %19, align 4
  br label %509

291:                                              ; preds = %284, %274
  %292 = landingpad { ptr, i32 }
          cleanup
  %293 = extractvalue { ptr, i32 } %292, 0
  store ptr %293, ptr %23, align 8
  %294 = extractvalue { ptr, i32 } %292, 1
  store i32 %294, ptr %24, align 4
  br label %519

295:                                              ; preds = %287
  call void @llvm.lifetime.start.p0(i64 8, ptr %44) #7
  %296 = load ptr, ptr %38, align 8, !tbaa !5
  %297 = getelementptr inbounds %"class.HIR::Struct", ptr %296, i32 0, i32 3
  store ptr %297, ptr %44, align 8, !tbaa !5
  br label %298

298:                                              ; preds = %503, %295
  %299 = load i8, ptr %43, align 1, !tbaa !9, !range !11, !noundef !12
  %300 = trunc i8 %299 to i1
  br i1 %300, label %302, label %301

301:                                              ; preds = %298
  store i32 36, ptr %19, align 4
  br label %504

302:                                              ; preds = %298
  %303 = load ptr, ptr %44, align 8, !tbaa !5
  %304 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %303)
          to label %305 unwind label %306

305:                                              ; preds = %302
  switch i32 %304, label %502 [
    i32 0, label %310
    i32 1, label %311
    i32 2, label %353
    i32 3, label %427
  ]

306:                                              ; preds = %302
  %307 = landingpad { ptr, i32 }
          cleanup
  %308 = extractvalue { ptr, i32 } %307, 0
  store ptr %308, ptr %23, align 8
  %309 = extractvalue { ptr, i32 } %307, 1
  store i32 %309, ptr %24, align 4
  br label %506

310:                                              ; preds = %305
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 694, ptr noundef @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #8
  unreachable

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

312:                                              ; preds = %351, %311
  %313 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %314 = trunc i8 %313 to i1
  br i1 %314, label %316, label %315

315:                                              ; preds = %312
  store i32 40, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  br label %352

316:                                              ; preds = %312
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #7
  %317 = load ptr, ptr %44, align 8, !tbaa !5
  %318 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %317)
          to label %319 unwind label %325

319:                                              ; preds = %316
  store ptr %318, ptr %46, align 8, !tbaa !5
  br label %320

320:                                              ; preds = %348, %319
  %321 = load ptr, ptr %46, align 8, !tbaa !5
  %322 = load i8, ptr %45, align 1, !tbaa !9, !range !11, !noundef !12
  %323 = trunc i8 %322 to i1
  br i1 %323, label %329, label %324

324:                                              ; preds = %320
  store i32 43, ptr %19, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  br label %350

325:                                              ; preds = %316
  %326 = landingpad { ptr, i32 }
          cleanup
  %327 = extractvalue { ptr, i32 } %326, 0
  store ptr %327, ptr %23, align 8
  %328 = extractvalue { ptr, i32 } %326, 1
  store i32 %328, ptr %24, align 4
  br label %349

329:                                              ; preds = %320
  br label %330

330:                                              ; preds = %329
  call void @llvm.lifetime.start.p0(i64 8, ptr %47) #7
  store ptr @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb, ptr %47, align 8, !tbaa !5
  %331 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %49) #7
  %332 = getelementptr inbounds %class.anon.430, ptr %49, i32 0, i32 0
  store ptr %47, ptr %332, align 8, !tbaa !5
  %333 = getelementptr inbounds %class.anon.430, ptr %49, i32 0, i32 1
  %334 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %334, ptr %333, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %48, ptr noundef nonnull align 8 dereferenceable(16) %49) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %331, ptr noundef %48)
          to label %335 unwind label %337

335:                                              ; preds = %330
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  %336 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str, ptr %336, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %336, ptr @_ZTIPKc, ptr null) #9
          to label %980 unwind label %341

337:                                              ; preds = %330
  %338 = landingpad { ptr, i32 }
          cleanup
  %339 = extractvalue { ptr, i32 } %338, 0
  store ptr %339, ptr %23, align 8
  %340 = extractvalue { ptr, i32 } %338, 1
  store i32 %340, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %49) #7
  br label %345

341:                                              ; preds = %335
  %342 = landingpad { ptr, i32 }
          cleanup
  %343 = extractvalue { ptr, i32 } %342, 0
  store ptr %343, ptr %23, align 8
  %344 = extractvalue { ptr, i32 } %342, 1
  store i32 %344, ptr %24, align 4
  br label %345

345:                                              ; preds = %341, %337
  call void @llvm.lifetime.end.p0(i64 8, ptr %47) #7
  br label %349

346:                                              ; No predecessors!
  br label %347

347:                                              ; preds = %346
  br label %348

348:                                              ; preds = %347
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %320, !llvm.loop !54

349:                                              ; preds = %345, %325
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %45) #7
  br label %506

350:                                              ; preds = %324
  br label %351

351:                                              ; preds = %350
  store i8 0, ptr %45, align 1, !tbaa !9
  br label %312, !llvm.loop !55

352:                                              ; preds = %315
  br label %502

353:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 1, ptr %50) #7
  store i8 1, ptr %50, align 1, !tbaa !9
  br label %354

354:                                              ; preds = %423, %353
  %355 = load i8, ptr %50, align 1, !tbaa !9, !range !11, !noundef !12
  %356 = trunc i8 %355 to i1
  br i1 %356, label %358, label %357

357:                                              ; preds = %354
  store i32 48, ptr %19, align 4
  br label %424

358:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 8, ptr %51) #7
  %359 = load ptr, ptr %44, align 8, !tbaa !5
  %360 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %359)
          to label %361 unwind label %367

361:                                              ; preds = %358
  store ptr %360, ptr %51, align 8, !tbaa !5
  br label %362

362:                                              ; preds = %418, %361
  %363 = load ptr, ptr %51, align 8, !tbaa !5
  %364 = load i8, ptr %50, align 1, !tbaa !9, !range !11, !noundef !12
  %365 = trunc i8 %364 to i1
  br i1 %365, label %371, label %366

366:                                              ; preds = %362
  store i32 51, ptr %19, align 4
  br label %419

367:                                              ; preds = %358
  %368 = landingpad { ptr, i32 }
          cleanup
  %369 = extractvalue { ptr, i32 } %368, 0
  store ptr %369, ptr %23, align 8
  %370 = extractvalue { ptr, i32 } %368, 1
  store i32 %370, ptr %24, align 4
  br label %421

371:                                              ; preds = %362
  call void @llvm.lifetime.start.p0(i64 8, ptr %52) #7
  %372 = load ptr, ptr %51, align 8, !tbaa !5
  %373 = load ptr, ptr %38, align 8, !tbaa !5
  %374 = getelementptr inbounds %"class.HIR::Struct", ptr %373, i32 0, i32 7
  %375 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %374, i32 0, i32 3
  %376 = load i32, ptr %375, align 4, !tbaa !16
  %377 = zext i32 %376 to i64
  %378 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %372, i64 noundef %377)
          to label %379 unwind label %399

379:                                              ; preds = %371
  %380 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %378, i32 0, i32 1
  store ptr %380, ptr %52, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %53) #7
  %381 = load ptr, ptr %10, align 8, !tbaa !5
  %382 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %381, i32 0, i32 1
  %383 = load ptr, ptr %382, align 8, !tbaa !56
  %384 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %53, ptr noundef nonnull align 8 dereferenceable(96) %41, ptr noundef nonnull align 8 dereferenceable(8) %383, ptr noundef nonnull align 8 dereferenceable(8) %384, i1 noundef zeroext false)
          to label %385 unwind label %403

385:                                              ; preds = %379
  call void @llvm.lifetime.start.p0(i64 8, ptr %54) #7
  %386 = load ptr, ptr %10, align 8, !tbaa !5
  %387 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %386, i32 0, i32 1
  %388 = load ptr, ptr %387, align 8, !tbaa !56
  %389 = load ptr, ptr %52, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %54, ptr noundef nonnull align 8 dereferenceable(96) %42, ptr noundef nonnull align 8 dereferenceable(8) %388, ptr noundef nonnull align 8 dereferenceable(8) %389, i1 noundef zeroext false)
          to label %390 unwind label %407

390:                                              ; preds = %385
  %391 = load ptr, ptr %10, align 8, !tbaa !5
  %392 = load ptr, ptr %11, align 8, !tbaa !5
  %393 = load ptr, ptr %14, align 8, !tbaa !5
  %394 = load ptr, ptr %15, align 8, !tbaa !5
  %395 = load ptr, ptr %16, align 8, !tbaa !5
  %396 = load ptr, ptr %17, align 8, !tbaa !5
  %397 = invoke noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %391, ptr noundef nonnull align 8 dereferenceable(40) %392, ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %54, ptr noundef nonnull align 8 dereferenceable(32) %393, ptr noundef nonnull align 8 dereferenceable(48) %394, ptr noundef nonnull align 8 dereferenceable(8) %395, ptr noundef nonnull align 1 dereferenceable(1) %396)
          to label %398 unwind label %411

398:                                              ; preds = %390
  store i1 %397, ptr %9, align 1
  store i32 1, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %419

399:                                              ; preds = %371
  %400 = landingpad { ptr, i32 }
          cleanup
  %401 = extractvalue { ptr, i32 } %400, 0
  store ptr %401, ptr %23, align 8
  %402 = extractvalue { ptr, i32 } %400, 1
  store i32 %402, ptr %24, align 4
  br label %417

403:                                              ; preds = %379
  %404 = landingpad { ptr, i32 }
          cleanup
  %405 = extractvalue { ptr, i32 } %404, 0
  store ptr %405, ptr %23, align 8
  %406 = extractvalue { ptr, i32 } %404, 1
  store i32 %406, ptr %24, align 4
  br label %416

407:                                              ; preds = %385
  %408 = landingpad { ptr, i32 }
          cleanup
  %409 = extractvalue { ptr, i32 } %408, 0
  store ptr %409, ptr %23, align 8
  %410 = extractvalue { ptr, i32 } %408, 1
  store i32 %410, ptr %24, align 4
  br label %415

411:                                              ; preds = %390
  %412 = landingpad { ptr, i32 }
          cleanup
  %413 = extractvalue { ptr, i32 } %412, 0
  store ptr %413, ptr %23, align 8
  %414 = extractvalue { ptr, i32 } %412, 1
  store i32 %414, ptr %24, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #7
  br label %415

415:                                              ; preds = %411, %407
  call void @llvm.lifetime.end.p0(i64 8, ptr %54) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #7
  br label %416

416:                                              ; preds = %415, %403
  call void @llvm.lifetime.end.p0(i64 8, ptr %53) #7
  br label %417

417:                                              ; preds = %416, %399
  call void @llvm.lifetime.end.p0(i64 8, ptr %52) #7
  br label %421

418:                                              ; No predecessors!
  store i8 0, ptr %50, align 1, !tbaa !9
  br label %362, !llvm.loop !61

419:                                              ; preds = %398, %366
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  %420 = load i32, ptr %19, align 4
  switch i32 %420, label %424 [
    i32 51, label %422
  ]

421:                                              ; preds = %417, %367
  call void @llvm.lifetime.end.p0(i64 8, ptr %51) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #7
  br label %506

422:                                              ; preds = %419
  br label %423

423:                                              ; preds = %422
  store i8 0, ptr %50, align 1, !tbaa !9
  br label %354, !llvm.loop !62

424:                                              ; preds = %419, %357
  call void @llvm.lifetime.end.p0(i64 1, ptr %50) #7
  %425 = load i32, ptr %19, align 4
  switch i32 %425, label %504 [
    i32 48, label %426
  ]

426:                                              ; preds = %424
  br label %502

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

428:                                              ; preds = %498, %427
  %429 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %430 = trunc i8 %429 to i1
  br i1 %430, label %432, label %431

431:                                              ; preds = %428
  store i32 54, ptr %19, align 4
  br label %499

432:                                              ; preds = %428
  call void @llvm.lifetime.start.p0(i64 8, ptr %56) #7
  %433 = load ptr, ptr %44, align 8, !tbaa !5
  %434 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %433)
          to label %435 unwind label %441

435:                                              ; preds = %432
  store ptr %434, ptr %56, align 8, !tbaa !5
  br label %436

436:                                              ; preds = %493, %435
  %437 = load ptr, ptr %56, align 8, !tbaa !5
  %438 = load i8, ptr %55, align 1, !tbaa !9, !range !11, !noundef !12
  %439 = trunc i8 %438 to i1
  br i1 %439, label %445, label %440

440:                                              ; preds = %436
  store i32 57, ptr %19, align 4
  br label %494

441:                                              ; preds = %432
  %442 = landingpad { ptr, i32 }
          cleanup
  %443 = extractvalue { ptr, i32 } %442, 0
  store ptr %443, ptr %23, align 8
  %444 = extractvalue { ptr, i32 } %442, 1
  store i32 %444, ptr %24, align 4
  br label %496

445:                                              ; preds = %436
  call void @llvm.lifetime.start.p0(i64 8, ptr %57) #7
  %446 = load ptr, ptr %56, align 8, !tbaa !5
  %447 = load ptr, ptr %38, align 8, !tbaa !5
  %448 = getelementptr inbounds %"class.HIR::Struct", ptr %447, i32 0, i32 7
  %449 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %448, i32 0, i32 3
  %450 = load i32, ptr %449, align 4, !tbaa !16
  %451 = zext i32 %450 to i64
  %452 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %446, i64 noundef %451)
          to label %453 unwind label %474

453:                                              ; preds = %445
  %454 = getelementptr inbounds %"struct.std::pair.434", ptr %452, i32 0, i32 1
  %455 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %454, i32 0, i32 1
  store ptr %455, ptr %57, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %58) #7
  %456 = load ptr, ptr %10, align 8, !tbaa !5
  %457 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %456, i32 0, i32 1
  %458 = load ptr, ptr %457, align 8, !tbaa !56
  %459 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %58, ptr noundef nonnull align 8 dereferenceable(96) %41, ptr noundef nonnull align 8 dereferenceable(8) %458, ptr noundef nonnull align 8 dereferenceable(8) %459, i1 noundef zeroext false)
          to label %460 unwind label %478

460:                                              ; preds = %453
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #7
  %461 = load ptr, ptr %10, align 8, !tbaa !5
  %462 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %461, i32 0, i32 1
  %463 = load ptr, ptr %462, align 8, !tbaa !56
  %464 = load ptr, ptr %57, align 8, !tbaa !5
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %59, ptr noundef nonnull align 8 dereferenceable(96) %42, ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(8) %464, i1 noundef zeroext false)
          to label %465 unwind label %482

465:                                              ; preds = %460
  %466 = load ptr, ptr %10, align 8, !tbaa !5
  %467 = load ptr, ptr %11, align 8, !tbaa !5
  %468 = load ptr, ptr %14, align 8, !tbaa !5
  %469 = load ptr, ptr %15, align 8, !tbaa !5
  %470 = load ptr, ptr %16, align 8, !tbaa !5
  %471 = load ptr, ptr %17, align 8, !tbaa !5
  %472 = invoke noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %466, ptr noundef nonnull align 8 dereferenceable(40) %467, ptr noundef nonnull align 8 dereferenceable(8) %58, ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(32) %468, ptr noundef nonnull align 8 dereferenceable(48) %469, ptr noundef nonnull align 8 dereferenceable(8) %470, ptr noundef nonnull align 1 dereferenceable(1) %471)
          to label %473 unwind label %486

473:                                              ; preds = %465
  store i1 %472, ptr %9, align 1
  store i32 1, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %494

474:                                              ; preds = %445
  %475 = landingpad { ptr, i32 }
          cleanup
  %476 = extractvalue { ptr, i32 } %475, 0
  store ptr %476, ptr %23, align 8
  %477 = extractvalue { ptr, i32 } %475, 1
  store i32 %477, ptr %24, align 4
  br label %492

478:                                              ; preds = %453
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %23, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %24, align 4
  br label %491

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

486:                                              ; preds = %465
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %23, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %24, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #7
  br label %490

490:                                              ; preds = %486, %482
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #7
  br label %491

491:                                              ; preds = %490, %478
  call void @llvm.lifetime.end.p0(i64 8, ptr %58) #7
  br label %492

492:                                              ; preds = %491, %474
  call void @llvm.lifetime.end.p0(i64 8, ptr %57) #7
  br label %496

493:                                              ; No predecessors!
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %436, !llvm.loop !63

494:                                              ; preds = %473, %440
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  %495 = load i32, ptr %19, align 4
  switch i32 %495, label %499 [
    i32 57, label %497
  ]

496:                                              ; preds = %492, %441
  call void @llvm.lifetime.end.p0(i64 8, ptr %56) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  br label %506

497:                                              ; preds = %494
  br label %498

498:                                              ; preds = %497
  store i8 0, ptr %55, align 1, !tbaa !9
  br label %428, !llvm.loop !64

499:                                              ; preds = %494, %431
  call void @llvm.lifetime.end.p0(i64 1, ptr %55) #7
  %500 = load i32, ptr %19, align 4
  switch i32 %500, label %504 [
    i32 54, label %501
  ]

501:                                              ; preds = %499
  br label %502

502:                                              ; preds = %501, %426, %352, %305
  br label %503

503:                                              ; preds = %502
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %298, !llvm.loop !65

504:                                              ; preds = %499, %424, %301
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  %505 = load i32, ptr %19, align 4
  switch i32 %505, label %509 [
    i32 36, label %507
  ]

506:                                              ; preds = %496, %421, %349, %306
  call void @llvm.lifetime.end.p0(i64 8, ptr %44) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  br label %518

507:                                              ; preds = %504
  br label %508

508:                                              ; preds = %507
  store i8 0, ptr %43, align 1, !tbaa !9
  br label %287, !llvm.loop !66

509:                                              ; preds = %504, %290
  call void @llvm.lifetime.end.p0(i64 1, ptr %43) #7
  %510 = load i32, ptr %19, align 4
  switch i32 %510, label %517 [
    i32 33, label %511
  ]

511:                                              ; preds = %509
  %512 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str, ptr %512, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %512, ptr @_ZTIPKc, ptr null) #9
          to label %980 unwind label %513

513:                                              ; preds = %511
  %514 = landingpad { ptr, i32 }
          cleanup
  %515 = extractvalue { ptr, i32 } %514, 0
  store ptr %515, ptr %23, align 8
  %516 = extractvalue { ptr, i32 } %514, 1
  store i32 %516, ptr %24, align 4
  br label %518

517:                                              ; preds = %509
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %42) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %41) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %41) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %523

518:                                              ; preds = %513, %506
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %42) #7
  br label %519

519:                                              ; preds = %518, %291
  call void @llvm.lifetime.end.p0(i64 128, ptr %42) #7
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %41) #7
  call void @llvm.lifetime.end.p0(i64 128, ptr %41) #7
  br label %520

520:                                              ; preds = %519, %268
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #7
  br label %521

521:                                              ; preds = %520, %246, %222, %206
  call void @llvm.lifetime.end.p0(i64 8, ptr %31) #7
  br label %525

522:                                              ; No predecessors!
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %161, !llvm.loop !67

523:                                              ; preds = %517, %170, %165
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  %524 = load i32, ptr %19, align 4
  switch i32 %524, label %528 [
    i32 20, label %526
  ]

525:                                              ; preds = %521, %181
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  br label %966

526:                                              ; preds = %523
  br label %527

527:                                              ; preds = %526
  store i8 0, ptr %27, align 1, !tbaa !9
  br label %154, !llvm.loop !68

528:                                              ; preds = %523, %157
  call void @llvm.lifetime.end.p0(i64 1, ptr %27) #7
  %529 = load i32, ptr %19, align 4
  switch i32 %529, label %964 [
    i32 17, label %530
  ]

530:                                              ; preds = %528
  br label %962

531:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 1, ptr %60) #7
  store i8 1, ptr %60, align 1, !tbaa !9
  br label %532

532:                                              ; preds = %635, %531
  %533 = load i8, ptr %60, align 1, !tbaa !9, !range !11, !noundef !12
  %534 = trunc i8 %533 to i1
  br i1 %534, label %536, label %535

535:                                              ; preds = %532
  store i32 60, ptr %19, align 4
  br label %636

536:                                              ; preds = %532
  call void @llvm.lifetime.start.p0(i64 8, ptr %61) #7
  %537 = load ptr, ptr %20, align 8, !tbaa !5
  %538 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %537)
  store ptr %538, ptr %61, align 8, !tbaa !5
  br label %539

539:                                              ; preds = %630, %536
  %540 = load ptr, ptr %61, align 8, !tbaa !5
  %541 = load i8, ptr %60, align 1, !tbaa !9, !range !11, !noundef !12
  %542 = trunc i8 %541 to i1
  br i1 %542, label %544, label %543

543:                                              ; preds = %539
  store i32 63, ptr %19, align 4
  br label %631

544:                                              ; preds = %539
  %545 = load ptr, ptr %13, align 8, !tbaa !5
  %546 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %545)
  %547 = call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %546)
  br i1 %547, label %548, label %599

548:                                              ; preds = %544
  call void @llvm.lifetime.start.p0(i64 8, ptr %62) #7
  %549 = load ptr, ptr %13, align 8, !tbaa !5
  %550 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %549)
  %551 = call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %550)
  store ptr %551, ptr %62, align 8, !tbaa !5
  %552 = load ptr, ptr %62, align 8, !tbaa !5
  %553 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %552, i32 0, i32 1
  %554 = call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %553)
  br i1 %554, label %570, label %555

555:                                              ; preds = %548
  br label %556

556:                                              ; preds = %555
  %557 = call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %557, label %558, label %567

558:                                              ; preds = %556
  %559 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !69
  %560 = call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %559, ptr noundef @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb)
  %561 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %560, ptr noundef @.str.16)
  %562 = load ptr, ptr %62, align 8, !tbaa !5
  %563 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %562, i32 0, i32 1
  %564 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %561, ptr noundef nonnull align 8 dereferenceable(32) %563)
  %565 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %564, ptr noundef @_ZSt3decRSt8ios_base)
  %566 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %565, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %567

567:                                              ; preds = %558, %556
  br label %568

568:                                              ; preds = %567
  br label %569

569:                                              ; preds = %568
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %597

570:                                              ; preds = %548
  call void @llvm.lifetime.start.p0(i64 8, ptr %63) #7
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %63, i32 noundef 0)
  %571 = load ptr, ptr %16, align 8, !tbaa !5
  %572 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %571, ptr noundef nonnull align 8 dereferenceable(8) %63)
          to label %573 unwind label %584

573:                                              ; preds = %570
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %64) #7
  %574 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %66, i32 0, i32 0
  %575 = load ptr, ptr %62, align 8, !tbaa !5
  %576 = getelementptr inbounds %"struct.HIR::TypeData::Data_Array", ptr %575, i32 0, i32 1
  %577 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %576)
  %578 = load i64, ptr %577, align 8, !tbaa !70
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %574, i64 noundef %578, i64 noundef 0)
  %579 = getelementptr inbounds %"struct.MIR::Constant::Data_Uint", ptr %66, i32 0, i32 1
  store i32 0, ptr %579, align 8, !tbaa !71
  call void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %65, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8 %66)
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %64, ptr noundef %65)
          to label %580 unwind label %588

580:                                              ; preds = %573
  %581 = load ptr, ptr %15, align 8, !tbaa !5
  %582 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %581, ptr noundef nonnull align 8 dereferenceable(48) %64)
          to label %583 unwind label %592

583:                                              ; preds = %580
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #7
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %65) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #7
  store i1 true, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %597

584:                                              ; preds = %570
  %585 = landingpad { ptr, i32 }
          cleanup
  %586 = extractvalue { ptr, i32 } %585, 0
  store ptr %586, ptr %23, align 8
  %587 = extractvalue { ptr, i32 } %585, 1
  store i32 %587, ptr %24, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %63) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %63) #7
  br label %598

588:                                              ; preds = %573
  %589 = landingpad { ptr, i32 }
          cleanup
  %590 = extractvalue { ptr, i32 } %589, 0
  store ptr %590, ptr %23, align 8
  %591 = extractvalue { ptr, i32 } %589, 1
  store i32 %591, ptr %24, align 4
  br label %596

592:                                              ; preds = %580
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %23, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %24, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #7
  br label %596

596:                                              ; preds = %592, %588
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %65) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %64) #7
  br label %598

597:                                              ; preds = %583, %569
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %631

598:                                              ; preds = %596, %584
  call void @llvm.lifetime.end.p0(i64 8, ptr %62) #7
  br label %633

599:                                              ; preds = %544
  %600 = load ptr, ptr %13, align 8, !tbaa !5
  %601 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %600)
  %602 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %601)
  br i1 %602, label %613, label %603

603:                                              ; preds = %599
  %604 = load ptr, ptr %13, align 8, !tbaa !5
  %605 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %604)
  %606 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %605)
  br i1 %606, label %607, label %614

607:                                              ; preds = %603
  %608 = load ptr, ptr %13, align 8, !tbaa !5
  %609 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %608)
  %610 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %609)
  %611 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %610, i32 0, i32 1
  %612 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %611)
  br i1 %612, label %613, label %614

613:                                              ; preds = %607, %599
  store i1 false, ptr %9, align 1
  store i32 1, ptr %19, align 4
  br label %631

614:                                              ; preds = %607, %603
  br label %615

615:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #7
  store ptr @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb, ptr %67, align 8, !tbaa !5
  %616 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %69) #7
  %617 = getelementptr inbounds %class.anon.436, ptr %69, i32 0, i32 0
  store ptr %67, ptr %617, align 8, !tbaa !5
  %618 = getelementptr inbounds %class.anon.436, ptr %69, i32 0, i32 1
  %619 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %619, ptr %618, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %68, ptr noundef nonnull align 8 dereferenceable(16) %69) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %616, ptr noundef %68)
          to label %620 unwind label %622

620:                                              ; preds = %615
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #7
  %621 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str, ptr %621, align 16, !tbaa !5
  call void @__cxa_throw(ptr %621, ptr @_ZTIPKc, ptr null) #9
  unreachable

622:                                              ; preds = %615
  %623 = landingpad { ptr, i32 }
          cleanup
  %624 = extractvalue { ptr, i32 } %623, 0
  store ptr %624, ptr %23, align 8
  %625 = extractvalue { ptr, i32 } %623, 1
  store i32 %625, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %69) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #7
  br label %633

626:                                              ; No predecessors!
  br label %627

627:                                              ; preds = %626
  br label %628

628:                                              ; preds = %627
  br label %629

629:                                              ; preds = %628
  br label %630

630:                                              ; preds = %629
  store i8 0, ptr %60, align 1, !tbaa !9
  br label %539, !llvm.loop !74

631:                                              ; preds = %613, %597, %543
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  %632 = load i32, ptr %19, align 4
  switch i32 %632, label %636 [
    i32 63, label %634
  ]

633:                                              ; preds = %622, %598
  call void @llvm.lifetime.end.p0(i64 8, ptr %61) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  br label %966

634:                                              ; preds = %631
  br label %635

635:                                              ; preds = %634
  store i8 0, ptr %60, align 1, !tbaa !9
  br label %532, !llvm.loop !75

636:                                              ; preds = %631, %535
  call void @llvm.lifetime.end.p0(i64 1, ptr %60) #7
  %637 = load i32, ptr %19, align 4
  switch i32 %637, label %964 [
    i32 60, label %638
  ]

638:                                              ; preds = %636
  br label %962

639:                                              ; preds = %114
  call void @llvm.lifetime.start.p0(i64 1, ptr %70) #7
  store i8 1, ptr %70, align 1, !tbaa !9
  br label %640

640:                                              ; preds = %958, %639
  %641 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %642 = trunc i8 %641 to i1
  br i1 %642, label %644, label %643

643:                                              ; preds = %640
  store i32 70, ptr %19, align 4
  br label %959

644:                                              ; preds = %640
  call void @llvm.lifetime.start.p0(i64 8, ptr %71) #7
  %645 = load ptr, ptr %20, align 8, !tbaa !5
  %646 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %645)
  store ptr %646, ptr %71, align 8, !tbaa !5
  br label %647

647:                                              ; preds = %954, %644
  %648 = load ptr, ptr %71, align 8, !tbaa !5
  %649 = load i8, ptr %70, align 1, !tbaa !9, !range !11, !noundef !12
  %650 = trunc i8 %649 to i1
  br i1 %650, label %652, label %651

651:                                              ; preds = %647
  store i32 73, ptr %19, align 4
  br label %955

652:                                              ; preds = %647
  call void @llvm.lifetime.start.p0(i64 8, ptr %72) #7
  %653 = load ptr, ptr %71, align 8, !tbaa !5
  %654 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %653, i32 0, i32 0
  %655 = getelementptr inbounds %"class.HIR::TraitPath", ptr %654, i32 0, i32 1
  call void @llvm.lifetime.start.p0(i64 32, ptr %73) #7
  call void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74)
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef %74)
          to label %656 unwind label %706

656:                                              ; preds = %652
  %657 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %655, ptr noundef nonnull align 8 dereferenceable(32) %73)
          to label %658 unwind label %710

658:                                              ; preds = %656
  br i1 %657, label %659, label %672

659:                                              ; preds = %658
  %660 = load ptr, ptr %71, align 8, !tbaa !5
  %661 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %660, i32 0, i32 0
  %662 = getelementptr inbounds %"class.HIR::TraitPath", ptr %661, i32 0, i32 4
  %663 = load ptr, ptr %662, align 8, !tbaa !76
  %664 = load ptr, ptr %10, align 8, !tbaa !5
  %665 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %664, i32 0, i32 1
  %666 = load ptr, ptr %665, align 8, !tbaa !56
  %667 = load ptr, ptr %10, align 8, !tbaa !5
  %668 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %667, i32 0, i32 3
  %669 = load ptr, ptr %668, align 8, !tbaa !105
  %670 = load ptr, ptr %71, align 8, !tbaa !5
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %72, ptr noundef nonnull align 8 dereferenceable(400) %663, ptr noundef nonnull align 8 dereferenceable(8) %666, ptr noundef nonnull align 8 dereferenceable(944) %669, ptr noundef nonnull align 8 dereferenceable(172) %670)
          to label %671 unwind label %710

671:                                              ; preds = %659
  br label %674

672:                                              ; preds = %658
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %72)
          to label %673 unwind label %710

673:                                              ; preds = %672
  br label %674

674:                                              ; preds = %673, %671
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %75) #7
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %76, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %675 unwind label %715

675:                                              ; preds = %674
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %75, i32 noundef 0, ptr noundef %76)
          to label %676 unwind label %719

676:                                              ; preds = %675
  %677 = load ptr, ptr %16, align 8, !tbaa !5
  %678 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %677, ptr noundef nonnull align 8 dereferenceable(8) %75)
          to label %679 unwind label %723

679:                                              ; preds = %676
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  call void @llvm.lifetime.start.p0(i64 8, ptr %77) #7
  %680 = load ptr, ptr %13, align 8, !tbaa !5
  %681 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %680)
          to label %682 unwind label %729

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

684:                                              ; preds = %682
  store ptr %683, ptr %77, align 8, !tbaa !5
  %685 = load ptr, ptr %77, align 8, !tbaa !5
  %686 = icmp ne ptr %685, null
  br i1 %686, label %687, label %899

687:                                              ; preds = %684
  %688 = load ptr, ptr %17, align 8, !tbaa !5
  store i8 1, ptr %688, align 1, !tbaa !9
  %689 = load ptr, ptr %77, align 8, !tbaa !5
  %690 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %689, i32 0, i32 0
  %691 = getelementptr inbounds %"class.HIR::TraitPath", ptr %690, i32 0, i32 4
  %692 = load ptr, ptr %691, align 8, !tbaa !76
  %693 = load ptr, ptr %71, align 8, !tbaa !5
  %694 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %693, i32 0, i32 0
  %695 = getelementptr inbounds %"class.HIR::TraitPath", ptr %694, i32 0, i32 4
  %696 = load ptr, ptr %695, align 8, !tbaa !76
  %697 = icmp ne ptr %692, %696
  br i1 %697, label %698, label %856

698:                                              ; preds = %687
  %699 = load ptr, ptr %77, align 8, !tbaa !5
  %700 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %699, i32 0, i32 0
  %701 = getelementptr inbounds %"class.HIR::TraitPath", ptr %700, i32 0, i32 4
  %702 = load ptr, ptr %701, align 8, !tbaa !76
  %703 = icmp ne ptr %702, null
  br i1 %703, label %704, label %705

704:                                              ; preds = %698
  br label %734

705:                                              ; preds = %698
  call void @__assert_fail(ptr noundef @.str.17, ptr noundef @.str.4, i32 noundef 758, ptr noundef @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #8
  unreachable

706:                                              ; preds = %652
  %707 = landingpad { ptr, i32 }
          cleanup
  %708 = extractvalue { ptr, i32 } %707, 0
  store ptr %708, ptr %23, align 8
  %709 = extractvalue { ptr, i32 } %707, 1
  store i32 %709, ptr %24, align 4
  br label %714

710:                                              ; preds = %672, %659, %656
  %711 = landingpad { ptr, i32 }
          cleanup
  %712 = extractvalue { ptr, i32 } %711, 0
  store ptr %712, ptr %23, align 8
  %713 = extractvalue { ptr, i32 } %711, 1
  store i32 %713, ptr %24, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #7
  br label %714

714:                                              ; preds = %710, %706
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %74) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %73) #7
  br label %953

715:                                              ; preds = %674
  %716 = landingpad { ptr, i32 }
          cleanup
  %717 = extractvalue { ptr, i32 } %716, 0
  store ptr %717, ptr %23, align 8
  %718 = extractvalue { ptr, i32 } %716, 1
  store i32 %718, ptr %24, align 4
  br label %728

719:                                              ; preds = %675
  %720 = landingpad { ptr, i32 }
          cleanup
  %721 = extractvalue { ptr, i32 } %720, 0
  store ptr %721, ptr %23, align 8
  %722 = extractvalue { ptr, i32 } %720, 1
  store i32 %722, ptr %24, align 4
  br label %727

723:                                              ; preds = %676
  %724 = landingpad { ptr, i32 }
          cleanup
  %725 = extractvalue { ptr, i32 } %724, 0
  store ptr %725, ptr %23, align 8
  %726 = extractvalue { ptr, i32 } %724, 1
  store i32 %726, ptr %24, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #7
  br label %727

727:                                              ; preds = %723, %719
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %76) #7
  br label %728

728:                                              ; preds = %727, %715
  call void @llvm.lifetime.end.p0(i64 8, ptr %75) #7
  br label %952

729:                                              ; preds = %900, %682, %679
  %730 = landingpad { ptr, i32 }
          cleanup
  %731 = extractvalue { ptr, i32 } %730, 0
  store ptr %731, ptr %23, align 8
  %732 = extractvalue { ptr, i32 } %730, 1
  store i32 %732, ptr %24, align 4
  br label %951

733:                                              ; No predecessors!
  br label %734

734:                                              ; preds = %733, %704
  call void @llvm.lifetime.start.p0(i64 8, ptr %78) #7
  %735 = load ptr, ptr %77, align 8, !tbaa !5
  %736 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %735, i32 0, i32 0
  %737 = getelementptr inbounds %"class.HIR::TraitPath", ptr %736, i32 0, i32 4
  %738 = load ptr, ptr %737, align 8, !tbaa !76
  store ptr %738, ptr %78, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %79) #7
  %739 = load ptr, ptr %78, align 8, !tbaa !5
  %740 = load ptr, ptr %10, align 8, !tbaa !5
  %741 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %740, i32 0, i32 1
  %742 = load ptr, ptr %741, align 8, !tbaa !56
  %743 = load ptr, ptr %10, align 8, !tbaa !5
  %744 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %743, i32 0, i32 3
  %745 = load ptr, ptr %744, align 8, !tbaa !105
  %746 = load ptr, ptr %77, align 8, !tbaa !5
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %79, ptr noundef nonnull align 8 dereferenceable(400) %739, ptr noundef nonnull align 8 dereferenceable(8) %742, ptr noundef nonnull align 8 dereferenceable(944) %745, ptr noundef nonnull align 8 dereferenceable(172) %746)
          to label %747 unwind label %772

747:                                              ; preds = %734
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #7
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %81, ptr noundef nonnull align 8 dereferenceable(8) %79)
          to label %748 unwind label %776

748:                                              ; preds = %747
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %80, i32 noundef 0, ptr noundef %81)
          to label %749 unwind label %780

749:                                              ; preds = %748
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  call void @llvm.lifetime.start.p0(i64 4, ptr %82) #7
  %750 = load ptr, ptr %78, align 8, !tbaa !5
  %751 = load ptr, ptr %10, align 8, !tbaa !5
  %752 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %751, i32 0, i32 1
  %753 = load ptr, ptr %752, align 8, !tbaa !56
  %754 = load ptr, ptr %77, align 8, !tbaa !5
  %755 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %754, i32 0, i32 0
  %756 = getelementptr inbounds %"class.HIR::TraitPath", ptr %755, i32 0, i32 1
  %757 = getelementptr inbounds %"class.HIR::GenericPath", ptr %756, i32 0, i32 1
  %758 = load ptr, ptr %71, align 8, !tbaa !5
  %759 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %758, i32 0, i32 0
  %760 = getelementptr inbounds %"class.HIR::TraitPath", ptr %759, i32 0, i32 1
  %761 = invoke noundef i32 @_ZNK3HIR5Trait23get_vtable_parent_indexERK4SpanRKNS_10PathParamsERKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(400) %750, ptr noundef nonnull align 8 dereferenceable(8) %753, ptr noundef nonnull align 8 dereferenceable(24) %757, ptr noundef nonnull align 8 dereferenceable(32) %760)
          to label %762 unwind label %784

762:                                              ; preds = %749
  store i32 %761, ptr %82, align 4, !tbaa !69
  br label %763

763:                                              ; preds = %762
  %764 = load i32, ptr %82, align 4, !tbaa !69
  %765 = icmp ne i32 %764, 0
  br i1 %765, label %792, label %766

766:                                              ; preds = %763
  %767 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %84) #7
  %768 = getelementptr inbounds %class.anon.437, ptr %84, i32 0, i32 0
  store ptr %77, ptr %768, align 8, !tbaa !5
  %769 = getelementptr inbounds %class.anon.437, ptr %84, i32 0, i32 1
  %770 = load ptr, ptr %71, align 8, !tbaa !5
  store ptr %770, ptr %769, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %83, ptr noundef nonnull align 8 dereferenceable(16) %84) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %767, ptr noundef %83)
          to label %771 unwind label %788

771:                                              ; preds = %766
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #7
  br label %792

772:                                              ; preds = %734
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %23, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %24, align 4
  br label %855

776:                                              ; preds = %747
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %23, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %24, align 4
  br label %854

780:                                              ; preds = %748
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %23, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %24, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %81) #7
  br label %854

784:                                              ; preds = %749
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %23, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %24, align 4
  br label %853

788:                                              ; preds = %766
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %23, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #7
  call void @llvm.lifetime.end.p0(i64 16, ptr %84) #7
  br label %853

792:                                              ; preds = %771, %763
  br label %793

793:                                              ; preds = %792
  br label %794

794:                                              ; preds = %793
  call void @llvm.lifetime.start.p0(i64 32, ptr %85) #7
  %795 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %86, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %796 unwind label %810

796:                                              ; preds = %794
  %797 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %88, i32 0, i32 0
  %798 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %797, ptr noundef nonnull align 8 dereferenceable(32) %798)
          to label %799 unwind label %814

799:                                              ; preds = %796
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %87, ptr noundef %88)
          to label %800 unwind label %818

800:                                              ; preds = %799
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %85, ptr noundef nonnull align 8 dereferenceable(40) %795, ptr noundef %86, ptr noundef %87)
          to label %801 unwind label %822

801:                                              ; preds = %800
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %87) #7
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #7
  call void @llvm.lifetime.start.p0(i64 48, ptr %89) #7
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(32) %85)
          to label %802 unwind label %828

802:                                              ; preds = %801
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %91, ptr noundef %92)
          to label %803 unwind label %832

803:                                              ; preds = %802
  %804 = load i32, ptr %82, align 4, !tbaa !69
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %90, ptr noundef %91, i32 noundef %804)
          to label %805 unwind label %836

805:                                              ; preds = %803
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %89, ptr noundef %90)
          to label %806 unwind label %840

806:                                              ; preds = %805
  %807 = load ptr, ptr %15, align 8, !tbaa !5
  %808 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %807, ptr noundef nonnull align 8 dereferenceable(48) %89)
          to label %809 unwind label %844

809:                                              ; preds = %806
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %89) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %89) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #7
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %898

810:                                              ; preds = %794
  %811 = landingpad { ptr, i32 }
          cleanup
  %812 = extractvalue { ptr, i32 } %811, 0
  store ptr %812, ptr %23, align 8
  %813 = extractvalue { ptr, i32 } %811, 1
  store i32 %813, ptr %24, align 4
  br label %852

814:                                              ; preds = %796
  %815 = landingpad { ptr, i32 }
          cleanup
  %816 = extractvalue { ptr, i32 } %815, 0
  store ptr %816, ptr %23, align 8
  %817 = extractvalue { ptr, i32 } %815, 1
  store i32 %817, ptr %24, align 4
  br label %827

818:                                              ; preds = %799
  %819 = landingpad { ptr, i32 }
          cleanup
  %820 = extractvalue { ptr, i32 } %819, 0
  store ptr %820, ptr %23, align 8
  %821 = extractvalue { ptr, i32 } %819, 1
  store i32 %821, ptr %24, align 4
  br label %826

822:                                              ; preds = %800
  %823 = landingpad { ptr, i32 }
          cleanup
  %824 = extractvalue { ptr, i32 } %823, 0
  store ptr %824, ptr %23, align 8
  %825 = extractvalue { ptr, i32 } %823, 1
  store i32 %825, ptr %24, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %87) #7
  br label %826

826:                                              ; preds = %822, %818
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %88) #7
  br label %827

827:                                              ; preds = %826, %814
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %86) #7
  br label %852

828:                                              ; preds = %801
  %829 = landingpad { ptr, i32 }
          cleanup
  %830 = extractvalue { ptr, i32 } %829, 0
  store ptr %830, ptr %23, align 8
  %831 = extractvalue { ptr, i32 } %829, 1
  store i32 %831, ptr %24, align 4
  br label %851

832:                                              ; preds = %802
  %833 = landingpad { ptr, i32 }
          cleanup
  %834 = extractvalue { ptr, i32 } %833, 0
  store ptr %834, ptr %23, align 8
  %835 = extractvalue { ptr, i32 } %833, 1
  store i32 %835, ptr %24, align 4
  br label %850

836:                                              ; preds = %803
  %837 = landingpad { ptr, i32 }
          cleanup
  %838 = extractvalue { ptr, i32 } %837, 0
  store ptr %838, ptr %23, align 8
  %839 = extractvalue { ptr, i32 } %837, 1
  store i32 %839, ptr %24, align 4
  br label %849

840:                                              ; preds = %805
  %841 = landingpad { ptr, i32 }
          cleanup
  %842 = extractvalue { ptr, i32 } %841, 0
  store ptr %842, ptr %23, align 8
  %843 = extractvalue { ptr, i32 } %841, 1
  store i32 %843, ptr %24, align 4
  br label %848

844:                                              ; preds = %806
  %845 = landingpad { ptr, i32 }
          cleanup
  %846 = extractvalue { ptr, i32 } %845, 0
  store ptr %846, ptr %23, align 8
  %847 = extractvalue { ptr, i32 } %845, 1
  store i32 %847, ptr %24, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %89) #7
  br label %848

848:                                              ; preds = %844, %840
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #7
  br label %849

849:                                              ; preds = %848, %836
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %91) #7
  br label %850

850:                                              ; preds = %849, %832
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #7
  br label %851

851:                                              ; preds = %850, %828
  call void @llvm.lifetime.end.p0(i64 48, ptr %89) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %85) #7
  br label %852

852:                                              ; preds = %851, %827, %810
  call void @llvm.lifetime.end.p0(i64 32, ptr %85) #7
  br label %853

853:                                              ; preds = %852, %788, %784
  call void @llvm.lifetime.end.p0(i64 4, ptr %82) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #7
  br label %854

854:                                              ; preds = %853, %780, %776
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %79) #7
  br label %855

855:                                              ; preds = %854, %772
  call void @llvm.lifetime.end.p0(i64 8, ptr %79) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %78) #7
  br label %951

856:                                              ; preds = %687
  call void @llvm.lifetime.start.p0(i64 48, ptr %93) #7
  %857 = load ptr, ptr %11, align 8, !tbaa !5
  %858 = load ptr, ptr %16, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %95, ptr noundef nonnull align 8 dereferenceable(8) %858)
          to label %859 unwind label %869

859:                                              ; preds = %856
  %860 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %97, i32 0, i32 0
  %861 = load ptr, ptr %14, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %860, ptr noundef nonnull align 8 dereferenceable(32) %861)
          to label %862 unwind label %873

862:                                              ; preds = %859
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %96, ptr noundef %97)
          to label %863 unwind label %877

863:                                              ; preds = %862
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %94, ptr noundef nonnull align 8 dereferenceable(40) %857, ptr noundef %95, ptr noundef %96)
          to label %864 unwind label %881

864:                                              ; preds = %863
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %93, ptr noundef %94)
          to label %865 unwind label %885

865:                                              ; preds = %864
  %866 = load ptr, ptr %15, align 8, !tbaa !5
  %867 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %866, ptr noundef nonnull align 8 dereferenceable(48) %93)
          to label %868 unwind label %889

868:                                              ; preds = %865
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %93) #7
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %96) #7
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %93) #7
  br label %898

869:                                              ; preds = %856
  %870 = landingpad { ptr, i32 }
          cleanup
  %871 = extractvalue { ptr, i32 } %870, 0
  store ptr %871, ptr %23, align 8
  %872 = extractvalue { ptr, i32 } %870, 1
  store i32 %872, ptr %24, align 4
  br label %897

873:                                              ; preds = %859
  %874 = landingpad { ptr, i32 }
          cleanup
  %875 = extractvalue { ptr, i32 } %874, 0
  store ptr %875, ptr %23, align 8
  %876 = extractvalue { ptr, i32 } %874, 1
  store i32 %876, ptr %24, align 4
  br label %896

877:                                              ; preds = %862
  %878 = landingpad { ptr, i32 }
          cleanup
  %879 = extractvalue { ptr, i32 } %878, 0
  store ptr %879, ptr %23, align 8
  %880 = extractvalue { ptr, i32 } %878, 1
  store i32 %880, ptr %24, align 4
  br label %895

881:                                              ; preds = %863
  %882 = landingpad { ptr, i32 }
          cleanup
  %883 = extractvalue { ptr, i32 } %882, 0
  store ptr %883, ptr %23, align 8
  %884 = extractvalue { ptr, i32 } %882, 1
  store i32 %884, ptr %24, align 4
  br label %894

885:                                              ; preds = %864
  %886 = landingpad { ptr, i32 }
          cleanup
  %887 = extractvalue { ptr, i32 } %886, 0
  store ptr %887, ptr %23, align 8
  %888 = extractvalue { ptr, i32 } %886, 1
  store i32 %888, ptr %24, align 4
  br label %893

889:                                              ; preds = %865
  %890 = landingpad { ptr, i32 }
          cleanup
  %891 = extractvalue { ptr, i32 } %890, 0
  store ptr %891, ptr %23, align 8
  %892 = extractvalue { ptr, i32 } %890, 1
  store i32 %892, ptr %24, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %93) #7
  br label %893

893:                                              ; preds = %889, %885
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %94) #7
  br label %894

894:                                              ; preds = %893, %881
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %96) #7
  br label %895

895:                                              ; preds = %894, %877
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %97) #7
  br label %896

896:                                              ; preds = %895, %873
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %95) #7
  br label %897

897:                                              ; preds = %896, %869
  call void @llvm.lifetime.end.p0(i64 48, ptr %93) #7
  br label %951

898:                                              ; preds = %868, %809
  br label %950

899:                                              ; preds = %684
  br label %900

900:                                              ; preds = %899
  %901 = load ptr, ptr %10, align 8, !tbaa !5
  %902 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %901, i32 0, i32 2
  %903 = load ptr, ptr %902, align 8, !tbaa !106
  %904 = load ptr, ptr %10, align 8, !tbaa !5
  %905 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %904, i32 0, i32 1
  %906 = load ptr, ptr %905, align 8, !tbaa !56
  %907 = load ptr, ptr %13, align 8, !tbaa !5
  %908 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %903, ptr noundef nonnull align 8 dereferenceable(8) %906, ptr noundef nonnull align 8 dereferenceable(8) %907)
          to label %909 unwind label %729

909:                                              ; preds = %900
  br i1 %908, label %919, label %910

910:                                              ; preds = %909
  %911 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #7
  %912 = getelementptr inbounds %class.anon.438, ptr %99, i32 0, i32 0
  %913 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %913, ptr %912, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %98, ptr noundef nonnull align 8 dereferenceable(8) %99) #7
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %911, ptr noundef %98)
          to label %914 unwind label %915

914:                                              ; preds = %910
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #7
  br label %919

915:                                              ; preds = %910
  %916 = landingpad { ptr, i32 }
          cleanup
  %917 = extractvalue { ptr, i32 } %916, 0
  store ptr %917, ptr %23, align 8
  %918 = extractvalue { ptr, i32 } %916, 1
  store i32 %918, ptr %24, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %98) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #7
  br label %951

919:                                              ; preds = %914, %909
  br label %920

920:                                              ; preds = %919
  br label %921

921:                                              ; preds = %920
  call void @llvm.lifetime.start.p0(i64 48, ptr %100) #7
  %922 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %102, ptr noundef nonnull align 8 dereferenceable(8) %922)
          to label %923 unwind label %931

923:                                              ; preds = %921
  %924 = load ptr, ptr %71, align 8, !tbaa !5
  %925 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %924, i32 0, i32 0
  invoke void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind writable sret(%"class.MIR::Constant") align 8 %101, ptr noundef %102, ptr noundef nonnull align 8 dereferenceable(144) %925)
          to label %926 unwind label %935

926:                                              ; preds = %923
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %100, ptr noundef %101)
          to label %927 unwind label %939

927:                                              ; preds = %926
  %928 = load ptr, ptr %15, align 8, !tbaa !5
  %929 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %928, ptr noundef nonnull align 8 dereferenceable(48) %100)
          to label %930 unwind label %943

930:                                              ; preds = %927
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #7
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %101) #7
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  call void @llvm.lifetime.end.p0(i64 48, ptr %100) #7
  br label %950

931:                                              ; preds = %921
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %23, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %24, align 4
  br label %949

935:                                              ; preds = %923
  %936 = landingpad { ptr, i32 }
          cleanup
  %937 = extractvalue { ptr, i32 } %936, 0
  store ptr %937, ptr %23, align 8
  %938 = extractvalue { ptr, i32 } %936, 1
  store i32 %938, ptr %24, align 4
  br label %948

939:                                              ; preds = %926
  %940 = landingpad { ptr, i32 }
          cleanup
  %941 = extractvalue { ptr, i32 } %940, 0
  store ptr %941, ptr %23, align 8
  %942 = extractvalue { ptr, i32 } %940, 1
  store i32 %942, ptr %24, align 4
  br label %947

943:                                              ; preds = %927
  %944 = landingpad { ptr, i32 }
          cleanup
  %945 = extractvalue { ptr, i32 } %944, 0
  store ptr %945, ptr %23, align 8
  %946 = extractvalue { ptr, i32 } %944, 1
  store i32 %946, ptr %24, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %100) #7
  br label %947

947:                                              ; preds = %943, %939
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %101) #7
  br label %948

948:                                              ; preds = %947, %935
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %102) #7
  br label %949

949:                                              ; preds = %948, %931
  call void @llvm.lifetime.end.p0(i64 48, ptr %100) #7
  br label %951

950:                                              ; preds = %930, %898
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  store i1 true, ptr %9, align 1
  store i32 1, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  br label %955

951:                                              ; preds = %949, %915, %897, %855, %729
  call void @llvm.lifetime.end.p0(i64 8, ptr %77) #7
  br label %952

952:                                              ; preds = %951, %728
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %72) #7
  br label %953

953:                                              ; preds = %952, %714
  call void @llvm.lifetime.end.p0(i64 8, ptr %72) #7
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  br label %966

954:                                              ; No predecessors!
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %647, !llvm.loop !107

955:                                              ; preds = %950, %651
  call void @llvm.lifetime.end.p0(i64 8, ptr %71) #7
  %956 = load i32, ptr %19, align 4
  switch i32 %956, label %959 [
    i32 73, label %957
  ]

957:                                              ; preds = %955
  br label %958

958:                                              ; preds = %957
  store i8 0, ptr %70, align 1, !tbaa !9
  br label %640, !llvm.loop !108

959:                                              ; preds = %955, %643
  call void @llvm.lifetime.end.p0(i64 1, ptr %70) #7
  %960 = load i32, ptr %19, align 4
  switch i32 %960, label %964 [
    i32 70, label %961
  ]

961:                                              ; preds = %959
  br label %962

962:                                              ; preds = %961, %638, %530, %152, %130
  br label %963

963:                                              ; preds = %962
  store i8 0, ptr %18, align 1, !tbaa !9
  br label %110, !llvm.loop !109

964:                                              ; preds = %959, %636, %528, %150, %113
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  %965 = load i32, ptr %19, align 4
  switch i32 %965, label %969 [
    i32 5, label %967
  ]

966:                                              ; preds = %953, %633, %525, %125
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #7
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  br label %975

967:                                              ; preds = %964
  br label %968

968:                                              ; preds = %967
  store i8 0, ptr %18, align 1, !tbaa !9
  br label %103, !llvm.loop !110

969:                                              ; preds = %964, %106
  call void @llvm.lifetime.end.p0(i64 1, ptr %18) #7
  %970 = load i32, ptr %19, align 4
  switch i32 %970, label %980 [
    i32 2, label %971
    i32 1, label %973
  ]

971:                                              ; preds = %969
  %972 = call ptr @__cxa_allocate_exception(i64 8) #7
  store ptr @.str, ptr %972, align 16, !tbaa !5
  call void @__cxa_throw(ptr %972, ptr @_ZTIPKc, ptr null) #9
  unreachable

973:                                              ; preds = %969
  %974 = load i1, ptr %9, align 1
  ret i1 %974

975:                                              ; preds = %966
  %976 = load ptr, ptr %23, align 8
  %977 = load i32, ptr %24, align 4
  %978 = insertvalue { ptr, i32 } poison, ptr %976, 0
  %979 = insertvalue { ptr, i32 } %978, i32 %977, 1
  resume { ptr, i32 } %979

980:                                              ; preds = %969, %511, %335
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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)) #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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 #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 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)) #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(172)) #1

declare noundef i32 @_ZNK3HIR5Trait23get_vtable_parent_indexERK4SpanRKNS_10PathParamsERKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) #1

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!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 = !{!17, !38, i64 212}
!17 = !{!"_ZTSN3HIR6StructE", !18, i64 0, !35, i64 96, !36, i64 104, !38, i64 136, !38, i64 140, !39, i64 144, !49, i64 200, !53, i64 248}
!18 = !{!"_ZTSN3HIR13GenericParamsE", !19, i64 0, !23, i64 24, !27, i64 48, !31, i64 72}
!19 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!23 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!27 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !30, i64 0}
!30 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!31 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !32, i64 0}
!32 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !33, i64 0}
!33 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !34, i64 0}
!34 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!35 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!36 = !{!"_ZTSN3HIR6Struct4DataE", !37, i64 0, !7, i64 8}
!37 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!38 = !{!"int", !7, i64 0}
!39 = !{!"_ZTSN3HIR13TraitMarkingsE", !10, i64 0, !10, i64 1, !10, i64 2, !40, i64 8}
!40 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !41, i64 0}
!41 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !42, i64 0}
!42 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !43, i64 0, !45, i64 8}
!43 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !44, i64 0}
!44 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!45 = !{!"_ZTSSt15_Rb_tree_header", !46, i64 0, !48, i64 32}
!46 = !{!"_ZTSSt18_Rb_tree_node_base", !47, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!47 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!48 = !{!"long", !7, i64 0}
!49 = !{!"_ZTSN3HIR14StructMarkingsE", !10, i64 0, !38, i64 4, !50, i64 8, !38, i64 12, !51, i64 16, !38, i64 20, !38, i64 24, !10, i64 28, !10, i64 29, !52, i64 32}
!50 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!51 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!52 = !{!"_ZTS4U128", !48, i64 0, !48, i64 8}
!53 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!54 = distinct !{!54, !14}
!55 = distinct !{!55, !14}
!56 = !{!57, !6, i64 8}
!57 = !{!"_ZTSN3MIR11TypeResolveE", !38, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !58, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !38, i64 112, !38, i64 116}
!58 = !{!"_ZTS9FmtLambda", !59, i64 0}
!59 = !{!"_ZTSSt8functionIFvRSoEE", !60, i64 0, !6, i64 24}
!60 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!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 = !{!38, !38, i64 0}
!70 = !{!48, !48, i64 0}
!71 = !{!72, !73, i64 16}
!72 = !{!"_ZTSN3MIR8Constant9Data_UintE", !52, i64 0, !73, i64 16}
!73 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!74 = distinct !{!74, !14}
!75 = distinct !{!75, !14}
!76 = !{!77, !6, i64 136}
!77 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !78, i64 0, !100, i64 144, !104, i64 168}
!78 = !{!"_ZTSN3HIR9TraitPathE", !79, i64 0, !85, i64 8, !92, i64 40, !97, i64 88, !6, i64 136}
!79 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !80, i64 0}
!80 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !81, i64 0}
!81 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !82, i64 0}
!82 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !83, i64 0}
!83 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !84, i64 0}
!84 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!85 = !{!"_ZTSN3HIR11GenericPathE", !86, i64 0, !88, i64 8}
!86 = !{!"_ZTSN3HIR10SimplePathE", !87, i64 0}
!87 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!88 = !{!"_ZTSN3HIR10PathParamsE", !89, i64 0, !90, i64 8, !91, i64 16}
!89 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!90 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!91 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!92 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !93, i64 0}
!93 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !94, i64 0}
!94 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !95, i64 0, !45, i64 8}
!95 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !96, i64 0}
!96 = !{!"_ZTSSt4lessI8RcStringE"}
!97 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !98, i64 0}
!98 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !99, i64 0}
!99 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !95, i64 0, !45, i64 8}
!100 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!104 = !{!"_ZTSN3HIR11LifetimeRefE", !38, i64 0}
!105 = !{!57, !6, i64 24}
!106 = !{!57, !6, i64 16}
!107 = distinct !{!107, !14}
!108 = distinct !{!108, !14}
!109 = distinct !{!109, !14}
!110 = distinct !{!110, !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"

%"class.HIR::TypeRef" = type { ptr }
%"struct.MIR::LValue" = type { %"class.MIR::LValue::Storage", %"class.std::vector.68" }
%"class.MIR::LValue::Storage" = type { i64 }
%"class.std::vector.68" = type { %"struct.std::_Vector_base.69" }
%"struct.std::_Vector_base.69" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::LValue::Wrapper, std::allocator<MIR::LValue::Wrapper>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::Constant" = type { i32, %"union.MIR::Constant::DataUnion" }
%"union.MIR::Constant::DataUnion" = type { %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"struct.MIR::Constant::Data_Uint" = type <{ %class.U128, i32, [4 x i8] }>
%class.U128 = type { i64, i64 }
%"class.MIR::RValue" = type { i32, %"union.MIR::RValue::DataUnion" }
%"union.MIR::RValue::DataUnion" = type { %"struct.MIR::RValue::Data_BinOp" }
%"struct.MIR::RValue::Data_BinOp" = type { %"class.MIR::Param", i32, %"class.MIR::Param" }
%"class.MIR::Param" = type { i32, %"union.MIR::Param::DataUnion" }
%"union.MIR::Param::DataUnion" = type { %"struct.MIR::Param::Data_Borrow" }
%"struct.MIR::Param::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.424 = type { ptr }
%class.anon.425 = type { ptr }
%class.anon.426 = type { ptr, ptr }
%class.anon.427 = type { ptr }
%class.anon.428 = type { ptr, ptr }
%class.anon.429 = type { ptr }
%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.19" }
%"class.HIR::ItemPath" = type { ptr, ptr, ptr, ptr, ptr, ptr, ptr }
%"class.std::vector.19" = type { %"struct.std::_Vector_base.20" }
%"struct.std::_Vector_base.20" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl" = type { %"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" }
%"struct.std::_Vector_base<const HIR::GenericParams *, std::allocator<const HIR::GenericParams *>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.430 = type { ptr, ptr }
%class.anon.436 = type { ptr, ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%class.anon.437 = type { ptr, ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%class.anon.438 = type { ptr }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.3 = external hidden unnamed_addr constant [39 x i8], align 1
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb = external hidden unnamed_addr constant [191 x i8], align 1
@__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb = external hidden unnamed_addr constant [31 x i8], align 1
@.str.16 = external hidden unnamed_addr constant [28 x i8], align 1
@.str.17 = external hidden unnamed_addr constant [24 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

declare 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 nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #2 align 2

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

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

declare void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #1

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef byval(%"struct.MIR::Constant::Data_Uint") align 8) local_unnamed_addr #4 align 2

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef) local_unnamed_addr #4 align 2

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind noalias writable sret(%"class.MIR::Constant") align 8, ptr noundef, ptr noundef nonnull align 8 dereferenceable(144)) local_unnamed_addr #4

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef, i32 noundef) local_unnamed_addr #4 align 2

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef) local_unnamed_addr #4 align 2

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

; Function Attrs: mustprogress uwtable
define dso_local noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull align 8 dereferenceable(8) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(1) %7) local_unnamed_addr #4 personality ptr @__gxx_personality_v0 {
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.424, align 8
  %11 = alloca %"class.std::function", align 8
  %12 = alloca %class.anon.425, align 8
  %13 = alloca %"class.std::function", align 8
  %14 = alloca %class.anon.426, align 8
  %15 = alloca %"class.std::function", align 8
  %16 = alloca %class.anon.427, align 8
  %17 = alloca %"class.std::function", align 8
  %18 = alloca %class.anon.428, align 8
  %19 = alloca %"class.std::function", align 8
  %20 = alloca %class.anon.429, align 8
  %21 = alloca %struct.MonomorphStatePtr, align 8
  %22 = alloca %struct.MonomorphStatePtr, align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.430, align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %"class.HIR::TypeRef", align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %"class.HIR::TypeRef", align 8
  %30 = alloca %"class.HIR::TypeRef", align 8
  %31 = alloca %"class.MIR::Param", align 8
  %32 = alloca %"class.MIR::Constant", align 8
  %33 = alloca %"struct.MIR::Constant::Data_Uint", align 8
  %34 = alloca ptr, align 8
  %35 = alloca %"class.std::function", align 8
  %36 = alloca %class.anon.436, align 8
  %37 = alloca %"class.HIR::TypeRef", align 8
  %38 = alloca %"class.HIR::GenericPath", align 8
  %39 = alloca %"struct.HIR::SimplePath", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca ptr, align 8
  %43 = alloca %"class.HIR::TypeRef", align 8
  %44 = alloca %"class.HIR::TypeRef", align 8
  %45 = alloca %"class.HIR::TypeRef", align 8
  %46 = alloca %"class.std::function", align 8
  %47 = alloca %class.anon.437, align 8
  %48 = alloca %"struct.MIR::LValue", align 8
  %49 = alloca %"class.HIR::TypeRef", align 8
  %50 = alloca %"class.MIR::RValue", align 8
  %51 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %52 = alloca %"class.MIR::Param", align 8
  %53 = alloca %"struct.MIR::LValue", align 8
  %54 = alloca %"struct.MIR::LValue", align 8
  %55 = alloca %"struct.MIR::LValue", align 8
  %56 = alloca %"class.MIR::Param", align 8
  %57 = alloca %"struct.MIR::LValue", align 8
  %58 = alloca %"class.HIR::TypeRef", align 8
  %59 = alloca %"class.MIR::RValue", align 8
  %60 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %61 = alloca %"class.std::function", align 8
  %62 = alloca %class.anon.438, align 8
  %63 = alloca %"class.MIR::Param", align 8
  %64 = alloca %"class.MIR::Constant", align 8
  %65 = alloca %"class.HIR::TypeRef", align 8
  %66 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %2)
  %67 = tail call noundef i32 @_ZNK3HIR8TypeData3tagEv(ptr noundef nonnull align 8 dereferenceable(184) %66)
  switch i32 %67, label %69 [
    i32 0, label %68
    i32 5, label %74
    i32 4, label %76
    i32 9, label %195
    i32 6, label %242
  ]

68:                                               ; preds = %8
  tail call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 670, ptr noundef nonnull @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #7
  unreachable

69:                                               ; preds = %8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr %2, ptr %10, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %9)
          to label %70 unwind label %72

70:                                               ; preds = %69
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  %71 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %71, align 16, !tbaa !5
  call void @__cxa_throw(ptr nonnull %71, ptr nonnull @_ZTIPKc, ptr null) #9
  unreachable

72:                                               ; preds = %69
  %73 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  br label %392

74:                                               ; preds = %8
  %75 = tail call noundef nonnull align 8 dereferenceable(12) ptr @_ZNK3HIR8TypeData10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %66)
  br label %393

76:                                               ; preds = %8
  %77 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %66)
  %78 = getelementptr inbounds i8, ptr %77, i64 88
  %79 = tail call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  br i1 %79, label %393, label %80, !llvm.loop !9

80:                                               ; preds = %76
  %81 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %82 = tail call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %81)
  br i1 %82, label %87, label %83

83:                                               ; preds = %80
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %12) #8
  store ptr %3, ptr %12, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %11)
          to label %84 unwind label %85

84:                                               ; preds = %83
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %87

85:                                               ; preds = %83
  %86 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %12) #8
  br label %392

87:                                               ; preds = %84, %80
  %88 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %89 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %88)
  %90 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %91 = getelementptr inbounds i8, ptr %89, i64 88
  %92 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %91)
  %93 = icmp eq i32 %90, %92
  br i1 %93, label %99, label %94

94:                                               ; preds = %87
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %14) #8
  store ptr %2, ptr %14, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %14, i64 8
  store ptr %3, ptr %95, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %13, ptr noundef nonnull align 8 dereferenceable(16) %14) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %13)
          to label %96 unwind label %97

96:                                               ; preds = %94
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %99

97:                                               ; preds = %94
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %13) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %14) #8
  br label %392

99:                                               ; preds = %87, %96
  %100 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  br i1 %100, label %105, label %101

101:                                              ; preds = %99
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  store ptr %2, ptr %16, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %15, ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %15)
          to label %102 unwind label %103

102:                                              ; preds = %101
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %105

103:                                              ; preds = %101
  %104 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %15) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %392

105:                                              ; preds = %99, %102
  %106 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %107 = load ptr, ptr %106, align 8, !tbaa !5
  %108 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %91)
  %109 = load ptr, ptr %108, align 8, !tbaa !5
  %110 = icmp eq ptr %107, %109
  br i1 %110, label %116, label %111

111:                                              ; preds = %105
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %18) #8
  store ptr %2, ptr %18, align 8, !tbaa !5
  %112 = getelementptr inbounds i8, ptr %18, i64 8
  store ptr %3, ptr %112, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %17, ptr noundef nonnull align 8 dereferenceable(16) %18) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %17)
          to label %113 unwind label %114

113:                                              ; preds = %111
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  br label %116

114:                                              ; preds = %111
  %115 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %17) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %18) #8
  br label %392

116:                                              ; preds = %113, %105
  %117 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %78)
  %118 = load ptr, ptr %117, align 8, !tbaa !5
  %119 = getelementptr inbounds i8, ptr %118, i64 212
  %120 = load i32, ptr %119, align 4, !tbaa !11
  %.not294 = icmp eq i32 %120, -1
  br i1 %.not294, label %121, label %125

121:                                              ; preds = %116
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %20) #8
  store ptr %2, ptr %20, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %19, ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %19)
          to label %122 unwind label %123

122:                                              ; preds = %121
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %125

123:                                              ; preds = %121
  %124 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %19) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %20) #8
  br label %392

125:                                              ; preds = %122, %116
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %21) #8
  %126 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %77)
  %127 = getelementptr inbounds i8, ptr %126, i64 8
  call void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef null, ptr noundef nonnull %127, ptr noundef null, ptr noundef null, ptr noundef null)
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %22) #8
  %128 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %89)
  %129 = getelementptr inbounds i8, ptr %128, i64 8
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %22, ptr noundef null, ptr noundef nonnull %129, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %.preheader.split.preheader unwind label %132

.preheader.split.preheader:                       ; preds = %125
  %130 = getelementptr inbounds i8, ptr %118, i64 104
  %131 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %130)
  switch i32 %131, label %.loopexit [
    i32 0, label %.split.us
    i32 1, label %.split335.us
    i32 2, label %.split337.us
    i32 3, label %.split340.us
  ], !llvm.loop !50

132:                                              ; preds = %125
  %133 = landingpad { ptr, i32 }
          cleanup
  br label %194

.split.us:                                        ; preds = %.preheader.split.preheader
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 694, ptr noundef nonnull @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #7
  unreachable

.split335.us:                                     ; preds = %.preheader.split.preheader
  %134 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %130)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #8
  store ptr @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #8
  store ptr %23, ptr %25, align 8, !tbaa !5
  %135 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %3, ptr %135, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %24)
          to label %136 unwind label %138

136:                                              ; preds = %.split335.us
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  %137 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %137, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %137, ptr nonnull @_ZTIPKc, ptr null) #9
          to label %394 unwind label %140

138:                                              ; preds = %.split335.us
  %139 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #8
  br label %142

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

142:                                              ; preds = %140, %138
  %.pn303 = phi { ptr, i32 } [ %141, %140 ], [ %139, %138 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #8
  br label %193

.split337.us:                                     ; preds = %.preheader.split.preheader
  %143 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %130)
  %144 = load i32, ptr %119, align 4, !tbaa !11
  %145 = zext i32 %144 to i64
  %146 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %143, i64 noundef %145)
          to label %147 unwind label %156

147:                                              ; preds = %.split337.us
  %148 = getelementptr inbounds i8, ptr %146, i64 16
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #8
  %149 = getelementptr inbounds i8, ptr %0, i64 8
  %150 = load ptr, ptr %149, align 8, !tbaa !51
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %150, ptr noundef nonnull align 8 dereferenceable(8) %148, i1 noundef zeroext false)
          to label %151 unwind label %158

151:                                              ; preds = %147
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  %152 = load ptr, ptr %149, align 8, !tbaa !51
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %27, ptr noundef nonnull align 8 dereferenceable(96) %22, ptr noundef nonnull align 8 dereferenceable(8) %152, ptr noundef nonnull align 8 dereferenceable(8) %148, i1 noundef zeroext false)
          to label %153 unwind label %160

153:                                              ; preds = %151
  %154 = invoke noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %155 unwind label %162

155:                                              ; preds = %153
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %192

156:                                              ; preds = %.split337.us
  %157 = landingpad { ptr, i32 }
          cleanup
  br label %193

158:                                              ; preds = %147
  %159 = landingpad { ptr, i32 }
          cleanup
  br label %165

160:                                              ; preds = %151
  %161 = landingpad { ptr, i32 }
          cleanup
  br label %164

162:                                              ; preds = %153
  %163 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %164

164:                                              ; preds = %162, %160
  %.pn299 = phi { ptr, i32 } [ %163, %162 ], [ %161, %160 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #8
  br label %165

165:                                              ; preds = %164, %158
  %.pn299.pn = phi { ptr, i32 } [ %.pn299, %164 ], [ %159, %158 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #8
  br label %193

.split340.us:                                     ; preds = %.preheader.split.preheader
  %166 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %130)
  %167 = load i32, ptr %119, align 4, !tbaa !11
  %168 = zext i32 %167 to i64
  %169 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %166, i64 noundef %168)
          to label %170 unwind label %179

170:                                              ; preds = %.split340.us
  %171 = getelementptr inbounds i8, ptr %169, i64 24
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  %172 = getelementptr inbounds i8, ptr %0, i64 8
  %173 = load ptr, ptr %172, align 8, !tbaa !51
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %173, ptr noundef nonnull align 8 dereferenceable(8) %171, i1 noundef zeroext false)
          to label %174 unwind label %181

174:                                              ; preds = %170
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %29) #8
  %175 = load ptr, ptr %172, align 8, !tbaa !51
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %29, ptr noundef nonnull align 8 dereferenceable(96) %22, ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull align 8 dereferenceable(8) %171, i1 noundef zeroext false)
          to label %176 unwind label %183

176:                                              ; preds = %174
  %177 = invoke noundef zeroext i1 @_Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull align 8 dereferenceable(8) %28, ptr noundef nonnull align 8 dereferenceable(8) %29, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 1 dereferenceable(1) %7)
          to label %178 unwind label %185

178:                                              ; preds = %176
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %192

179:                                              ; preds = %.split340.us
  %180 = landingpad { ptr, i32 }
          cleanup
  br label %193

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

183:                                              ; preds = %174
  %184 = landingpad { ptr, i32 }
          cleanup
  br label %187

185:                                              ; preds = %176
  %186 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %29) #8
  br label %187

187:                                              ; preds = %185, %183
  %.pn295 = phi { ptr, i32 } [ %186, %185 ], [ %184, %183 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %29) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %188

188:                                              ; preds = %187, %181
  %.pn295.pn = phi { ptr, i32 } [ %.pn295, %187 ], [ %182, %181 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %193

.loopexit:                                        ; preds = %.preheader.split.preheader
  %189 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %189, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %189, ptr nonnull @_ZTIPKc, ptr null) #9
          to label %394 unwind label %190

190:                                              ; preds = %.loopexit
  %191 = landingpad { ptr, i32 }
          cleanup
  br label %193

192:                                              ; preds = %155, %178
  %.15.ph = phi i1 [ %154, %155 ], [ %177, %178 ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %22) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %22) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #8
  br label %393, !llvm.loop !9

193:                                              ; preds = %142, %165, %156, %188, %179, %190
  %.pn306 = phi { ptr, i32 } [ %191, %190 ], [ %.pn303, %142 ], [ %.pn299.pn, %165 ], [ %157, %156 ], [ %.pn295.pn, %188 ], [ %180, %179 ]
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %22) #8
  br label %194

194:                                              ; preds = %193, %132
  %.pn306.pn = phi { ptr, i32 } [ %.pn306, %193 ], [ %133, %132 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %22) #8
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #8
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #8
  br label %392

195:                                              ; preds = %8
  %196 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR8TypeData8as_SliceEv(ptr noundef nonnull align 8 dereferenceable(184) %66)
  %197 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %198 = tail call noundef zeroext i1 @_ZNK3HIR8TypeData8is_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %197)
  %199 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  br i1 %198, label %200, label %226

200:                                              ; preds = %195
  %201 = tail call noundef nonnull align 8 dereferenceable(40) ptr @_ZNK3HIR8TypeData8as_ArrayEv(ptr noundef nonnull align 8 dereferenceable(184) %199)
  %202 = getelementptr inbounds i8, ptr %201, i64 8
  %203 = tail call noundef zeroext i1 @_ZNK3HIR9ArraySize8is_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %202)
  br i1 %203, label %213, label %204

204:                                              ; preds = %200
  %205 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  br i1 %205, label %206, label %393

206:                                              ; preds = %204
  %207 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !56
  %208 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %207, ptr noundef nonnull @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb)
  %209 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %208, ptr noundef nonnull @.str.16)
  %210 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_9ArraySizeE(ptr noundef nonnull align 8 dereferenceable(8) %209, ptr noundef nonnull align 8 dereferenceable(32) %202)
  %211 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull @_ZSt3decRSt8ios_base)
  %212 = tail call noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %211, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
  br label %393

213:                                              ; preds = %200
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %30) #8
  call void @_ZN3HIR7TypeRefC2ENS_8CoreTypeE(ptr noundef nonnull align 8 dereferenceable(8) %30, i32 noundef 0)
  %214 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %30)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %30) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %30) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %31) #8
  %215 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR9ArraySize8as_KnownEv(ptr noundef nonnull align 8 dereferenceable(32) %202)
  %216 = load i64, ptr %215, align 8, !tbaa !57
  call void @_ZN4U128C2Emm(ptr noundef nonnull align 8 dereferenceable(16) %33, i64 noundef %216, i64 noundef 0)
  %217 = getelementptr inbounds i8, ptr %33, i64 16
  store i32 0, ptr %217, align 8, !tbaa !58
  call void @_ZN3MIR8Constant9make_UintENS0_9Data_UintE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %32, ptr noundef nonnull byval(%"struct.MIR::Constant::Data_Uint") align 8 %33)
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %31, ptr noundef nonnull %32)
          to label %218 unwind label %221

218:                                              ; preds = %213
  %219 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %31)
          to label %220 unwind label %223

220:                                              ; preds = %218
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #8
  br label %393

221:                                              ; preds = %213
  %222 = landingpad { ptr, i32 }
          cleanup
  br label %225

223:                                              ; preds = %218
  %224 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %31) #8
  br label %225

225:                                              ; preds = %223, %221
  %.pn291 = phi { ptr, i32 } [ %224, %223 ], [ %222, %221 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %32) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %31) #8
  br label %392

226:                                              ; preds = %195
  %227 = tail call noundef zeroext i1 @_ZNK3HIR8TypeData10is_GenericEv(ptr noundef nonnull align 8 dereferenceable(184) %199)
  br i1 %227, label %393, label %228

228:                                              ; preds = %226
  %229 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %230 = tail call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %229)
  br i1 %230, label %231, label %236

231:                                              ; preds = %228
  %232 = tail call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %233 = tail call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %232)
  %234 = getelementptr inbounds i8, ptr %233, i64 88
  %235 = tail call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_OpaqueEv(ptr noundef nonnull align 8 dereferenceable(16) %234)
  br i1 %235, label %393, label %236

236:                                              ; preds = %228, %231
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %34) #8
  store ptr @__FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb, ptr %34, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %36) #8
  store ptr %34, ptr %36, align 8, !tbaa !5
  %237 = getelementptr inbounds i8, ptr %36, i64 8
  store ptr %3, ptr %237, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(16) %36) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %35)
          to label %238 unwind label %240

238:                                              ; preds = %236
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  %239 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %239, align 16, !tbaa !5
  call void @__cxa_throw(ptr nonnull %239, ptr nonnull @_ZTIPKc, ptr null) #9
  unreachable

240:                                              ; preds = %236
  %241 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %36) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %34) #8
  br label %392

242:                                              ; preds = %8
  %243 = tail call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %66)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %37) #8
  %244 = getelementptr inbounds i8, ptr %243, i64 8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %38) #8
  call void @_ZN3HIR10SimplePathC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39)
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %38, ptr noundef nonnull %39)
          to label %245 unwind label %268

245:                                              ; preds = %242
  %246 = invoke noundef zeroext i1 @_ZNK3HIR11GenericPathneERKS0_(ptr noundef nonnull align 8 dereferenceable(32) %244, ptr noundef nonnull align 8 dereferenceable(32) %38)
          to label %247 unwind label %270

247:                                              ; preds = %245
  br i1 %246, label %248, label %255

248:                                              ; preds = %247
  %249 = getelementptr inbounds i8, ptr %243, i64 136
  %250 = load ptr, ptr %249, align 8, !tbaa !61
  %251 = getelementptr inbounds i8, ptr %0, i64 8
  %252 = load ptr, ptr %251, align 8, !tbaa !51
  %253 = getelementptr inbounds i8, ptr %0, i64 24
  %254 = load ptr, ptr %253, align 8, !tbaa !90
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %37, ptr noundef nonnull align 8 dereferenceable(400) %250, ptr noundef nonnull align 8 dereferenceable(8) %252, ptr noundef nonnull align 8 dereferenceable(944) %254, ptr noundef nonnull align 8 dereferenceable(172) %243)
          to label %256 unwind label %270

255:                                              ; preds = %247
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %37)
          to label %256 unwind label %270

256:                                              ; preds = %255, %248
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %40) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %41, ptr noundef nonnull align 8 dereferenceable(8) %37)
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %40, i32 noundef 0, ptr noundef nonnull %41)
          to label %257 unwind label %273

257:                                              ; preds = %256
  %258 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIR7TypeRefaSEOS0_(ptr noundef nonnull align 8 dereferenceable(8) %6, ptr noundef nonnull align 8 dereferenceable(8) %40)
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %42) #8
  %259 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %260 = call noundef ptr @_ZNK3HIR8TypeData15opt_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %259)
  store ptr %260, ptr %42, align 8, !tbaa !5
  %.not = icmp eq ptr %260, null
  br i1 %.not, label %360, label %261

261:                                              ; preds = %257
  store i8 1, ptr %7, align 1, !tbaa !91
  %262 = getelementptr inbounds i8, ptr %260, i64 136
  %263 = load ptr, ptr %262, align 8, !tbaa !61
  %264 = getelementptr inbounds i8, ptr %243, i64 136
  %265 = load ptr, ptr %264, align 8, !tbaa !61
  %.not267 = icmp eq ptr %263, %265
  br i1 %.not267, label %335, label %266

266:                                              ; preds = %261
  %.not274 = icmp eq ptr %263, null
  br i1 %.not274, label %267, label %277

267:                                              ; preds = %266
  call void @__assert_fail(ptr noundef nonnull @.str.17, ptr noundef nonnull @.str.4, i32 noundef 758, ptr noundef nonnull @__PRETTY_FUNCTION__._Z30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_RKNS_6LValueERNS_5ParamERS6_Rb) #7
  unreachable

268:                                              ; preds = %242
  %269 = landingpad { ptr, i32 }
          cleanup
  br label %272

270:                                              ; preds = %255, %248, %245
  %271 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %272

272:                                              ; preds = %270, %268
  %.pn = phi { ptr, i32 } [ %271, %270 ], [ %269, %268 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %38) #8
  br label %391

273:                                              ; preds = %256
  %274 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %40) #8
  br label %390

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

277:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %43) #8
  %278 = getelementptr inbounds i8, ptr %0, i64 8
  %279 = load ptr, ptr %278, align 8, !tbaa !51
  %280 = getelementptr inbounds i8, ptr %0, i64 24
  %281 = load ptr, ptr %280, align 8, !tbaa !90
  invoke void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %43, ptr noundef nonnull align 8 dereferenceable(400) %263, ptr noundef nonnull align 8 dereferenceable(8) %279, ptr noundef nonnull align 8 dereferenceable(944) %281, ptr noundef nonnull align 8 dereferenceable(172) %260)
          to label %282 unwind label %292

282:                                              ; preds = %277
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %44) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %43)
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %44, i32 noundef 0, ptr noundef nonnull %45)
          to label %283 unwind label %294

283:                                              ; preds = %282
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  %284 = load ptr, ptr %278, align 8, !tbaa !51
  %285 = load ptr, ptr %42, align 8, !tbaa !5
  %286 = getelementptr inbounds i8, ptr %285, i64 16
  %287 = invoke noundef i32 @_ZNK3HIR5Trait23get_vtable_parent_indexERK4SpanRKNS_10PathParamsERKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(400) %263, ptr noundef nonnull align 8 dereferenceable(8) %284, ptr noundef nonnull align 8 dereferenceable(24) %286, ptr noundef nonnull align 8 dereferenceable(32) %244)
          to label %288 unwind label %296

288:                                              ; preds = %283
  %.not275 = icmp eq i32 %287, 0
  br i1 %.not275, label %289, label %300

289:                                              ; preds = %288
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %47) #8
  store ptr %42, ptr %47, align 8, !tbaa !5
  %290 = getelementptr inbounds i8, ptr %47, i64 8
  store ptr %243, ptr %290, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(16) %47) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %46)
          to label %291 unwind label %298

291:                                              ; preds = %289
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  br label %300

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

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

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

298:                                              ; preds = %289
  %299 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %47) #8
  br label %333

300:                                              ; preds = %291, %288
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %48) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %49, ptr noundef nonnull align 8 dereferenceable(8) %44)
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %301 unwind label %310

301:                                              ; preds = %300
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %50, ptr noundef nonnull %51)
          to label %302 unwind label %312

302:                                              ; preds = %301
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %48, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull %49, ptr noundef nonnull %50)
          to label %303 unwind label %314

303:                                              ; preds = %302
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %50) #8
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %52) #8
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %55, ptr noundef nonnull align 8 dereferenceable(32) %48)
          to label %304 unwind label %318

304:                                              ; preds = %303
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %54, ptr noundef nonnull %55)
          to label %305 unwind label %320

305:                                              ; preds = %304
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %53, ptr noundef nonnull %54, i32 noundef %287)
          to label %306 unwind label %322

306:                                              ; preds = %305
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %52, ptr noundef nonnull %53)
          to label %307 unwind label %324

307:                                              ; preds = %306
  %308 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %52)
          to label %309 unwind label %326

309:                                              ; preds = %307
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %52) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %388

310:                                              ; preds = %300
  %311 = landingpad { ptr, i32 }
          cleanup
  br label %317

312:                                              ; preds = %301
  %313 = landingpad { ptr, i32 }
          cleanup
  br label %316

314:                                              ; preds = %302
  %315 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %50) #8
  br label %316

316:                                              ; preds = %314, %312
  %.pn276 = phi { ptr, i32 } [ %315, %314 ], [ %313, %312 ]
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #8
  br label %317

317:                                              ; preds = %316, %310
  %.pn276.pn = phi { ptr, i32 } [ %.pn276, %316 ], [ %311, %310 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %49) #8
  br label %332

318:                                              ; preds = %303
  %319 = landingpad { ptr, i32 }
          cleanup
  br label %331

320:                                              ; preds = %304
  %321 = landingpad { ptr, i32 }
          cleanup
  br label %330

322:                                              ; preds = %305
  %323 = landingpad { ptr, i32 }
          cleanup
  br label %329

324:                                              ; preds = %306
  %325 = landingpad { ptr, i32 }
          cleanup
  br label %328

326:                                              ; preds = %307
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %52) #8
  br label %328

328:                                              ; preds = %326, %324
  %.pn279 = phi { ptr, i32 } [ %327, %326 ], [ %325, %324 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %329

329:                                              ; preds = %328, %322
  %.pn279.pn = phi { ptr, i32 } [ %.pn279, %328 ], [ %323, %322 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #8
  br label %330

330:                                              ; preds = %329, %320
  %.pn279.pn.pn = phi { ptr, i32 } [ %.pn279.pn, %329 ], [ %321, %320 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %55) #8
  br label %331

331:                                              ; preds = %330, %318
  %.pn279.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn, %330 ], [ %319, %318 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %52) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #8
  br label %332

332:                                              ; preds = %331, %317
  %.pn279.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn, %331 ], [ %.pn276.pn, %317 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %48) #8
  br label %333

333:                                              ; preds = %296, %298, %332, %294
  %.sink = phi ptr [ %45, %294 ], [ %44, %332 ], [ %44, %298 ], [ %44, %296 ]
  %.pn279.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %295, %294 ], [ %.pn279.pn.pn.pn.pn, %332 ], [ %299, %298 ], [ %297, %296 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %.sink) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %44) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %43) #8
  br label %334

334:                                              ; preds = %333, %292
  %.pn279.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn, %333 ], [ %293, %292 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %43) #8
  br label %389

335:                                              ; preds = %261
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %56) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %58, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %336 unwind label %343

336:                                              ; preds = %335
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %337 unwind label %345

337:                                              ; preds = %336
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %59, ptr noundef nonnull %60)
          to label %338 unwind label %347

338:                                              ; preds = %337
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %57, ptr noundef nonnull align 8 dereferenceable(40) %1, ptr noundef nonnull %58, ptr noundef nonnull %59)
          to label %339 unwind label %349

339:                                              ; preds = %338
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %56, ptr noundef nonnull %57)
          to label %340 unwind label %351

340:                                              ; preds = %339
  %341 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %342 unwind label %353

342:                                              ; preds = %340
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #8
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #8
  br label %388

343:                                              ; preds = %335
  %344 = landingpad { ptr, i32 }
          cleanup
  br label %359

345:                                              ; preds = %336
  %346 = landingpad { ptr, i32 }
          cleanup
  br label %358

347:                                              ; preds = %337
  %348 = landingpad { ptr, i32 }
          cleanup
  br label %357

349:                                              ; preds = %338
  %350 = landingpad { ptr, i32 }
          cleanup
  br label %356

351:                                              ; preds = %339
  %352 = landingpad { ptr, i32 }
          cleanup
  br label %355

353:                                              ; preds = %340
  %354 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #8
  br label %355

355:                                              ; preds = %353, %351
  %.pn268 = phi { ptr, i32 } [ %354, %353 ], [ %352, %351 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #8
  br label %356

356:                                              ; preds = %355, %349
  %.pn268.pn = phi { ptr, i32 } [ %.pn268, %355 ], [ %350, %349 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #8
  br label %357

357:                                              ; preds = %356, %347
  %.pn268.pn.pn = phi { ptr, i32 } [ %.pn268.pn, %356 ], [ %348, %347 ]
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %60) #8
  br label %358

358:                                              ; preds = %357, %345
  %.pn268.pn.pn.pn = phi { ptr, i32 } [ %.pn268.pn.pn, %357 ], [ %346, %345 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #8
  br label %359

359:                                              ; preds = %358, %343
  %.pn268.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn268.pn.pn.pn, %358 ], [ %344, %343 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #8
  br label %389

360:                                              ; preds = %257
  %361 = getelementptr inbounds i8, ptr %0, i64 16
  %362 = load ptr, ptr %361, align 8, !tbaa !92
  %363 = getelementptr inbounds i8, ptr %0, i64 8
  %364 = load ptr, ptr %363, align 8, !tbaa !51
  %365 = invoke noundef zeroext i1 @_ZNK18StaticTraitResolve13type_is_sizedERK4SpanRKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %362, ptr noundef nonnull align 8 dereferenceable(8) %364, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %366 unwind label %275

366:                                              ; preds = %360
  br i1 %365, label %371, label %367

367:                                              ; preds = %366
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %62) #8
  store ptr %3, ptr %62, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %61, ptr noundef nonnull align 8 dereferenceable(8) %62) #8
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %0, ptr noundef nonnull %61)
          to label %368 unwind label %369

368:                                              ; preds = %367
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %371

369:                                              ; preds = %367
  %370 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %62) #8
  br label %389

371:                                              ; preds = %368, %366
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %63) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %65, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %372 unwind label %377

372:                                              ; preds = %371
  invoke void @_ZN12_GLOBAL__N_113create_vtableEN3HIR7TypeRefERKNS0_9TraitPathE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Constant") align 8 %64, ptr noundef nonnull %65, ptr noundef nonnull align 8 dereferenceable(144) %243)
          to label %373 unwind label %379

373:                                              ; preds = %372
  invoke void @_ZN3MIR5ParamC2ENS_8ConstantE(ptr noundef nonnull align 8 dereferenceable(48) %63, ptr noundef nonnull %64)
          to label %374 unwind label %381

374:                                              ; preds = %373
  %375 = invoke noundef nonnull align 8 dereferenceable(48) ptr @_ZN3MIR5ParamaSEOS0_(ptr noundef nonnull align 8 dereferenceable(48) %5, ptr noundef nonnull align 8 dereferenceable(48) %63)
          to label %376 unwind label %383

376:                                              ; preds = %374
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #8
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %63) #8
  br label %388

377:                                              ; preds = %371
  %378 = landingpad { ptr, i32 }
          cleanup
  br label %387

379:                                              ; preds = %372
  %380 = landingpad { ptr, i32 }
          cleanup
  br label %386

381:                                              ; preds = %373
  %382 = landingpad { ptr, i32 }
          cleanup
  br label %385

383:                                              ; preds = %374
  %384 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #8
  br label %385

385:                                              ; preds = %383, %381
  %.pn263 = phi { ptr, i32 } [ %384, %383 ], [ %382, %381 ]
  call void @_ZN3MIR8ConstantD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %64) #8
  br label %386

386:                                              ; preds = %385, %379
  %.pn263.pn = phi { ptr, i32 } [ %.pn263, %385 ], [ %380, %379 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %65) #8
  br label %387

387:                                              ; preds = %386, %377
  %.pn263.pn.pn = phi { ptr, i32 } [ %.pn263.pn, %386 ], [ %378, %377 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %63) #8
  br label %389

388:                                              ; preds = %309, %342, %376
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %393

389:                                              ; preds = %387, %369, %359, %334, %275
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn, %334 ], [ %.pn268.pn.pn.pn.pn, %359 ], [ %.pn263.pn.pn, %387 ], [ %370, %369 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %42) #8
  br label %390

390:                                              ; preds = %389, %273
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn, %389 ], [ %274, %273 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %37) #8
  br label %391

391:                                              ; preds = %390, %272
  %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn, %390 ], [ %.pn, %272 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %37) #8
  br label %392

392:                                              ; preds = %225, %240, %85, %123, %194, %114, %103, %97, %391, %72
  %.pn312 = phi { ptr, i32 } [ %73, %72 ], [ %.pn279.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %391 ], [ %86, %85 ], [ %115, %114 ], [ %104, %103 ], [ %98, %97 ], [ %.pn306.pn, %194 ], [ %124, %123 ], [ %.pn291, %225 ], [ %241, %240 ]
  resume { ptr, i32 } %.pn312

393:                                              ; preds = %76, %192, %226, %231, %220, %206, %204, %74, %388
  %.27.ph = phi i1 [ false, %76 ], [ %.15.ph, %192 ], [ false, %226 ], [ false, %231 ], [ true, %220 ], [ false, %206 ], [ false, %204 ], [ false, %74 ], [ true, %388 ]
  ret i1 %.27.ph

394:                                              ; preds = %.loopexit, %136
  unreachable
}

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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 #2 align 2

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(8)) unnamed_addr #2 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 #4 align 2

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

; Function Attrs: mustprogress nounwind uwtable
declare hidden void @"_ZNSt8functionIFvRSoEEC2IZ30MIR_Cleanup_Unsize_GetMetadataRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_RKNS4_6LValueERNS4_5ParamERSB_RbE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32), ptr noundef nonnull align 8 dereferenceable(16)) unnamed_addr #2 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 #2 align 2

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

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

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

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

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

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

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

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

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

declare void @_ZNK3HIR5Trait15get_vtable_typeERK4SpanRKNS_5CrateERKNS_20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(944), ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #1

declare noundef i32 @_ZNK3HIR5Trait23get_vtable_parent_indexERK4SpanRKNS_10PathParamsERKNS_11GenericPathE(ptr noundef nonnull align 8 dereferenceable(400), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(24), ptr noundef nonnull align 8 dereferenceable(32)) local_unnamed_addr #1

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

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

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

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

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

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = distinct !{!9, !10}
!10 = !{!"llvm.loop.mustprogress"}
!11 = !{!12, !33, i64 212}
!12 = !{!"_ZTSN3HIR6StructE", !13, i64 0, !30, i64 96, !31, i64 104, !33, i64 136, !33, i64 140, !34, i64 144, !45, i64 200, !49, i64 248}
!13 = !{!"_ZTSN3HIR13GenericParamsE", !14, i64 0, !18, i64 24, !22, i64 48, !26, i64 72}
!14 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !16, i64 0}
!16 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !17, i64 0}
!17 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!18 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !19, i64 0}
!19 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !20, i64 0}
!20 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !21, i64 0}
!21 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!22 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !23, i64 0}
!23 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !24, i64 0}
!24 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !25, i64 0}
!25 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!26 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !27, i64 0}
!27 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !28, i64 0}
!28 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !29, i64 0}
!29 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!30 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!31 = !{!"_ZTSN3HIR6Struct4DataE", !32, i64 0, !7, i64 8}
!32 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!33 = !{!"int", !7, i64 0}
!34 = !{!"_ZTSN3HIR13TraitMarkingsE", !35, i64 0, !35, i64 1, !35, i64 2, !36, i64 8}
!35 = !{!"bool", !7, i64 0}
!36 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !37, i64 0}
!37 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !38, i64 0}
!38 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !39, i64 0, !41, i64 8}
!39 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !40, i64 0}
!40 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!41 = !{!"_ZTSSt15_Rb_tree_header", !42, i64 0, !44, i64 32}
!42 = !{!"_ZTSSt18_Rb_tree_node_base", !43, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!43 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!44 = !{!"long", !7, i64 0}
!45 = !{!"_ZTSN3HIR14StructMarkingsE", !35, i64 0, !33, i64 4, !46, i64 8, !33, i64 12, !47, i64 16, !33, i64 20, !33, i64 24, !35, i64 28, !35, i64 29, !48, i64 32}
!46 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!47 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!48 = !{!"_ZTS4U128", !44, i64 0, !44, i64 8}
!49 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!50 = distinct !{!50, !10}
!51 = !{!52, !6, i64 8}
!52 = !{!"_ZTSN3MIR11TypeResolveE", !33, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !53, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !33, i64 112, !33, i64 116}
!53 = !{!"_ZTS9FmtLambda", !54, i64 0}
!54 = !{!"_ZTSSt8functionIFvRSoEE", !55, i64 0, !6, i64 24}
!55 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!56 = !{!33, !33, i64 0}
!57 = !{!44, !44, i64 0}
!58 = !{!59, !60, i64 16}
!59 = !{!"_ZTSN3MIR8Constant9Data_UintE", !48, i64 0, !60, i64 16}
!60 = !{!"_ZTSN3HIR8CoreTypeE", !7, i64 0}
!61 = !{!62, !6, i64 136}
!62 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !63, i64 0, !85, i64 144, !89, i64 168}
!63 = !{!"_ZTSN3HIR9TraitPathE", !64, i64 0, !70, i64 8, !77, i64 40, !82, i64 88, !6, i64 136}
!64 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !65, i64 0}
!65 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !66, i64 0}
!66 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !67, i64 0}
!67 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !68, i64 0}
!68 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !69, i64 0}
!69 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!70 = !{!"_ZTSN3HIR11GenericPathE", !71, i64 0, !73, i64 8}
!71 = !{!"_ZTSN3HIR10SimplePathE", !72, i64 0}
!72 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!73 = !{!"_ZTSN3HIR10PathParamsE", !74, i64 0, !75, i64 8, !76, i64 16}
!74 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!75 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!76 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!77 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !78, i64 0}
!78 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !79, i64 0}
!79 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !80, i64 0, !41, i64 8}
!80 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !81, i64 0}
!81 = !{!"_ZTSSt4lessI8RcStringE"}
!82 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !83, i64 0}
!83 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !84, i64 0}
!84 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !80, i64 0, !41, i64 8}
!85 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !86, i64 0}
!86 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !87, i64 0}
!87 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !88, i64 0}
!88 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!89 = !{!"_ZTSN3HIR11LifetimeRefE", !33, i64 0}
!90 = !{!52, !6, i64 24}
!91 = !{!35, !35, i64 0}
!92 = !{!52, !6, i64 16}


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