; 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::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.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.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.439 = type { ptr, ptr, ptr }
%class.anon.440 = type { ptr, ptr }
%class.anon.441 = type { i8 }
%class.anon.443 = type { ptr, ptr }
%class.anon.444 = type { ptr, ptr }
%class.anon.445 = 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.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.446 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%class.anon.447 = type { ptr, ptr }
%class.anon.448 = type { ptr, ptr }
%class.anon.449 = type { ptr, ptr }
%class.anon.450 = type { i8 }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%class.anon.452 = type { ptr, ptr, 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 }
%class.U128 = type { i64, i64 }
%"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.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 }
%"struct.std::pair.434" = type { %class.RcString, %"struct.HIR::VisEnt" }
%"struct.HIR::TypeData::Data_Borrow" = type { %"struct.HIR::LifetimeRef", i32, %"class.HIR::TypeRef" }
%"struct.HIR::LifetimeRef" = type { i32 }
%"struct.HIR::TypeData::Data_Pointer" = type { i32, %"class.HIR::TypeRef" }

@.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
@__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE = external hidden unnamed_addr constant [145 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64)

declare void @__cxa_throw(ptr, ptr, ptr)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) #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) #3 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)) #3 align 2

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca ptr, align 8
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca %class.TraceLog, align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.439, align 8
  %16 = alloca ptr, align 8
  %17 = alloca i32, align 4
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.440, align 8
  %20 = alloca ptr, align 8
  %21 = alloca ptr, align 8
  %22 = alloca %"class.std::function", align 8
  %23 = alloca %class.anon.441, align 1
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.443, align 8
  %26 = alloca %"class.std::function", align 8
  %27 = alloca %class.anon.444, align 8
  %28 = alloca ptr, align 8
  %29 = alloca %"class.std::function", align 8
  %30 = alloca %class.anon.445, align 8
  %31 = alloca %struct.MonomorphStatePtr, align 8
  %32 = alloca %struct.MonomorphStatePtr, align 8
  %33 = alloca %"class.std::vector.92", align 8
  %34 = alloca i8, align 1
  %35 = alloca i32, align 4
  %36 = alloca ptr, align 8
  %37 = alloca i8, align 1
  %38 = alloca ptr, align 8
  %39 = alloca ptr, align 8
  %40 = alloca %"class.std::function", align 8
  %41 = alloca %class.anon.446, align 8
  %42 = alloca i8, align 1
  %43 = alloca ptr, align 8
  %44 = alloca i32, align 4
  %45 = alloca %"class.HIR::TypeRef", align 8
  %46 = alloca %"class.HIR::TypeRef", align 8
  %47 = alloca %"class.MIR::RValue", align 8
  %48 = alloca %"struct.MIR::LValue", align 8
  %49 = alloca %"struct.MIR::LValue", align 8
  %50 = alloca %"struct.MIR::LValue", align 8
  %51 = alloca %"class.HIR::TypeRef", align 8
  %52 = alloca %"class.MIR::RValue", align 8
  %53 = alloca %"class.MIR::Param", align 8
  %54 = alloca %"struct.MIR::LValue", align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %"class.MIR::RValue", align 8
  %57 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %58 = alloca %"struct.MIR::LValue", align 8
  %59 = alloca %"class.HIR::TypeRef", align 8
  %60 = alloca %"class.MIR::RValue", align 8
  %61 = alloca %"class.MIR::Param", align 8
  %62 = alloca %"struct.MIR::LValue", align 8
  %63 = alloca %"class.MIR::Param", align 8
  %64 = alloca %"struct.MIR::LValue", align 8
  %65 = alloca %"struct.MIR::LValue", align 8
  %66 = alloca i8, align 1
  %67 = alloca ptr, align 8
  %68 = alloca i32, align 4
  %69 = alloca %"class.HIR::TypeRef", align 8
  %70 = alloca %"class.HIR::TypeRef", align 8
  %71 = alloca %"class.MIR::RValue", align 8
  %72 = alloca %"struct.MIR::LValue", align 8
  %73 = alloca %"struct.MIR::LValue", align 8
  %74 = alloca %"struct.MIR::LValue", align 8
  %75 = alloca %"class.HIR::TypeRef", align 8
  %76 = alloca %"class.MIR::Statement", align 8
  %77 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %78 = alloca %"class.MIR::Param", align 8
  %79 = alloca %"struct.MIR::LValue", align 8
  %80 = alloca %"class.HIR::TypeRef", align 8
  %81 = alloca %"class.MIR::RValue", align 8
  %82 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %83 = alloca %"struct.MIR::LValue", align 8
  %84 = alloca %"class.HIR::TypeRef", align 8
  %85 = alloca %"class.MIR::RValue", align 8
  %86 = alloca %"class.MIR::Param", align 8
  %87 = alloca %"struct.MIR::LValue", align 8
  %88 = alloca %"class.MIR::Param", align 8
  %89 = alloca %"struct.MIR::LValue", align 8
  %90 = alloca %"struct.MIR::LValue", align 8
  %91 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %92 = alloca %"class.std::function", align 8
  %93 = alloca %class.anon.447, align 8
  %94 = alloca ptr, align 8
  %95 = alloca %"struct.MIR::LValue", align 8
  %96 = alloca %"class.std::function", align 8
  %97 = alloca %class.anon.448, align 8
  %98 = alloca ptr, align 8
  %99 = alloca ptr, align 8
  %100 = alloca %"struct.MIR::LValue", align 8
  %101 = alloca %"class.std::function", align 8
  %102 = alloca %class.anon.449, align 8
  %103 = alloca %"class.std::function", align 8
  %104 = alloca %class.anon.450, align 1
  %105 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %106 = alloca ptr, align 8
  %107 = alloca %"class.std::function", align 8
  %108 = alloca %class.anon.452, align 8
  store ptr %0, ptr %7, align 8
  store ptr %1, ptr %8, align 8, !tbaa !5
  store ptr %2, ptr %9, align 8, !tbaa !5
  store ptr %3, ptr %10, align 8, !tbaa !5
  store ptr %4, ptr %11, align 8, !tbaa !5
  store ptr %5, ptr %12, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %13) #9
  %109 = call noundef zeroext i1 @_Z13debug_enabledv()
  %110 = zext i1 %109 to i64
  %111 = select i1 %109, ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr %15) #9
  %112 = getelementptr inbounds %class.anon.439, ptr %15, i32 0, i32 0
  %113 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %113, ptr %112, align 8, !tbaa !5
  %114 = getelementptr inbounds %class.anon.439, ptr %15, i32 0, i32 1
  %115 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %115, ptr %114, align 8, !tbaa !5
  %116 = getelementptr inbounds %class.anon.439, ptr %15, i32 0, i32 2
  store ptr %5, ptr %116, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(24) %15)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %13, ptr noundef %111, ptr noundef %14)
          to label %117 unwind label %137

117:                                              ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  %118 = load ptr, ptr %10, align 8, !tbaa !5
  %119 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %118)
          to label %120 unwind label %141

120:                                              ; preds = %117
  %121 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %119)
          to label %122 unwind label %141

122:                                              ; preds = %120
  br i1 %121, label %123, label %863

123:                                              ; preds = %122
  br label %124

124:                                              ; preds = %123
  %125 = load ptr, ptr %11, align 8, !tbaa !5
  %126 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %125)
          to label %127 unwind label %141

127:                                              ; preds = %124
  %128 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %126)
          to label %129 unwind label %141

129:                                              ; preds = %127
  br i1 %128, label %149, label %130

130:                                              ; preds = %129
  %131 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %19) #9
  %132 = getelementptr inbounds %class.anon.440, ptr %19, i32 0, i32 0
  %133 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %133, ptr %132, align 8, !tbaa !5
  %134 = getelementptr inbounds %class.anon.440, ptr %19, i32 0, i32 1
  %135 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %135, ptr %134, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(16) %19) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %131, ptr noundef %18)
          to label %136 unwind label %145

136:                                              ; preds = %130
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  br label %149

137:                                              ; preds = %6
  %138 = landingpad { ptr, i32 }
          cleanup
  %139 = extractvalue { ptr, i32 } %138, 0
  store ptr %139, ptr %16, align 8
  %140 = extractvalue { ptr, i32 } %138, 1
  store i32 %140, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %15) #9
  br label %1062

141:                                              ; preds = %1058, %921, %918, %914, %911, %873, %870, %866, %863, %127, %124, %120, %117
  %142 = landingpad { ptr, i32 }
          cleanup
  %143 = extractvalue { ptr, i32 } %142, 0
  store ptr %143, ptr %16, align 8
  %144 = extractvalue { ptr, i32 } %142, 1
  store i32 %144, ptr %17, align 4
  br label %1061

145:                                              ; preds = %130
  %146 = landingpad { ptr, i32 }
          cleanup
  %147 = extractvalue { ptr, i32 } %146, 0
  store ptr %147, ptr %16, align 8
  %148 = extractvalue { ptr, i32 } %146, 1
  store i32 %148, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %19) #9
  br label %1061

149:                                              ; preds = %136, %129
  br label %150

150:                                              ; preds = %149
  br label %151

151:                                              ; preds = %150
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #9
  %152 = load ptr, ptr %10, align 8, !tbaa !5
  %153 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %152)
          to label %154 unwind label %170

154:                                              ; preds = %151
  %155 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %153)
          to label %156 unwind label %170

156:                                              ; preds = %154
  store ptr %155, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %21) #9
  %157 = load ptr, ptr %11, align 8, !tbaa !5
  %158 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %157)
          to label %159 unwind label %174

159:                                              ; preds = %156
  %160 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %158)
          to label %161 unwind label %174

161:                                              ; preds = %159
  store ptr %160, ptr %21, align 8, !tbaa !5
  br label %162

162:                                              ; preds = %161
  %163 = load ptr, ptr %20, align 8, !tbaa !5
  %164 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %163, i32 0, i32 1
  %165 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %164)
          to label %166 unwind label %174

166:                                              ; preds = %162
  br i1 %165, label %182, label %167

167:                                              ; preds = %166
  %168 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %23) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 1 dereferenceable(1) %23) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %168, ptr noundef %22)
          to label %169 unwind label %178

169:                                              ; preds = %167
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %23) #9
  br label %182

170:                                              ; preds = %154, %151
  %171 = landingpad { ptr, i32 }
          cleanup
  %172 = extractvalue { ptr, i32 } %171, 0
  store ptr %172, ptr %16, align 8
  %173 = extractvalue { ptr, i32 } %171, 1
  store i32 %173, ptr %17, align 4
  br label %862

174:                                              ; preds = %213, %209, %189, %185, %162, %159, %156
  %175 = landingpad { ptr, i32 }
          cleanup
  %176 = extractvalue { ptr, i32 } %175, 0
  store ptr %176, ptr %16, align 8
  %177 = extractvalue { ptr, i32 } %175, 1
  store i32 %177, ptr %17, align 4
  br label %861

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

182:                                              ; preds = %169, %166
  br label %183

183:                                              ; preds = %182
  br label %184

184:                                              ; preds = %183
  br label %185

185:                                              ; preds = %184
  %186 = load ptr, ptr %20, align 8, !tbaa !5
  %187 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %186, i32 0, i32 1
  %188 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %187)
          to label %189 unwind label %174

189:                                              ; preds = %185
  %190 = load ptr, ptr %21, align 8, !tbaa !5
  %191 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %190, i32 0, i32 1
  %192 = invoke noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %191)
          to label %193 unwind label %174

193:                                              ; preds = %189
  %194 = icmp eq i32 %188, %192
  br i1 %194, label %206, label %195

195:                                              ; preds = %193
  %196 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %25) #9
  %197 = getelementptr inbounds %class.anon.443, ptr %25, i32 0, i32 0
  %198 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %198, ptr %197, align 8, !tbaa !5
  %199 = getelementptr inbounds %class.anon.443, ptr %25, i32 0, i32 1
  %200 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %200, ptr %199, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %196, ptr noundef %24)
          to label %201 unwind label %202

201:                                              ; preds = %195
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  br label %206

202:                                              ; preds = %195
  %203 = landingpad { ptr, i32 }
          cleanup
  %204 = extractvalue { ptr, i32 } %203, 0
  store ptr %204, ptr %16, align 8
  %205 = extractvalue { ptr, i32 } %203, 1
  store i32 %205, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %25) #9
  br label %861

206:                                              ; preds = %201, %193
  br label %207

207:                                              ; preds = %206
  br label %208

208:                                              ; preds = %207
  br label %209

209:                                              ; preds = %208
  %210 = load ptr, ptr %20, align 8, !tbaa !5
  %211 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %210, i32 0, i32 1
  %212 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %211)
          to label %213 unwind label %174

213:                                              ; preds = %209
  %214 = load ptr, ptr %212, align 8, !tbaa !5
  %215 = load ptr, ptr %21, align 8, !tbaa !5
  %216 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %215, i32 0, i32 1
  %217 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %216)
          to label %218 unwind label %174

218:                                              ; preds = %213
  %219 = load ptr, ptr %217, align 8, !tbaa !5
  %220 = icmp eq ptr %214, %219
  br i1 %220, label %232, label %221

221:                                              ; preds = %218
  %222 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %27) #9
  %223 = getelementptr inbounds %class.anon.444, ptr %27, i32 0, i32 0
  %224 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %224, ptr %223, align 8, !tbaa !5
  %225 = getelementptr inbounds %class.anon.444, ptr %27, i32 0, i32 1
  %226 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %226, ptr %225, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %26, ptr noundef nonnull align 8 dereferenceable(16) %27) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %222, ptr noundef %26)
          to label %227 unwind label %228

227:                                              ; preds = %221
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %232

228:                                              ; preds = %221
  %229 = landingpad { ptr, i32 }
          cleanup
  %230 = extractvalue { ptr, i32 } %229, 0
  store ptr %230, ptr %16, align 8
  %231 = extractvalue { ptr, i32 } %229, 1
  store i32 %231, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %27) #9
  br label %861

232:                                              ; preds = %227, %218
  br label %233

233:                                              ; preds = %232
  br label %234

234:                                              ; preds = %233
  call void @llvm.lifetime.start.p0(i64 8, ptr %28) #9
  %235 = load ptr, ptr %20, align 8, !tbaa !5
  %236 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %235, i32 0, i32 1
  %237 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %236)
          to label %238 unwind label %251

238:                                              ; preds = %234
  %239 = load ptr, ptr %237, align 8, !tbaa !5
  store ptr %239, ptr %28, align 8, !tbaa !5
  br label %240

240:                                              ; preds = %238
  %241 = load ptr, ptr %28, align 8, !tbaa !5
  %242 = getelementptr inbounds %"class.HIR::Struct", ptr %241, i32 0, i32 7
  %243 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %242, i32 0, i32 5
  %244 = load i32, ptr %243, align 4, !tbaa !9
  %245 = icmp ne i32 %244, -1
  br i1 %245, label %259, label %246

246:                                              ; preds = %240
  %247 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %30) #9
  %248 = getelementptr inbounds %class.anon.445, ptr %30, i32 0, i32 0
  %249 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %249, ptr %248, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %29, ptr noundef nonnull align 8 dereferenceable(8) %30) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %247, ptr noundef %29)
          to label %250 unwind label %255

250:                                              ; preds = %246
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %259

251:                                              ; preds = %234
  %252 = landingpad { ptr, i32 }
          cleanup
  %253 = extractvalue { ptr, i32 } %252, 0
  store ptr %253, ptr %16, align 8
  %254 = extractvalue { ptr, i32 } %252, 1
  store i32 %254, ptr %17, align 4
  br label %860

255:                                              ; preds = %246
  %256 = landingpad { ptr, i32 }
          cleanup
  %257 = extractvalue { ptr, i32 } %256, 0
  store ptr %257, ptr %16, align 8
  %258 = extractvalue { ptr, i32 } %256, 1
  store i32 %258, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %30) #9
  br label %860

259:                                              ; preds = %250, %240
  br label %260

260:                                              ; preds = %259
  br label %261

261:                                              ; preds = %260
  call void @llvm.lifetime.start.p0(i64 128, ptr %31) #9
  %262 = load ptr, ptr %20, align 8, !tbaa !5
  %263 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %262, i32 0, i32 0
  %264 = getelementptr inbounds %"class.HIR::Path", ptr %263, i32 0, i32 0
  %265 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %264)
          to label %266 unwind label %280

266:                                              ; preds = %261
  %267 = getelementptr inbounds %"class.HIR::GenericPath", ptr %265, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %31, ptr noundef null, ptr noundef %267, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %268 unwind label %280

268:                                              ; preds = %266
  call void @llvm.lifetime.start.p0(i64 128, ptr %32) #9
  %269 = load ptr, ptr %21, align 8, !tbaa !5
  %270 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %269, i32 0, i32 0
  %271 = getelementptr inbounds %"class.HIR::Path", ptr %270, i32 0, i32 0
  %272 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %271)
          to label %273 unwind label %284

273:                                              ; preds = %268
  %274 = getelementptr inbounds %"class.HIR::GenericPath", ptr %272, i32 0, i32 1
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %32, ptr noundef null, ptr noundef %274, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %275 unwind label %284

275:                                              ; preds = %273
  call void @llvm.lifetime.start.p0(i64 24, ptr %33) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.start.p0(i64 1, ptr %34) #9
  store i8 1, ptr %34, align 1, !tbaa !48
  br label %276

276:                                              ; preds = %838, %275
  %277 = load i8, ptr %34, align 1, !tbaa !48, !range !49, !noundef !50
  %278 = trunc i8 %277 to i1
  br i1 %278, label %288, label %279

279:                                              ; preds = %276
  store i32 12, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  br label %839

280:                                              ; preds = %266, %261
  %281 = landingpad { ptr, i32 }
          cleanup
  %282 = extractvalue { ptr, i32 } %281, 0
  store ptr %282, ptr %16, align 8
  %283 = extractvalue { ptr, i32 } %281, 1
  store i32 %283, ptr %17, align 4
  br label %859

284:                                              ; preds = %273, %268
  %285 = landingpad { ptr, i32 }
          cleanup
  %286 = extractvalue { ptr, i32 } %285, 0
  store ptr %286, ptr %16, align 8
  %287 = extractvalue { ptr, i32 } %285, 1
  store i32 %287, ptr %17, align 4
  br label %858

288:                                              ; preds = %276
  call void @llvm.lifetime.start.p0(i64 8, ptr %36) #9
  %289 = load ptr, ptr %28, align 8, !tbaa !5
  %290 = getelementptr inbounds %"class.HIR::Struct", ptr %289, i32 0, i32 3
  store ptr %290, ptr %36, align 8, !tbaa !5
  br label %291

291:                                              ; preds = %835, %288
  %292 = load i8, ptr %34, align 1, !tbaa !48, !range !49, !noundef !50
  %293 = trunc i8 %292 to i1
  br i1 %293, label %295, label %294

294:                                              ; preds = %291
  store i32 15, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  br label %837

295:                                              ; preds = %291
  %296 = load ptr, ptr %36, align 8, !tbaa !5
  %297 = invoke noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %296)
          to label %298 unwind label %299

298:                                              ; preds = %295
  switch i32 %297, label %834 [
    i32 0, label %303
    i32 1, label %304
    i32 2, label %346
    i32 3, label %578
  ]

299:                                              ; preds = %295
  %300 = landingpad { ptr, i32 }
          cleanup
  %301 = extractvalue { ptr, i32 } %300, 0
  store ptr %301, ptr %16, align 8
  %302 = extractvalue { ptr, i32 } %300, 1
  store i32 %302, ptr %17, align 4
  br label %836

303:                                              ; preds = %298
  call void @__assert_fail(ptr noundef @.str.3, ptr noundef @.str.4, i32 noundef 840, ptr noundef @__PRETTY_FUNCTION__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE) #10
  unreachable

304:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 1, ptr %37) #9
  store i8 1, ptr %37, align 1, !tbaa !48
  br label %305

305:                                              ; preds = %344, %304
  %306 = load i8, ptr %37, align 1, !tbaa !48, !range !49, !noundef !50
  %307 = trunc i8 %306 to i1
  br i1 %307, label %309, label %308

308:                                              ; preds = %305
  store i32 19, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %345

309:                                              ; preds = %305
  call void @llvm.lifetime.start.p0(i64 8, ptr %38) #9
  %310 = load ptr, ptr %36, align 8, !tbaa !5
  %311 = invoke noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %310)
          to label %312 unwind label %318

312:                                              ; preds = %309
  store ptr %311, ptr %38, align 8, !tbaa !5
  br label %313

313:                                              ; preds = %341, %312
  %314 = load ptr, ptr %38, align 8, !tbaa !5
  %315 = load i8, ptr %37, align 1, !tbaa !48, !range !49, !noundef !50
  %316 = trunc i8 %315 to i1
  br i1 %316, label %322, label %317

317:                                              ; preds = %313
  store i32 22, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  br label %343

318:                                              ; preds = %309
  %319 = landingpad { ptr, i32 }
          cleanup
  %320 = extractvalue { ptr, i32 } %319, 0
  store ptr %320, ptr %16, align 8
  %321 = extractvalue { ptr, i32 } %319, 1
  store i32 %321, ptr %17, align 4
  br label %342

322:                                              ; preds = %313
  br label %323

323:                                              ; preds = %322
  call void @llvm.lifetime.start.p0(i64 8, ptr %39) #9
  store ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr %39, align 8, !tbaa !5
  %324 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %41) #9
  %325 = getelementptr inbounds %class.anon.446, ptr %41, i32 0, i32 0
  store ptr %39, ptr %325, align 8, !tbaa !5
  %326 = getelementptr inbounds %class.anon.446, ptr %41, i32 0, i32 1
  %327 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %327, ptr %326, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %40, ptr noundef nonnull align 8 dereferenceable(16) %41) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %324, ptr noundef %40)
          to label %328 unwind label %330

328:                                              ; preds = %323
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  %329 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %329, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %329, ptr @_ZTIPKc, ptr null) #11
          to label %1068 unwind label %334

330:                                              ; preds = %323
  %331 = landingpad { ptr, i32 }
          cleanup
  %332 = extractvalue { ptr, i32 } %331, 0
  store ptr %332, ptr %16, align 8
  %333 = extractvalue { ptr, i32 } %331, 1
  store i32 %333, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %40) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %41) #9
  br label %338

334:                                              ; preds = %328
  %335 = landingpad { ptr, i32 }
          cleanup
  %336 = extractvalue { ptr, i32 } %335, 0
  store ptr %336, ptr %16, align 8
  %337 = extractvalue { ptr, i32 } %335, 1
  store i32 %337, ptr %17, align 4
  br label %338

338:                                              ; preds = %334, %330
  call void @llvm.lifetime.end.p0(i64 8, ptr %39) #9
  br label %342

339:                                              ; No predecessors!
  br label %340

340:                                              ; preds = %339
  br label %341

341:                                              ; preds = %340
  store i8 0, ptr %37, align 1, !tbaa !48
  br label %313, !llvm.loop !51

342:                                              ; preds = %338, %318
  call void @llvm.lifetime.end.p0(i64 8, ptr %38) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %37) #9
  br label %836

343:                                              ; preds = %317
  br label %344

344:                                              ; preds = %343
  store i8 0, ptr %37, align 1, !tbaa !48
  br label %305, !llvm.loop !53

345:                                              ; preds = %308
  br label %834

346:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 1, ptr %42) #9
  store i8 1, ptr %42, align 1, !tbaa !48
  br label %347

347:                                              ; preds = %576, %346
  %348 = load i8, ptr %42, align 1, !tbaa !48, !range !49, !noundef !50
  %349 = trunc i8 %348 to i1
  br i1 %349, label %351, label %350

350:                                              ; preds = %347
  store i32 27, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  br label %577

351:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr %43) #9
  %352 = load ptr, ptr %36, align 8, !tbaa !5
  %353 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %352)
          to label %354 unwind label %360

354:                                              ; preds = %351
  store ptr %353, ptr %43, align 8, !tbaa !5
  br label %355

355:                                              ; preds = %573, %354
  %356 = load ptr, ptr %43, align 8, !tbaa !5
  %357 = load i8, ptr %42, align 1, !tbaa !48, !range !49, !noundef !50
  %358 = trunc i8 %357 to i1
  br i1 %358, label %364, label %359

359:                                              ; preds = %355
  store i32 30, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  br label %575

360:                                              ; preds = %364, %351
  %361 = landingpad { ptr, i32 }
          cleanup
  %362 = extractvalue { ptr, i32 } %361, 0
  store ptr %362, ptr %16, align 8
  %363 = extractvalue { ptr, i32 } %361, 1
  store i32 %363, ptr %17, align 4
  br label %574

364:                                              ; preds = %355
  %365 = load ptr, ptr %43, align 8, !tbaa !5
  %366 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %365) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %366)
          to label %367 unwind label %360

367:                                              ; preds = %364
  call void @llvm.lifetime.start.p0(i64 4, ptr %44) #9
  store i32 0, ptr %44, align 4, !tbaa !54
  br label %368

368:                                              ; preds = %568, %367
  %369 = load i32, ptr %44, align 4, !tbaa !54
  %370 = zext i32 %369 to i64
  %371 = load ptr, ptr %43, align 8, !tbaa !5
  %372 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %371) #9
  %373 = icmp ult i64 %370, %372
  br i1 %373, label %375, label %374

374:                                              ; preds = %368
  store i32 33, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %572

375:                                              ; preds = %368
  %376 = load i32, ptr %44, align 4, !tbaa !54
  %377 = load ptr, ptr %28, align 8, !tbaa !5
  %378 = getelementptr inbounds %"class.HIR::Struct", ptr %377, i32 0, i32 7
  %379 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %378, i32 0, i32 5
  %380 = load i32, ptr %379, align 4, !tbaa !9
  %381 = icmp eq i32 %376, %380
  br i1 %381, label %382, label %460

382:                                              ; preds = %375
  call void @llvm.lifetime.start.p0(i64 8, ptr %45) #9
  %383 = load ptr, ptr %8, align 8, !tbaa !5
  %384 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %383, i32 0, i32 1
  %385 = load ptr, ptr %384, align 8, !tbaa !55
  %386 = load ptr, ptr %43, align 8, !tbaa !5
  %387 = load i32, ptr %44, align 4, !tbaa !54
  %388 = zext i32 %387 to i64
  %389 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %386, i64 noundef %388) #9
  %390 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %389, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %45, ptr noundef nonnull align 8 dereferenceable(96) %31, ptr noundef nonnull align 8 dereferenceable(8) %385, ptr noundef nonnull align 8 dereferenceable(8) %390, i1 noundef zeroext false)
          to label %391 unwind label %413

391:                                              ; preds = %382
  call void @llvm.lifetime.start.p0(i64 8, ptr %46) #9
  %392 = load ptr, ptr %8, align 8, !tbaa !5
  %393 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %392, i32 0, i32 1
  %394 = load ptr, ptr %393, align 8, !tbaa !55
  %395 = load ptr, ptr %43, align 8, !tbaa !5
  %396 = load i32, ptr %44, align 4, !tbaa !54
  %397 = zext i32 %396 to i64
  %398 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %395, i64 noundef %397) #9
  %399 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %398, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %46, ptr noundef nonnull align 8 dereferenceable(96) %32, ptr noundef nonnull align 8 dereferenceable(8) %394, ptr noundef nonnull align 8 dereferenceable(8) %399, i1 noundef zeroext false)
          to label %400 unwind label %417

400:                                              ; preds = %391
  call void @llvm.lifetime.start.p0(i64 112, ptr %47) #9
  %401 = load ptr, ptr %8, align 8, !tbaa !5
  %402 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %403 unwind label %421

403:                                              ; preds = %400
  %404 = load i32, ptr %44, align 4, !tbaa !54
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %48, ptr noundef %49, i32 noundef %404)
          to label %405 unwind label %425

405:                                              ; preds = %403
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %47, ptr noundef nonnull align 8 dereferenceable(120) %401, ptr noundef nonnull align 8 dereferenceable(40) %402, ptr noundef nonnull align 8 dereferenceable(8) %45, ptr noundef nonnull align 8 dereferenceable(8) %46, ptr noundef %48)
          to label %406 unwind label %429

406:                                              ; preds = %405
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #9
  %407 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %51, ptr noundef nonnull align 8 dereferenceable(8) %45)
          to label %408 unwind label %434

408:                                              ; preds = %406
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %52, ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %50, ptr noundef nonnull align 8 dereferenceable(40) %407, ptr noundef %51, ptr noundef %52)
          to label %409 unwind label %438

409:                                              ; preds = %408
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %52) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %53) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %54, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %410 unwind label %442

410:                                              ; preds = %409
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %53, ptr noundef %54)
          to label %411 unwind label %446

411:                                              ; preds = %410
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %53)
          to label %412 unwind label %450

412:                                              ; preds = %411
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %53) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %53) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %567

413:                                              ; preds = %382
  %414 = landingpad { ptr, i32 }
          cleanup
  %415 = extractvalue { ptr, i32 } %414, 0
  store ptr %415, ptr %16, align 8
  %416 = extractvalue { ptr, i32 } %414, 1
  store i32 %416, ptr %17, align 4
  br label %459

417:                                              ; preds = %391
  %418 = landingpad { ptr, i32 }
          cleanup
  %419 = extractvalue { ptr, i32 } %418, 0
  store ptr %419, ptr %16, align 8
  %420 = extractvalue { ptr, i32 } %418, 1
  store i32 %420, ptr %17, align 4
  br label %458

421:                                              ; preds = %400
  %422 = landingpad { ptr, i32 }
          cleanup
  %423 = extractvalue { ptr, i32 } %422, 0
  store ptr %423, ptr %16, align 8
  %424 = extractvalue { ptr, i32 } %422, 1
  store i32 %424, ptr %17, align 4
  br label %457

425:                                              ; preds = %403
  %426 = landingpad { ptr, i32 }
          cleanup
  %427 = extractvalue { ptr, i32 } %426, 0
  store ptr %427, ptr %16, align 8
  %428 = extractvalue { ptr, i32 } %426, 1
  store i32 %428, ptr %17, align 4
  br label %433

429:                                              ; preds = %405
  %430 = landingpad { ptr, i32 }
          cleanup
  %431 = extractvalue { ptr, i32 } %430, 0
  store ptr %431, ptr %16, align 8
  %432 = extractvalue { ptr, i32 } %430, 1
  store i32 %432, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %48) #9
  br label %433

433:                                              ; preds = %429, %425
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #9
  br label %457

434:                                              ; preds = %406
  %435 = landingpad { ptr, i32 }
          cleanup
  %436 = extractvalue { ptr, i32 } %435, 0
  store ptr %436, ptr %16, align 8
  %437 = extractvalue { ptr, i32 } %435, 1
  store i32 %437, ptr %17, align 4
  br label %456

438:                                              ; preds = %408
  %439 = landingpad { ptr, i32 }
          cleanup
  %440 = extractvalue { ptr, i32 } %439, 0
  store ptr %440, ptr %16, align 8
  %441 = extractvalue { ptr, i32 } %439, 1
  store i32 %441, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %52) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %51) #9
  br label %456

442:                                              ; preds = %409
  %443 = landingpad { ptr, i32 }
          cleanup
  %444 = extractvalue { ptr, i32 } %443, 0
  store ptr %444, ptr %16, align 8
  %445 = extractvalue { ptr, i32 } %443, 1
  store i32 %445, ptr %17, align 4
  br label %455

446:                                              ; preds = %410
  %447 = landingpad { ptr, i32 }
          cleanup
  %448 = extractvalue { ptr, i32 } %447, 0
  store ptr %448, ptr %16, align 8
  %449 = extractvalue { ptr, i32 } %447, 1
  store i32 %449, ptr %17, align 4
  br label %454

450:                                              ; preds = %411
  %451 = landingpad { ptr, i32 }
          cleanup
  %452 = extractvalue { ptr, i32 } %451, 0
  store ptr %452, ptr %16, align 8
  %453 = extractvalue { ptr, i32 } %451, 1
  store i32 %453, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %53) #9
  br label %454

454:                                              ; preds = %450, %446
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %54) #9
  br label %455

455:                                              ; preds = %454, %442
  call void @llvm.lifetime.end.p0(i64 48, ptr %53) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %456

456:                                              ; preds = %455, %438, %434
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %47) #9
  br label %457

457:                                              ; preds = %456, %433, %421
  call void @llvm.lifetime.end.p0(i64 112, ptr %47) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %46) #9
  br label %458

458:                                              ; preds = %457, %417
  call void @llvm.lifetime.end.p0(i64 8, ptr %46) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %45) #9
  br label %459

459:                                              ; preds = %458, %413
  call void @llvm.lifetime.end.p0(i64 8, ptr %45) #9
  br label %571

460:                                              ; preds = %375
  %461 = load ptr, ptr %8, align 8, !tbaa !5
  %462 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %461, i32 0, i32 2
  %463 = load ptr, ptr %462, align 8, !tbaa !60
  %464 = load ptr, ptr %43, align 8, !tbaa !5
  %465 = load i32, ptr %44, align 4, !tbaa !54
  %466 = zext i32 %465 to i64
  %467 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %464, i64 noundef %466) #9
  %468 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %467, i32 0, i32 1
  %469 = invoke noundef ptr @_ZNK18StaticTraitResolve20is_type_phantom_dataERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %463, ptr noundef nonnull align 8 dereferenceable(8) %468)
          to label %470 unwind label %500

470:                                              ; preds = %460
  %471 = icmp ne ptr %469, null
  br i1 %471, label %472, label %541

472:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 8, ptr %55) #9
  %473 = load ptr, ptr %8, align 8, !tbaa !5
  %474 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %473, i32 0, i32 1
  %475 = load ptr, ptr %474, align 8, !tbaa !55
  %476 = load ptr, ptr %43, align 8, !tbaa !5
  %477 = load i32, ptr %44, align 4, !tbaa !54
  %478 = zext i32 %477 to i64
  %479 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %476, i64 noundef %478) #9
  %480 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %479, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %55, ptr noundef nonnull align 8 dereferenceable(96) %31, ptr noundef nonnull align 8 dereferenceable(8) %475, ptr noundef nonnull align 8 dereferenceable(8) %480, i1 noundef zeroext false)
          to label %481 unwind label %504

481:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 112, ptr %56) #9
  %482 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %57, i32 0, i32 0
  %483 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %484 unwind label %508

484:                                              ; preds = %481
  %485 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %483)
          to label %486 unwind label %508

486:                                              ; preds = %484
  %487 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %485, i32 0, i32 0
  %488 = getelementptr inbounds %"class.HIR::Path", ptr %487, i32 0, i32 0
  %489 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %488)
          to label %490 unwind label %508

490:                                              ; preds = %486
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %482, ptr noundef nonnull align 8 dereferenceable(32) %489)
          to label %491 unwind label %508

491:                                              ; preds = %490
  %492 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %57, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %492, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %492) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %56, ptr noundef %57)
          to label %493 unwind label %512

493:                                              ; preds = %491
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %57) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %58) #9
  %494 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %59, ptr noundef nonnull align 8 dereferenceable(8) %55)
          to label %495 unwind label %516

495:                                              ; preds = %493
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %60, ptr noundef nonnull align 8 dereferenceable(112) %56) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %58, ptr noundef nonnull align 8 dereferenceable(40) %494, ptr noundef %59, ptr noundef %60)
          to label %496 unwind label %520

496:                                              ; preds = %495
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %61) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %62, ptr noundef nonnull align 8 dereferenceable(32) %58)
          to label %497 unwind label %524

497:                                              ; preds = %496
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %61, ptr noundef %62)
          to label %498 unwind label %528

498:                                              ; preds = %497
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %61)
          to label %499 unwind label %532

499:                                              ; preds = %498
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %56) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %56) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %566

500:                                              ; preds = %460
  %501 = landingpad { ptr, i32 }
          cleanup
  %502 = extractvalue { ptr, i32 } %501, 0
  store ptr %502, ptr %16, align 8
  %503 = extractvalue { ptr, i32 } %501, 1
  store i32 %503, ptr %17, align 4
  br label %571

504:                                              ; preds = %472
  %505 = landingpad { ptr, i32 }
          cleanup
  %506 = extractvalue { ptr, i32 } %505, 0
  store ptr %506, ptr %16, align 8
  %507 = extractvalue { ptr, i32 } %505, 1
  store i32 %507, ptr %17, align 4
  br label %540

508:                                              ; preds = %490, %486, %484, %481
  %509 = landingpad { ptr, i32 }
          cleanup
  %510 = extractvalue { ptr, i32 } %509, 0
  store ptr %510, ptr %16, align 8
  %511 = extractvalue { ptr, i32 } %509, 1
  store i32 %511, ptr %17, align 4
  br label %539

512:                                              ; preds = %491
  %513 = landingpad { ptr, i32 }
          cleanup
  %514 = extractvalue { ptr, i32 } %513, 0
  store ptr %514, ptr %16, align 8
  %515 = extractvalue { ptr, i32 } %513, 1
  store i32 %515, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %57) #9
  br label %539

516:                                              ; preds = %493
  %517 = landingpad { ptr, i32 }
          cleanup
  %518 = extractvalue { ptr, i32 } %517, 0
  store ptr %518, ptr %16, align 8
  %519 = extractvalue { ptr, i32 } %517, 1
  store i32 %519, ptr %17, align 4
  br label %538

520:                                              ; preds = %495
  %521 = landingpad { ptr, i32 }
          cleanup
  %522 = extractvalue { ptr, i32 } %521, 0
  store ptr %522, ptr %16, align 8
  %523 = extractvalue { ptr, i32 } %521, 1
  store i32 %523, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %59) #9
  br label %538

524:                                              ; preds = %496
  %525 = landingpad { ptr, i32 }
          cleanup
  %526 = extractvalue { ptr, i32 } %525, 0
  store ptr %526, ptr %16, align 8
  %527 = extractvalue { ptr, i32 } %525, 1
  store i32 %527, ptr %17, align 4
  br label %537

528:                                              ; preds = %497
  %529 = landingpad { ptr, i32 }
          cleanup
  %530 = extractvalue { ptr, i32 } %529, 0
  store ptr %530, ptr %16, align 8
  %531 = extractvalue { ptr, i32 } %529, 1
  store i32 %531, ptr %17, align 4
  br label %536

532:                                              ; preds = %498
  %533 = landingpad { ptr, i32 }
          cleanup
  %534 = extractvalue { ptr, i32 } %533, 0
  store ptr %534, ptr %16, align 8
  %535 = extractvalue { ptr, i32 } %533, 1
  store i32 %535, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %61) #9
  br label %536

536:                                              ; preds = %532, %528
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %62) #9
  br label %537

537:                                              ; preds = %536, %524
  call void @llvm.lifetime.end.p0(i64 48, ptr %61) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #9
  br label %538

538:                                              ; preds = %537, %520, %516
  call void @llvm.lifetime.end.p0(i64 32, ptr %58) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %56) #9
  br label %539

539:                                              ; preds = %538, %512, %508
  call void @llvm.lifetime.end.p0(i64 112, ptr %56) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #9
  br label %540

540:                                              ; preds = %539, %504
  call void @llvm.lifetime.end.p0(i64 8, ptr %55) #9
  br label %571

541:                                              ; preds = %470
  call void @llvm.lifetime.start.p0(i64 48, ptr %63) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %65, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %542 unwind label %547

542:                                              ; preds = %541
  %543 = load i32, ptr %44, align 4, !tbaa !54
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %64, ptr noundef %65, i32 noundef %543)
          to label %544 unwind label %551

544:                                              ; preds = %542
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %63, ptr noundef %64)
          to label %545 unwind label %555

545:                                              ; preds = %544
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %63)
          to label %546 unwind label %559

546:                                              ; preds = %545
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #9
  br label %566

547:                                              ; preds = %541
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %16, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %17, align 4
  br label %565

551:                                              ; preds = %542
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %16, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %17, align 4
  br label %564

555:                                              ; preds = %544
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %16, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %17, align 4
  br label %563

559:                                              ; preds = %545
  %560 = landingpad { ptr, i32 }
          cleanup
  %561 = extractvalue { ptr, i32 } %560, 0
  store ptr %561, ptr %16, align 8
  %562 = extractvalue { ptr, i32 } %560, 1
  store i32 %562, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %63) #9
  br label %563

563:                                              ; preds = %559, %555
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %64) #9
  br label %564

564:                                              ; preds = %563, %551
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %565

565:                                              ; preds = %564, %547
  call void @llvm.lifetime.end.p0(i64 48, ptr %63) #9
  br label %571

566:                                              ; preds = %546, %499
  br label %567

567:                                              ; preds = %566, %412
  br label %568

568:                                              ; preds = %567
  %569 = load i32, ptr %44, align 4, !tbaa !54
  %570 = add i32 %569, 1
  store i32 %570, ptr %44, align 4, !tbaa !54
  br label %368, !llvm.loop !61

571:                                              ; preds = %565, %540, %500, %459
  call void @llvm.lifetime.end.p0(i64 4, ptr %44) #9
  br label %574

572:                                              ; preds = %374
  br label %573

573:                                              ; preds = %572
  store i8 0, ptr %42, align 1, !tbaa !48
  br label %355, !llvm.loop !62

574:                                              ; preds = %571, %360
  call void @llvm.lifetime.end.p0(i64 8, ptr %43) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %42) #9
  br label %836

575:                                              ; preds = %359
  br label %576

576:                                              ; preds = %575
  store i8 0, ptr %42, align 1, !tbaa !48
  br label %347, !llvm.loop !63

577:                                              ; preds = %350
  br label %834

578:                                              ; preds = %298
  call void @llvm.lifetime.start.p0(i64 1, ptr %66) #9
  store i8 1, ptr %66, align 1, !tbaa !48
  br label %579

579:                                              ; preds = %832, %578
  %580 = load i8, ptr %66, align 1, !tbaa !48, !range !49, !noundef !50
  %581 = trunc i8 %580 to i1
  br i1 %581, label %583, label %582

582:                                              ; preds = %579
  store i32 36, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #9
  br label %833

583:                                              ; preds = %579
  call void @llvm.lifetime.start.p0(i64 8, ptr %67) #9
  %584 = load ptr, ptr %36, align 8, !tbaa !5
  %585 = invoke noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %584)
          to label %586 unwind label %592

586:                                              ; preds = %583
  store ptr %585, ptr %67, align 8, !tbaa !5
  br label %587

587:                                              ; preds = %829, %586
  %588 = load ptr, ptr %67, align 8, !tbaa !5
  %589 = load i8, ptr %66, align 1, !tbaa !48, !range !49, !noundef !50
  %590 = trunc i8 %589 to i1
  br i1 %590, label %596, label %591

591:                                              ; preds = %587
  store i32 39, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  br label %831

592:                                              ; preds = %596, %583
  %593 = landingpad { ptr, i32 }
          cleanup
  %594 = extractvalue { ptr, i32 } %593, 0
  store ptr %594, ptr %16, align 8
  %595 = extractvalue { ptr, i32 } %593, 1
  store i32 %595, ptr %17, align 4
  br label %830

596:                                              ; preds = %587
  %597 = load ptr, ptr %67, align 8, !tbaa !5
  %598 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %597) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %33, i64 noundef %598)
          to label %599 unwind label %592

599:                                              ; preds = %596
  call void @llvm.lifetime.start.p0(i64 4, ptr %68) #9
  store i32 0, ptr %68, align 4, !tbaa !54
  br label %600

600:                                              ; preds = %824, %599
  %601 = load i32, ptr %68, align 4, !tbaa !54
  %602 = zext i32 %601 to i64
  %603 = load ptr, ptr %67, align 8, !tbaa !5
  %604 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %603) #9
  %605 = icmp ult i64 %602, %604
  br i1 %605, label %607, label %606

606:                                              ; preds = %600
  store i32 42, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  br label %828

607:                                              ; preds = %600
  %608 = load i32, ptr %68, align 4, !tbaa !54
  %609 = load ptr, ptr %28, align 8, !tbaa !5
  %610 = getelementptr inbounds %"class.HIR::Struct", ptr %609, i32 0, i32 7
  %611 = getelementptr inbounds %"struct.HIR::StructMarkings", ptr %610, i32 0, i32 5
  %612 = load i32, ptr %611, align 4, !tbaa !9
  %613 = icmp eq i32 %608, %612
  br i1 %613, label %614, label %714

614:                                              ; preds = %607
  call void @llvm.lifetime.start.p0(i64 8, ptr %69) #9
  %615 = load ptr, ptr %8, align 8, !tbaa !5
  %616 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %615, i32 0, i32 1
  %617 = load ptr, ptr %616, align 8, !tbaa !55
  %618 = load ptr, ptr %67, align 8, !tbaa !5
  %619 = load i32, ptr %68, align 4, !tbaa !54
  %620 = zext i32 %619 to i64
  %621 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %618, i64 noundef %620) #9
  %622 = getelementptr inbounds %"struct.std::pair.434", ptr %621, i32 0, i32 1
  %623 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %622, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %69, ptr noundef nonnull align 8 dereferenceable(96) %31, ptr noundef nonnull align 8 dereferenceable(8) %617, ptr noundef nonnull align 8 dereferenceable(8) %623, i1 noundef zeroext false)
          to label %624 unwind label %653

624:                                              ; preds = %614
  call void @llvm.lifetime.start.p0(i64 8, ptr %70) #9
  %625 = load ptr, ptr %8, align 8, !tbaa !5
  %626 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %625, i32 0, i32 1
  %627 = load ptr, ptr %626, align 8, !tbaa !55
  %628 = load ptr, ptr %67, align 8, !tbaa !5
  %629 = load i32, ptr %68, align 4, !tbaa !54
  %630 = zext i32 %629 to i64
  %631 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %628, i64 noundef %630) #9
  %632 = getelementptr inbounds %"struct.std::pair.434", ptr %631, i32 0, i32 1
  %633 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %632, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %70, ptr noundef nonnull align 8 dereferenceable(96) %32, ptr noundef nonnull align 8 dereferenceable(8) %627, ptr noundef nonnull align 8 dereferenceable(8) %633, i1 noundef zeroext false)
          to label %634 unwind label %657

634:                                              ; preds = %624
  call void @llvm.lifetime.start.p0(i64 112, ptr %71) #9
  %635 = load ptr, ptr %8, align 8, !tbaa !5
  %636 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %73, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %637 unwind label %661

637:                                              ; preds = %634
  %638 = load i32, ptr %68, align 4, !tbaa !54
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %72, ptr noundef %73, i32 noundef %638)
          to label %639 unwind label %665

639:                                              ; preds = %637
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %71, ptr noundef nonnull align 8 dereferenceable(120) %635, ptr noundef nonnull align 8 dereferenceable(40) %636, ptr noundef nonnull align 8 dereferenceable(8) %69, ptr noundef nonnull align 8 dereferenceable(8) %70, ptr noundef %72)
          to label %640 unwind label %669

640:                                              ; preds = %639
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %74) #9
  %641 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %75, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %642 unwind label %674

642:                                              ; preds = %640
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %74, ptr noundef nonnull align 8 dereferenceable(40) %641, ptr noundef %75)
          to label %643 unwind label %678

643:                                              ; preds = %642
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  %644 = load ptr, ptr %9, align 8, !tbaa !5
  %645 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %77, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %645, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %646 unwind label %682

646:                                              ; preds = %643
  %647 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %77, i32 0, i32 1
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %647, ptr noundef nonnull align 8 dereferenceable(112) %71) #9
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %76, ptr noundef %77)
          to label %648 unwind label %686

648:                                              ; preds = %646
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %644, ptr noundef %76)
          to label %649 unwind label %690

649:                                              ; preds = %648
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %76) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %77) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %78) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %79, ptr noundef nonnull align 8 dereferenceable(32) %74)
          to label %650 unwind label %695

650:                                              ; preds = %649
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %78, ptr noundef %79)
          to label %651 unwind label %699

651:                                              ; preds = %650
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %78)
          to label %652 unwind label %703

652:                                              ; preds = %651
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %71) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %71) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %823

653:                                              ; preds = %614
  %654 = landingpad { ptr, i32 }
          cleanup
  %655 = extractvalue { ptr, i32 } %654, 0
  store ptr %655, ptr %16, align 8
  %656 = extractvalue { ptr, i32 } %654, 1
  store i32 %656, ptr %17, align 4
  br label %713

657:                                              ; preds = %624
  %658 = landingpad { ptr, i32 }
          cleanup
  %659 = extractvalue { ptr, i32 } %658, 0
  store ptr %659, ptr %16, align 8
  %660 = extractvalue { ptr, i32 } %658, 1
  store i32 %660, ptr %17, align 4
  br label %712

661:                                              ; preds = %634
  %662 = landingpad { ptr, i32 }
          cleanup
  %663 = extractvalue { ptr, i32 } %662, 0
  store ptr %663, ptr %16, align 8
  %664 = extractvalue { ptr, i32 } %662, 1
  store i32 %664, ptr %17, align 4
  br label %711

665:                                              ; preds = %637
  %666 = landingpad { ptr, i32 }
          cleanup
  %667 = extractvalue { ptr, i32 } %666, 0
  store ptr %667, ptr %16, align 8
  %668 = extractvalue { ptr, i32 } %666, 1
  store i32 %668, ptr %17, align 4
  br label %673

669:                                              ; preds = %639
  %670 = landingpad { ptr, i32 }
          cleanup
  %671 = extractvalue { ptr, i32 } %670, 0
  store ptr %671, ptr %16, align 8
  %672 = extractvalue { ptr, i32 } %670, 1
  store i32 %672, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  br label %673

673:                                              ; preds = %669, %665
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  br label %711

674:                                              ; preds = %640
  %675 = landingpad { ptr, i32 }
          cleanup
  %676 = extractvalue { ptr, i32 } %675, 0
  store ptr %676, ptr %16, align 8
  %677 = extractvalue { ptr, i32 } %675, 1
  store i32 %677, ptr %17, align 4
  br label %710

678:                                              ; preds = %642
  %679 = landingpad { ptr, i32 }
          cleanup
  %680 = extractvalue { ptr, i32 } %679, 0
  store ptr %680, ptr %16, align 8
  %681 = extractvalue { ptr, i32 } %679, 1
  store i32 %681, ptr %17, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %75) #9
  br label %710

682:                                              ; preds = %643
  %683 = landingpad { ptr, i32 }
          cleanup
  %684 = extractvalue { ptr, i32 } %683, 0
  store ptr %684, ptr %16, align 8
  %685 = extractvalue { ptr, i32 } %683, 1
  store i32 %685, ptr %17, align 4
  br label %709

686:                                              ; preds = %646
  %687 = landingpad { ptr, i32 }
          cleanup
  %688 = extractvalue { ptr, i32 } %687, 0
  store ptr %688, ptr %16, align 8
  %689 = extractvalue { ptr, i32 } %687, 1
  store i32 %689, ptr %17, align 4
  br label %694

690:                                              ; preds = %648
  %691 = landingpad { ptr, i32 }
          cleanup
  %692 = extractvalue { ptr, i32 } %691, 0
  store ptr %692, ptr %16, align 8
  %693 = extractvalue { ptr, i32 } %691, 1
  store i32 %693, ptr %17, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %76) #9
  br label %694

694:                                              ; preds = %690, %686
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %77) #9
  br label %709

695:                                              ; preds = %649
  %696 = landingpad { ptr, i32 }
          cleanup
  %697 = extractvalue { ptr, i32 } %696, 0
  store ptr %697, ptr %16, align 8
  %698 = extractvalue { ptr, i32 } %696, 1
  store i32 %698, ptr %17, align 4
  br label %708

699:                                              ; preds = %650
  %700 = landingpad { ptr, i32 }
          cleanup
  %701 = extractvalue { ptr, i32 } %700, 0
  store ptr %701, ptr %16, align 8
  %702 = extractvalue { ptr, i32 } %700, 1
  store i32 %702, ptr %17, align 4
  br label %707

703:                                              ; preds = %651
  %704 = landingpad { ptr, i32 }
          cleanup
  %705 = extractvalue { ptr, i32 } %704, 0
  store ptr %705, ptr %16, align 8
  %706 = extractvalue { ptr, i32 } %704, 1
  store i32 %706, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %78) #9
  br label %707

707:                                              ; preds = %703, %699
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %79) #9
  br label %708

708:                                              ; preds = %707, %695
  call void @llvm.lifetime.end.p0(i64 48, ptr %78) #9
  br label %709

709:                                              ; preds = %708, %694, %682
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %74) #9
  br label %710

710:                                              ; preds = %709, %678, %674
  call void @llvm.lifetime.end.p0(i64 32, ptr %74) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %71) #9
  br label %711

711:                                              ; preds = %710, %673, %661
  call void @llvm.lifetime.end.p0(i64 112, ptr %71) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %70) #9
  br label %712

712:                                              ; preds = %711, %657
  call void @llvm.lifetime.end.p0(i64 8, ptr %70) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %69) #9
  br label %713

713:                                              ; preds = %712, %653
  call void @llvm.lifetime.end.p0(i64 8, ptr %69) #9
  br label %827

714:                                              ; preds = %607
  %715 = load ptr, ptr %8, align 8, !tbaa !5
  %716 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %715, i32 0, i32 2
  %717 = load ptr, ptr %716, align 8, !tbaa !60
  %718 = load ptr, ptr %67, align 8, !tbaa !5
  %719 = load i32, ptr %68, align 4, !tbaa !54
  %720 = zext i32 %719 to i64
  %721 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %718, i64 noundef %720) #9
  %722 = getelementptr inbounds %"struct.std::pair.434", ptr %721, i32 0, i32 1
  %723 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %722, i32 0, i32 1
  %724 = invoke noundef ptr @_ZNK18StaticTraitResolve20is_type_phantom_dataERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %717, ptr noundef nonnull align 8 dereferenceable(8) %723)
          to label %725 unwind label %756

725:                                              ; preds = %714
  %726 = icmp ne ptr %724, null
  br i1 %726, label %727, label %797

727:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 8, ptr %80) #9
  %728 = load ptr, ptr %8, align 8, !tbaa !5
  %729 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %728, i32 0, i32 1
  %730 = load ptr, ptr %729, align 8, !tbaa !55
  %731 = load ptr, ptr %67, align 8, !tbaa !5
  %732 = load i32, ptr %68, align 4, !tbaa !54
  %733 = zext i32 %732 to i64
  %734 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %731, i64 noundef %733) #9
  %735 = getelementptr inbounds %"struct.std::pair.434", ptr %734, i32 0, i32 1
  %736 = getelementptr inbounds %"struct.HIR::VisEnt", ptr %735, i32 0, i32 1
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %80, ptr noundef nonnull align 8 dereferenceable(96) %31, ptr noundef nonnull align 8 dereferenceable(8) %730, ptr noundef nonnull align 8 dereferenceable(8) %736, i1 noundef zeroext false)
          to label %737 unwind label %760

737:                                              ; preds = %727
  call void @llvm.lifetime.start.p0(i64 112, ptr %81) #9
  %738 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %82, i32 0, i32 0
  %739 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %740 unwind label %764

740:                                              ; preds = %737
  %741 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %739)
          to label %742 unwind label %764

742:                                              ; preds = %740
  %743 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %741, i32 0, i32 0
  %744 = getelementptr inbounds %"class.HIR::Path", ptr %743, i32 0, i32 0
  %745 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %744)
          to label %746 unwind label %764

746:                                              ; preds = %742
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %738, ptr noundef nonnull align 8 dereferenceable(32) %745)
          to label %747 unwind label %764

747:                                              ; preds = %746
  %748 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %82, i32 0, i32 1
  call void @llvm.memset.p0.i64(ptr align 8 %748, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %748) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %81, ptr noundef %82)
          to label %749 unwind label %768

749:                                              ; preds = %747
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %82) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr %83) #9
  %750 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %84, ptr noundef nonnull align 8 dereferenceable(8) %80)
          to label %751 unwind label %772

751:                                              ; preds = %749
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %85, ptr noundef nonnull align 8 dereferenceable(112) %81) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %83, ptr noundef nonnull align 8 dereferenceable(40) %750, ptr noundef %84, ptr noundef %85)
          to label %752 unwind label %776

752:                                              ; preds = %751
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %85) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr %86) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %87, ptr noundef nonnull align 8 dereferenceable(32) %83)
          to label %753 unwind label %780

753:                                              ; preds = %752
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %86, ptr noundef %87)
          to label %754 unwind label %784

754:                                              ; preds = %753
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %86)
          to label %755 unwind label %788

755:                                              ; preds = %754
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %81) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr %81) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %822

756:                                              ; preds = %714
  %757 = landingpad { ptr, i32 }
          cleanup
  %758 = extractvalue { ptr, i32 } %757, 0
  store ptr %758, ptr %16, align 8
  %759 = extractvalue { ptr, i32 } %757, 1
  store i32 %759, ptr %17, align 4
  br label %827

760:                                              ; preds = %727
  %761 = landingpad { ptr, i32 }
          cleanup
  %762 = extractvalue { ptr, i32 } %761, 0
  store ptr %762, ptr %16, align 8
  %763 = extractvalue { ptr, i32 } %761, 1
  store i32 %763, ptr %17, align 4
  br label %796

764:                                              ; preds = %746, %742, %740, %737
  %765 = landingpad { ptr, i32 }
          cleanup
  %766 = extractvalue { ptr, i32 } %765, 0
  store ptr %766, ptr %16, align 8
  %767 = extractvalue { ptr, i32 } %765, 1
  store i32 %767, ptr %17, align 4
  br label %795

768:                                              ; preds = %747
  %769 = landingpad { ptr, i32 }
          cleanup
  %770 = extractvalue { ptr, i32 } %769, 0
  store ptr %770, ptr %16, align 8
  %771 = extractvalue { ptr, i32 } %769, 1
  store i32 %771, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %82) #9
  br label %795

772:                                              ; preds = %749
  %773 = landingpad { ptr, i32 }
          cleanup
  %774 = extractvalue { ptr, i32 } %773, 0
  store ptr %774, ptr %16, align 8
  %775 = extractvalue { ptr, i32 } %773, 1
  store i32 %775, ptr %17, align 4
  br label %794

776:                                              ; preds = %751
  %777 = landingpad { ptr, i32 }
          cleanup
  %778 = extractvalue { ptr, i32 } %777, 0
  store ptr %778, ptr %16, align 8
  %779 = extractvalue { ptr, i32 } %777, 1
  store i32 %779, ptr %17, align 4
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %85) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %84) #9
  br label %794

780:                                              ; preds = %752
  %781 = landingpad { ptr, i32 }
          cleanup
  %782 = extractvalue { ptr, i32 } %781, 0
  store ptr %782, ptr %16, align 8
  %783 = extractvalue { ptr, i32 } %781, 1
  store i32 %783, ptr %17, align 4
  br label %793

784:                                              ; preds = %753
  %785 = landingpad { ptr, i32 }
          cleanup
  %786 = extractvalue { ptr, i32 } %785, 0
  store ptr %786, ptr %16, align 8
  %787 = extractvalue { ptr, i32 } %785, 1
  store i32 %787, ptr %17, align 4
  br label %792

788:                                              ; preds = %754
  %789 = landingpad { ptr, i32 }
          cleanup
  %790 = extractvalue { ptr, i32 } %789, 0
  store ptr %790, ptr %16, align 8
  %791 = extractvalue { ptr, i32 } %789, 1
  store i32 %791, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %86) #9
  br label %792

792:                                              ; preds = %788, %784
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %87) #9
  br label %793

793:                                              ; preds = %792, %780
  call void @llvm.lifetime.end.p0(i64 48, ptr %86) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %83) #9
  br label %794

794:                                              ; preds = %793, %776, %772
  call void @llvm.lifetime.end.p0(i64 32, ptr %83) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %81) #9
  br label %795

795:                                              ; preds = %794, %768, %764
  call void @llvm.lifetime.end.p0(i64 112, ptr %81) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %80) #9
  br label %796

796:                                              ; preds = %795, %760
  call void @llvm.lifetime.end.p0(i64 8, ptr %80) #9
  br label %827

797:                                              ; preds = %725
  call void @llvm.lifetime.start.p0(i64 48, ptr %88) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %90, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %798 unwind label %803

798:                                              ; preds = %797
  %799 = load i32, ptr %68, align 4, !tbaa !54
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %89, ptr noundef %90, i32 noundef %799)
          to label %800 unwind label %807

800:                                              ; preds = %798
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %88, ptr noundef %89)
          to label %801 unwind label %811

801:                                              ; preds = %800
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %33, ptr noundef nonnull align 8 dereferenceable(48) %88)
          to label %802 unwind label %815

802:                                              ; preds = %801
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %88) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #9
  br label %822

803:                                              ; preds = %797
  %804 = landingpad { ptr, i32 }
          cleanup
  %805 = extractvalue { ptr, i32 } %804, 0
  store ptr %805, ptr %16, align 8
  %806 = extractvalue { ptr, i32 } %804, 1
  store i32 %806, ptr %17, align 4
  br label %821

807:                                              ; preds = %798
  %808 = landingpad { ptr, i32 }
          cleanup
  %809 = extractvalue { ptr, i32 } %808, 0
  store ptr %809, ptr %16, align 8
  %810 = extractvalue { ptr, i32 } %808, 1
  store i32 %810, ptr %17, align 4
  br label %820

811:                                              ; preds = %800
  %812 = landingpad { ptr, i32 }
          cleanup
  %813 = extractvalue { ptr, i32 } %812, 0
  store ptr %813, ptr %16, align 8
  %814 = extractvalue { ptr, i32 } %812, 1
  store i32 %814, ptr %17, align 4
  br label %819

815:                                              ; preds = %801
  %816 = landingpad { ptr, i32 }
          cleanup
  %817 = extractvalue { ptr, i32 } %816, 0
  store ptr %817, ptr %16, align 8
  %818 = extractvalue { ptr, i32 } %816, 1
  store i32 %818, ptr %17, align 4
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %88) #9
  br label %819

819:                                              ; preds = %815, %811
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %89) #9
  br label %820

820:                                              ; preds = %819, %807
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %90) #9
  br label %821

821:                                              ; preds = %820, %803
  call void @llvm.lifetime.end.p0(i64 48, ptr %88) #9
  br label %827

822:                                              ; preds = %802, %755
  br label %823

823:                                              ; preds = %822, %652
  br label %824

824:                                              ; preds = %823
  %825 = load i32, ptr %68, align 4, !tbaa !54
  %826 = add i32 %825, 1
  store i32 %826, ptr %68, align 4, !tbaa !54
  br label %600, !llvm.loop !64

827:                                              ; preds = %821, %796, %756, %713
  call void @llvm.lifetime.end.p0(i64 4, ptr %68) #9
  br label %830

828:                                              ; preds = %606
  br label %829

829:                                              ; preds = %828
  store i8 0, ptr %66, align 1, !tbaa !48
  br label %587, !llvm.loop !65

830:                                              ; preds = %827, %592
  call void @llvm.lifetime.end.p0(i64 8, ptr %67) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %66) #9
  br label %836

831:                                              ; preds = %591
  br label %832

832:                                              ; preds = %831
  store i8 0, ptr %66, align 1, !tbaa !48
  br label %579, !llvm.loop !66

833:                                              ; preds = %582
  br label %834

834:                                              ; preds = %833, %577, %345, %298
  br label %835

835:                                              ; preds = %834
  store i8 0, ptr %34, align 1, !tbaa !48
  br label %291, !llvm.loop !67

836:                                              ; preds = %830, %574, %342, %299
  call void @llvm.lifetime.end.p0(i64 8, ptr %36) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %34) #9
  br label %857

837:                                              ; preds = %294
  br label %838

838:                                              ; preds = %837
  store i8 0, ptr %34, align 1, !tbaa !48
  br label %276, !llvm.loop !68

839:                                              ; preds = %279
  %840 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %91, i32 0, i32 0
  %841 = load ptr, ptr %20, align 8, !tbaa !5
  %842 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %841, i32 0, i32 0
  %843 = getelementptr inbounds %"class.HIR::Path", ptr %842, i32 0, i32 0
  %844 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %843)
          to label %845 unwind label %849

845:                                              ; preds = %839
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::GenericPath") align 8 %840, ptr noundef nonnull align 8 dereferenceable(32) %844)
          to label %846 unwind label %849

846:                                              ; preds = %845
  %847 = getelementptr inbounds %"struct.MIR::RValue::Data_Struct", ptr %91, i32 0, i32 1
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %847, ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %91)
          to label %848 unwind label %853

848:                                              ; preds = %846
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %91) #9
  store i32 1, ptr %35, align 4
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %32) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr %32) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %31) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr %31) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %1060

849:                                              ; preds = %845, %839
  %850 = landingpad { ptr, i32 }
          cleanup
  %851 = extractvalue { ptr, i32 } %850, 0
  store ptr %851, ptr %16, align 8
  %852 = extractvalue { ptr, i32 } %850, 1
  store i32 %852, ptr %17, align 4
  br label %857

853:                                              ; preds = %846
  %854 = landingpad { ptr, i32 }
          cleanup
  %855 = extractvalue { ptr, i32 } %854, 0
  store ptr %855, ptr %16, align 8
  %856 = extractvalue { ptr, i32 } %854, 1
  store i32 %856, ptr %17, align 4
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %91) #9
  br label %857

857:                                              ; preds = %853, %849, %836
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %33) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %33) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %32) #9
  br label %858

858:                                              ; preds = %857, %284
  call void @llvm.lifetime.end.p0(i64 128, ptr %32) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %31) #9
  br label %859

859:                                              ; preds = %858, %280
  call void @llvm.lifetime.end.p0(i64 128, ptr %31) #9
  br label %860

860:                                              ; preds = %859, %255, %251
  call void @llvm.lifetime.end.p0(i64 8, ptr %28) #9
  br label %861

861:                                              ; preds = %860, %228, %202, %178, %174
  call void @llvm.lifetime.end.p0(i64 8, ptr %21) #9
  br label %862

862:                                              ; preds = %861, %170
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #9
  br label %1061

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

866:                                              ; preds = %863
  %867 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %865)
          to label %868 unwind label %141

868:                                              ; preds = %866
  br i1 %867, label %869, label %911

869:                                              ; preds = %868
  br label %870

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

873:                                              ; preds = %870
  %874 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %872)
          to label %875 unwind label %141

875:                                              ; preds = %873
  br i1 %874, label %887, label %876

876:                                              ; preds = %875
  %877 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %93) #9
  %878 = getelementptr inbounds %class.anon.447, ptr %93, i32 0, i32 0
  %879 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %879, ptr %878, align 8, !tbaa !5
  %880 = getelementptr inbounds %class.anon.447, ptr %93, i32 0, i32 1
  %881 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %881, ptr %880, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %92, ptr noundef nonnull align 8 dereferenceable(16) %93) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %877, ptr noundef %92)
          to label %882 unwind label %883

882:                                              ; preds = %876
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #9
  br label %887

883:                                              ; preds = %876
  %884 = landingpad { ptr, i32 }
          cleanup
  %885 = extractvalue { ptr, i32 } %884, 0
  store ptr %885, ptr %16, align 8
  %886 = extractvalue { ptr, i32 } %884, 1
  store i32 %886, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %92) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %93) #9
  br label %1061

887:                                              ; preds = %882, %875
  br label %888

888:                                              ; preds = %887
  br label %889

889:                                              ; preds = %888
  call void @llvm.lifetime.start.p0(i64 8, ptr %94) #9
  %890 = load ptr, ptr %11, align 8, !tbaa !5
  %891 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %890)
          to label %892 unwind label %902

892:                                              ; preds = %889
  %893 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %891)
          to label %894 unwind label %902

894:                                              ; preds = %892
  store ptr %893, ptr %94, align 8, !tbaa !5
  %895 = load ptr, ptr %8, align 8, !tbaa !5
  %896 = load ptr, ptr %9, align 8, !tbaa !5
  %897 = load ptr, ptr %10, align 8, !tbaa !5
  %898 = load ptr, ptr %94, align 8, !tbaa !5
  %899 = getelementptr inbounds %"struct.HIR::TypeData::Data_Borrow", ptr %898, i32 0, i32 2
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %95, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %900 unwind label %902

900:                                              ; preds = %894
  invoke void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %895, ptr noundef nonnull align 8 dereferenceable(40) %896, ptr noundef nonnull align 8 dereferenceable(8) %897, ptr noundef nonnull align 8 dereferenceable(8) %899, ptr noundef %95)
          to label %901 unwind label %906

901:                                              ; preds = %900
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  store i32 1, ptr %35, align 4
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %1060

902:                                              ; preds = %894, %892, %889
  %903 = landingpad { ptr, i32 }
          cleanup
  %904 = extractvalue { ptr, i32 } %903, 0
  store ptr %904, ptr %16, align 8
  %905 = extractvalue { ptr, i32 } %903, 1
  store i32 %905, ptr %17, align 4
  br label %910

906:                                              ; preds = %900
  %907 = landingpad { ptr, i32 }
          cleanup
  %908 = extractvalue { ptr, i32 } %907, 0
  store ptr %908, ptr %16, align 8
  %909 = extractvalue { ptr, i32 } %907, 1
  store i32 %909, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %95) #9
  br label %910

910:                                              ; preds = %906, %902
  call void @llvm.lifetime.end.p0(i64 8, ptr %94) #9
  br label %1061

911:                                              ; preds = %868
  %912 = load ptr, ptr %10, align 8, !tbaa !5
  %913 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %912)
          to label %914 unwind label %141

914:                                              ; preds = %911
  %915 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %913)
          to label %916 unwind label %141

916:                                              ; preds = %914
  br i1 %915, label %917, label %1032

917:                                              ; preds = %916
  br label %918

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

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

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

924:                                              ; preds = %923
  %925 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %97) #9
  %926 = getelementptr inbounds %class.anon.448, ptr %97, i32 0, i32 0
  %927 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %927, ptr %926, align 8, !tbaa !5
  %928 = getelementptr inbounds %class.anon.448, ptr %97, i32 0, i32 1
  %929 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %929, ptr %928, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %96, ptr noundef nonnull align 8 dereferenceable(16) %97) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %925, ptr noundef %96)
          to label %930 unwind label %931

930:                                              ; preds = %924
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #9
  br label %935

931:                                              ; preds = %924
  %932 = landingpad { ptr, i32 }
          cleanup
  %933 = extractvalue { ptr, i32 } %932, 0
  store ptr %933, ptr %16, align 8
  %934 = extractvalue { ptr, i32 } %932, 1
  store i32 %934, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %96) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %97) #9
  br label %1061

935:                                              ; preds = %930, %923
  br label %936

936:                                              ; preds = %935
  br label %937

937:                                              ; preds = %936
  call void @llvm.lifetime.start.p0(i64 8, ptr %98) #9
  %938 = load ptr, ptr %10, align 8, !tbaa !5
  %939 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %938)
          to label %940 unwind label %963

940:                                              ; preds = %937
  %941 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %939)
          to label %942 unwind label %963

942:                                              ; preds = %940
  store ptr %941, ptr %98, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %99) #9
  %943 = load ptr, ptr %11, align 8, !tbaa !5
  %944 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %943)
          to label %945 unwind label %967

945:                                              ; preds = %942
  %946 = invoke noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %944)
          to label %947 unwind label %967

947:                                              ; preds = %945
  store ptr %946, ptr %99, align 8, !tbaa !5
  %948 = load ptr, ptr %98, align 8, !tbaa !5
  %949 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %948, i32 0, i32 0
  %950 = load i32, ptr %949, align 8, !tbaa !69
  %951 = load ptr, ptr %99, align 8, !tbaa !5
  %952 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %951, i32 0, i32 0
  %953 = load i32, ptr %952, align 8, !tbaa !69
  %954 = icmp eq i32 %950, %953
  br i1 %954, label %955, label %975

955:                                              ; preds = %947
  %956 = load ptr, ptr %8, align 8, !tbaa !5
  %957 = load ptr, ptr %9, align 8, !tbaa !5
  %958 = load ptr, ptr %10, align 8, !tbaa !5
  %959 = load ptr, ptr %99, align 8, !tbaa !5
  %960 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %959, i32 0, i32 1
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %100, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %961 unwind label %967

961:                                              ; preds = %955
  invoke void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %956, ptr noundef nonnull align 8 dereferenceable(40) %957, ptr noundef nonnull align 8 dereferenceable(8) %958, ptr noundef nonnull align 8 dereferenceable(8) %960, ptr noundef %100)
          to label %962 unwind label %971

962:                                              ; preds = %961
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  store i32 1, ptr %35, align 4
  br label %1029

963:                                              ; preds = %940, %937
  %964 = landingpad { ptr, i32 }
          cleanup
  %965 = extractvalue { ptr, i32 } %964, 0
  store ptr %965, ptr %16, align 8
  %966 = extractvalue { ptr, i32 } %964, 1
  store i32 %966, ptr %17, align 4
  br label %1031

967:                                              ; preds = %1014, %976, %955, %945, %942
  %968 = landingpad { ptr, i32 }
          cleanup
  %969 = extractvalue { ptr, i32 } %968, 0
  store ptr %969, ptr %16, align 8
  %970 = extractvalue { ptr, i32 } %968, 1
  store i32 %970, ptr %17, align 4
  br label %1030

971:                                              ; preds = %961
  %972 = landingpad { ptr, i32 }
          cleanup
  %973 = extractvalue { ptr, i32 } %972, 0
  store ptr %973, ptr %16, align 8
  %974 = extractvalue { ptr, i32 } %972, 1
  store i32 %974, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %100) #9
  br label %1030

975:                                              ; preds = %947
  br label %976

976:                                              ; preds = %975
  %977 = load ptr, ptr %98, align 8, !tbaa !5
  %978 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %977, i32 0, i32 1
  %979 = load ptr, ptr %99, align 8, !tbaa !5
  %980 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %979, i32 0, i32 1
  %981 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %978, ptr noundef nonnull align 8 dereferenceable(8) %980)
          to label %982 unwind label %967

982:                                              ; preds = %976
  br i1 %981, label %994, label %983

983:                                              ; preds = %982
  %984 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr %102) #9
  %985 = getelementptr inbounds %class.anon.449, ptr %102, i32 0, i32 0
  %986 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %986, ptr %985, align 8, !tbaa !5
  %987 = getelementptr inbounds %class.anon.449, ptr %102, i32 0, i32 1
  %988 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %988, ptr %987, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %101, ptr noundef nonnull align 8 dereferenceable(16) %102) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %984, ptr noundef %101)
          to label %989 unwind label %990

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

990:                                              ; preds = %983
  %991 = landingpad { ptr, i32 }
          cleanup
  %992 = extractvalue { ptr, i32 } %991, 0
  store ptr %992, ptr %16, align 8
  %993 = extractvalue { ptr, i32 } %991, 1
  store i32 %993, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %101) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr %102) #9
  br label %1030

994:                                              ; preds = %989, %982
  br label %995

995:                                              ; preds = %994
  br label %996

996:                                              ; preds = %995
  br label %997

997:                                              ; preds = %996
  %998 = load ptr, ptr %98, align 8, !tbaa !5
  %999 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %998, i32 0, i32 0
  %1000 = load i32, ptr %999, align 8, !tbaa !69
  %1001 = load ptr, ptr %99, align 8, !tbaa !5
  %1002 = getelementptr inbounds %"struct.HIR::TypeData::Data_Pointer", ptr %1001, i32 0, i32 0
  %1003 = load i32, ptr %1002, align 8, !tbaa !69
  %1004 = icmp slt i32 %1000, %1003
  br i1 %1004, label %1012, label %1005

1005:                                             ; preds = %997
  %1006 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 1, ptr %104) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %103, ptr noundef nonnull align 1 dereferenceable(1) %104) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1006, ptr noundef %103)
          to label %1007 unwind label %1008

1007:                                             ; preds = %1005
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #9
  br label %1012

1008:                                             ; preds = %1005
  %1009 = landingpad { ptr, i32 }
          cleanup
  %1010 = extractvalue { ptr, i32 } %1009, 0
  store ptr %1010, ptr %16, align 8
  %1011 = extractvalue { ptr, i32 } %1009, 1
  store i32 %1011, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %103) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr %104) #9
  br label %1030

1012:                                             ; preds = %1007, %997
  br label %1013

1013:                                             ; preds = %1012
  br label %1014

1014:                                             ; preds = %1013
  %1015 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %105, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %1015, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %1016 unwind label %967

1016:                                             ; preds = %1014
  %1017 = getelementptr inbounds %"struct.MIR::RValue::Data_Cast", ptr %105, i32 0, i32 1
  %1018 = load ptr, ptr %10, align 8, !tbaa !5
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %1017, ptr noundef nonnull align 8 dereferenceable(8) %1018)
          to label %1019 unwind label %1021

1019:                                             ; preds = %1016
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef %105)
          to label %1020 unwind label %1025

1020:                                             ; preds = %1019
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %105) #9
  store i32 1, ptr %35, align 4
  br label %1029

1021:                                             ; preds = %1016
  %1022 = landingpad { ptr, i32 }
          cleanup
  %1023 = extractvalue { ptr, i32 } %1022, 0
  store ptr %1023, ptr %16, align 8
  %1024 = extractvalue { ptr, i32 } %1022, 1
  store i32 %1024, ptr %17, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %1015) #9
  br label %1030

1025:                                             ; preds = %1019
  %1026 = landingpad { ptr, i32 }
          cleanup
  %1027 = extractvalue { ptr, i32 } %1026, 0
  store ptr %1027, ptr %16, align 8
  %1028 = extractvalue { ptr, i32 } %1026, 1
  store i32 %1028, ptr %17, align 4
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %105) #9
  br label %1030

1029:                                             ; preds = %1020, %962
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1060

1030:                                             ; preds = %1025, %1021, %1008, %990, %971, %967
  call void @llvm.lifetime.end.p0(i64 8, ptr %99) #9
  br label %1031

1031:                                             ; preds = %1030, %963
  call void @llvm.lifetime.end.p0(i64 8, ptr %98) #9
  br label %1061

1032:                                             ; preds = %916
  br label %1033

1033:                                             ; preds = %1032
  call void @llvm.lifetime.start.p0(i64 8, ptr %106) #9
  store ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr %106, align 8, !tbaa !5
  %1034 = load ptr, ptr %8, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr %108) #9
  %1035 = getelementptr inbounds %class.anon.452, ptr %108, i32 0, i32 0
  store ptr %106, ptr %1035, align 8, !tbaa !5
  %1036 = getelementptr inbounds %class.anon.452, ptr %108, i32 0, i32 1
  %1037 = load ptr, ptr %10, align 8, !tbaa !5
  store ptr %1037, ptr %1036, align 8, !tbaa !5
  %1038 = getelementptr inbounds %class.anon.452, ptr %108, i32 0, i32 2
  %1039 = load ptr, ptr %11, align 8, !tbaa !5
  store ptr %1039, ptr %1038, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %107, ptr noundef nonnull align 8 dereferenceable(24) %108)
          to label %1040 unwind label %1043

1040:                                             ; preds = %1033
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1034, ptr noundef %107)
          to label %1041 unwind label %1047

1041:                                             ; preds = %1040
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #9
  %1042 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1042, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1042, ptr @_ZTIPKc, ptr null) #11
          to label %1068 unwind label %1052

1043:                                             ; preds = %1033
  %1044 = landingpad { ptr, i32 }
          cleanup
  %1045 = extractvalue { ptr, i32 } %1044, 0
  store ptr %1045, ptr %16, align 8
  %1046 = extractvalue { ptr, i32 } %1044, 1
  store i32 %1046, ptr %17, align 4
  br label %1051

1047:                                             ; preds = %1040
  %1048 = landingpad { ptr, i32 }
          cleanup
  %1049 = extractvalue { ptr, i32 } %1048, 0
  store ptr %1049, ptr %16, align 8
  %1050 = extractvalue { ptr, i32 } %1048, 1
  store i32 %1050, ptr %17, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %107) #9
  br label %1051

1051:                                             ; preds = %1047, %1043
  call void @llvm.lifetime.end.p0(i64 24, ptr %108) #9
  br label %1056

1052:                                             ; preds = %1041
  %1053 = landingpad { ptr, i32 }
          cleanup
  %1054 = extractvalue { ptr, i32 } %1053, 0
  store ptr %1054, ptr %16, align 8
  %1055 = extractvalue { ptr, i32 } %1053, 1
  store i32 %1055, ptr %17, align 4
  br label %1056

1056:                                             ; preds = %1052, %1051
  call void @llvm.lifetime.end.p0(i64 8, ptr %106) #9
  br label %1061

1057:                                             ; No predecessors!
  br label %1058

1058:                                             ; preds = %1057
  %1059 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %1059, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %1059, ptr @_ZTIPKc, ptr null) #11
          to label %1068 unwind label %141

1060:                                             ; preds = %1029, %901, %848
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #9
  ret void

1061:                                             ; preds = %1056, %1031, %931, %910, %883, %862, %145, %141
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %13) #9
  br label %1062

1062:                                             ; preds = %1061, %137
  call void @llvm.lifetime.end.p0(i64 40, ptr %13) #9
  br label %1063

1063:                                             ; preds = %1062
  %1064 = load ptr, ptr %16, align 8
  %1065 = load i32, ptr %17, align 4
  %1066 = insertvalue { ptr, i32 } poison, ptr %1064, 0
  %1067 = insertvalue { ptr, i32 } %1066, i32 %1065, 1
  resume { ptr, i32 } %1067

1068:                                             ; preds = %1058, %1041, %328
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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, !31, i64 220}
!10 = !{!"_ZTSN3HIR6StructE", !11, i64 0, !28, i64 96, !29, i64 104, !31, i64 136, !31, i64 140, !32, i64 144, !43, i64 200, !47, i64 248}
!11 = !{!"_ZTSN3HIR13GenericParamsE", !12, i64 0, !16, i64 24, !20, i64 48, !24, i64 72}
!12 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!29 = !{!"_ZTSN3HIR6Struct4DataE", !30, i64 0, !7, i64 8}
!30 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!31 = !{!"int", !7, i64 0}
!32 = !{!"_ZTSN3HIR13TraitMarkingsE", !33, i64 0, !33, i64 1, !33, i64 2, !34, i64 8}
!33 = !{!"bool", !7, i64 0}
!34 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !37, i64 0, !39, i64 8}
!37 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !38, i64 0}
!38 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!39 = !{!"_ZTSSt15_Rb_tree_header", !40, i64 0, !42, i64 32}
!40 = !{!"_ZTSSt18_Rb_tree_node_base", !41, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!42 = !{!"long", !7, i64 0}
!43 = !{!"_ZTSN3HIR14StructMarkingsE", !33, i64 0, !31, i64 4, !44, i64 8, !31, i64 12, !45, i64 16, !31, i64 20, !31, i64 24, !33, i64 28, !33, i64 29, !46, i64 32}
!44 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!45 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!46 = !{!"_ZTS4U128", !42, i64 0, !42, i64 8}
!47 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!48 = !{!33, !33, i64 0}
!49 = !{i8 0, i8 2}
!50 = !{}
!51 = distinct !{!51, !52}
!52 = !{!"llvm.loop.mustprogress"}
!53 = distinct !{!53, !52}
!54 = !{!31, !31, i64 0}
!55 = !{!56, !6, i64 8}
!56 = !{!"_ZTSN3MIR11TypeResolveE", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !57, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !31, i64 112, !31, i64 116}
!57 = !{!"_ZTS9FmtLambda", !58, i64 0}
!58 = !{!"_ZTSSt8functionIFvRSoEE", !59, i64 0, !6, i64 24}
!59 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!60 = !{!56, !6, i64 16}
!61 = distinct !{!61, !52}
!62 = distinct !{!62, !52}
!63 = distinct !{!63, !52}
!64 = distinct !{!64, !52}
!65 = distinct !{!65, !52}
!66 = distinct !{!66, !52}
!67 = distinct !{!67, !52}
!68 = distinct !{!68, !52}
!69 = !{!70, !71, i64 0}
!70 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !71, i64 0, !72, i64 8}
!71 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!72 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}


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

%"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::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.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.MIR::Statement" = type { i32, %"union.MIR::Statement::DataUnion" }
%"union.MIR::Statement::DataUnion" = type { %"struct.MIR::Statement::Data_Assign" }
%"struct.MIR::Statement::Data_Assign" = type { %"struct.MIR::LValue", %"class.MIR::RValue" }
%class.TraceLog = type { ptr, %"class.std::function" }
%"class.std::function" = type { %"class.std::_Function_base", ptr }
%"class.std::_Function_base" = type { %"union.std::_Any_data", ptr }
%"union.std::_Any_data" = type { %"union.std::_Nocopy_types" }
%"union.std::_Nocopy_types" = type { { i64, i64 } }
%class.anon.439 = type { ptr, ptr, ptr }
%class.anon.440 = type { ptr, ptr }
%class.anon.441 = type { i8 }
%class.anon.443 = type { ptr, ptr }
%class.anon.444 = type { ptr, ptr }
%class.anon.445 = 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.std::vector.92" = type { %"struct.std::_Vector_base.93" }
%"struct.std::_Vector_base.93" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl" = type { %"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" }
%"struct.std::_Vector_base<MIR::Param, std::allocator<MIR::Param>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%class.anon.446 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Struct" = type { %"class.HIR::GenericPath", %"class.std::vector.92" }
%class.anon.447 = type { ptr, ptr }
%class.anon.448 = type { ptr, ptr }
%class.anon.449 = type { ptr, ptr }
%class.anon.450 = type { i8 }
%"struct.MIR::RValue::Data_Cast" = type { %"struct.MIR::LValue", %"class.HIR::TypeRef" }
%class.anon.452 = type { ptr, ptr, 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
@__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE = external hidden unnamed_addr constant [26 x i8], align 1
@__PRETTY_FUNCTION__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE = external hidden unnamed_addr constant [145 x i8], align 1

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

declare noundef zeroext i1 @_Z13debug_enabledv() local_unnamed_addr #1

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

declare i32 @__gxx_personality_v0(...)

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

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

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

declare ptr @__cxa_allocate_exception(i64) local_unnamed_addr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_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 #3 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 #3 align 2

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef) local_unnamed_addr #3

; Function Attrs: mustprogress uwtable
define dso_local void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind noalias writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %4, ptr noundef %5) local_unnamed_addr #3 personality ptr @__gxx_personality_v0 {
  %7 = alloca %class.TraceLog, align 8
  %8 = alloca %"class.std::function", align 8
  %9 = alloca %class.anon.439, align 8
  %10 = alloca %"class.std::function", align 8
  %11 = alloca %class.anon.440, align 8
  %12 = alloca %"class.std::function", align 8
  %13 = alloca %class.anon.441, align 1
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.443, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.444, align 8
  %18 = alloca %"class.std::function", align 8
  %19 = alloca %class.anon.445, align 8
  %20 = alloca %struct.MonomorphStatePtr, align 8
  %21 = alloca %struct.MonomorphStatePtr, align 8
  %22 = alloca %"class.std::vector.92", align 8
  %23 = alloca ptr, align 8
  %24 = alloca %"class.std::function", align 8
  %25 = alloca %class.anon.446, align 8
  %26 = alloca %"class.HIR::TypeRef", align 8
  %27 = alloca %"class.HIR::TypeRef", align 8
  %28 = alloca %"class.MIR::RValue", align 8
  %29 = alloca %"struct.MIR::LValue", align 8
  %30 = alloca %"struct.MIR::LValue", align 8
  %31 = alloca %"struct.MIR::LValue", align 8
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %"class.MIR::RValue", align 8
  %34 = alloca %"class.MIR::Param", align 8
  %35 = alloca %"struct.MIR::LValue", align 8
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca %"class.MIR::RValue", align 8
  %38 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.MIR::RValue", align 8
  %42 = alloca %"class.MIR::Param", align 8
  %43 = alloca %"struct.MIR::LValue", align 8
  %44 = alloca %"class.MIR::Param", align 8
  %45 = alloca %"struct.MIR::LValue", align 8
  %46 = alloca %"struct.MIR::LValue", align 8
  %47 = alloca %"class.HIR::TypeRef", align 8
  %48 = alloca %"class.HIR::TypeRef", align 8
  %49 = alloca %"class.MIR::RValue", align 8
  %50 = alloca %"struct.MIR::LValue", align 8
  %51 = alloca %"struct.MIR::LValue", align 8
  %52 = alloca %"struct.MIR::LValue", align 8
  %53 = alloca %"class.HIR::TypeRef", align 8
  %54 = alloca %"class.MIR::Statement", align 8
  %55 = alloca %"struct.MIR::Statement::Data_Assign", 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_Struct", align 8
  %61 = alloca %"struct.MIR::LValue", align 8
  %62 = alloca %"class.HIR::TypeRef", align 8
  %63 = alloca %"class.MIR::RValue", align 8
  %64 = alloca %"class.MIR::Param", align 8
  %65 = alloca %"struct.MIR::LValue", align 8
  %66 = alloca %"class.MIR::Param", align 8
  %67 = alloca %"struct.MIR::LValue", align 8
  %68 = alloca %"struct.MIR::LValue", align 8
  %69 = alloca %"struct.MIR::RValue::Data_Struct", align 8
  %70 = alloca %"class.std::function", align 8
  %71 = alloca %class.anon.447, align 8
  %72 = alloca %"struct.MIR::LValue", align 8
  %73 = alloca %"class.std::function", align 8
  %74 = alloca %class.anon.448, align 8
  %75 = alloca %"struct.MIR::LValue", align 8
  %76 = alloca %"class.std::function", align 8
  %77 = alloca %class.anon.449, align 8
  %78 = alloca %"class.std::function", align 8
  %79 = alloca %class.anon.450, align 1
  %80 = alloca %"struct.MIR::RValue::Data_Cast", align 8
  %81 = alloca ptr, align 8
  %82 = alloca %"class.std::function", align 8
  %83 = alloca %class.anon.452, align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %7) #9
  %84 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %85 = select i1 %84, ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr null
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %9) #9
  store ptr %3, ptr %9, align 8, !tbaa !5
  %86 = getelementptr inbounds i8, ptr %9, i64 8
  store ptr %4, ptr %86, align 8, !tbaa !5
  %87 = getelementptr inbounds i8, ptr %9, i64 16
  store ptr %5, ptr %87, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %8, ptr noundef nonnull align 8 dereferenceable(24) %9)
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %7, ptr noundef %85, ptr noundef nonnull %8)
          to label %88 unwind label %97

88:                                               ; preds = %6
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  %89 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %90 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %89)
  br i1 %90, label %91, label %414

91:                                               ; preds = %88
  %92 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %93 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %92)
  br i1 %93, label %101, label %94

94:                                               ; preds = %91
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %11) #9
  store ptr %4, ptr %11, align 8, !tbaa !5
  %95 = getelementptr inbounds i8, ptr %11, i64 8
  store ptr %3, ptr %95, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %10, ptr noundef nonnull align 8 dereferenceable(16) %11) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %10)
          to label %96 unwind label %99

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

97:                                               ; preds = %6
  %98 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %8) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %9) #9
  br label %505

99:                                               ; preds = %94
  %100 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %10) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %11) #9
  br label %504

101:                                              ; preds = %96, %91
  %102 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %103 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %102)
  %104 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %105 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %104)
  %106 = getelementptr inbounds i8, ptr %103, i64 88
  %107 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
  br i1 %107, label %112, label %108

108:                                              ; preds = %101
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %13) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %12, ptr noundef nonnull align 1 dereferenceable(1) %13) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %12)
          to label %109 unwind label %110

109:                                              ; preds = %108
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %12) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %13) #9
  br label %112

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

112:                                              ; preds = %101, %109
  %113 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
  %114 = getelementptr inbounds i8, ptr %105, i64 88
  %115 = call noundef i32 @_ZNK3HIR15TypePathBinding3tagEv(ptr noundef nonnull align 8 dereferenceable(16) %114)
  %116 = icmp eq i32 %113, %115
  br i1 %116, label %122, label %117

117:                                              ; preds = %112
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #9
  store ptr %4, ptr %15, align 8, !tbaa !5
  %118 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %3, ptr %118, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_3vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %14)
          to label %119 unwind label %120

119:                                              ; preds = %117
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %122

120:                                              ; preds = %117
  %121 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #9
  br label %504

122:                                              ; preds = %112, %119
  %123 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
  %124 = load ptr, ptr %123, align 8, !tbaa !5
  %125 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %114)
  %126 = load ptr, ptr %125, align 8, !tbaa !5
  %127 = icmp eq ptr %124, %126
  br i1 %127, label %133, label %128

128:                                              ; preds = %122
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %17) #9
  store ptr %4, ptr %17, align 8, !tbaa !5
  %129 = getelementptr inbounds i8, ptr %17, i64 8
  store ptr %3, ptr %129, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_4vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(16) %17) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %16)
          to label %130 unwind label %131

130:                                              ; preds = %128
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  br label %133

131:                                              ; preds = %128
  %132 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %17) #9
  br label %504

133:                                              ; preds = %130, %122
  %134 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %106)
  %135 = load ptr, ptr %134, align 8, !tbaa !5
  %136 = getelementptr inbounds i8, ptr %135, i64 220
  %137 = load i32, ptr %136, align 4, !tbaa !9
  %.not = icmp eq i32 %137, -1
  br i1 %.not, label %138, label %142

138:                                              ; preds = %133
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %19) #9
  store ptr %4, ptr %19, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_5vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %18, ptr noundef nonnull align 8 dereferenceable(8) %19) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %18)
          to label %139 unwind label %140

139:                                              ; preds = %138
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %142

140:                                              ; preds = %138
  %141 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %19) #9
  br label %504

142:                                              ; preds = %139, %133
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %20) #9
  %143 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %103)
  %144 = getelementptr inbounds i8, ptr %143, i64 8
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %20, ptr noundef null, ptr noundef nonnull %144, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %145 unwind label %149

145:                                              ; preds = %142
  call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %21) #9
  %146 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %105)
  %147 = getelementptr inbounds i8, ptr %146, i64 8
  invoke void @_ZN17MonomorphStatePtrC2EPKN3HIR7TypeRefEPKNS0_10PathParamsES6_S6_S6_(ptr noundef nonnull align 8 dereferenceable(128) %21, ptr noundef null, ptr noundef nonnull %147, ptr noundef null, ptr noundef null, ptr noundef null)
          to label %.lr.ph319 unwind label %151

.loopexit263:                                     ; preds = %399, %277, %.lr.ph319, %.preheader, %.preheader255
  %148 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %103)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %69, ptr noundef nonnull align 8 dereferenceable(32) %148)
          to label %404 unwind label %407

149:                                              ; preds = %142
  %150 = landingpad { ptr, i32 }
          cleanup
  br label %413

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

.lr.ph319:                                        ; preds = %145
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %22) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  %153 = getelementptr inbounds i8, ptr %135, i64 104
  %154 = getelementptr inbounds i8, ptr %1, i64 16
  %155 = getelementptr inbounds i8, ptr %1, i64 8
  %156 = getelementptr inbounds i8, ptr %60, i64 32
  %157 = getelementptr inbounds i8, ptr %55, i64 32
  %158 = getelementptr inbounds i8, ptr %38, i64 32
  %159 = call noundef i32 @_ZNK3HIR6Struct4Data3tagEv(ptr noundef nonnull align 8 dereferenceable(32) %153)
  switch i32 %159, label %.loopexit263 [
    i32 0, label %160
    i32 1, label %161
    i32 2, label %.lr.ph317
    i32 3, label %.lr.ph313
  ]

160:                                              ; preds = %.lr.ph319
  call void @__assert_fail(ptr noundef nonnull @.str.3, ptr noundef nonnull @.str.4, i32 noundef 840, ptr noundef nonnull @__PRETTY_FUNCTION__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE) #10
  unreachable

161:                                              ; preds = %.lr.ph319
  %162 = call noundef nonnull align 1 dereferenceable(1) ptr @_ZNK3HIR6Struct4Data7as_UnitEv(ptr noundef nonnull align 8 dereferenceable(32) %153)
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %23) #9
  store ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr %23, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %25) #9
  store ptr %23, ptr %25, align 8, !tbaa !5
  %163 = getelementptr inbounds i8, ptr %25, i64 8
  store ptr %4, ptr %163, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_6vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %24, ptr noundef nonnull align 8 dereferenceable(16) %25) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %24)
          to label %164 unwind label %166

164:                                              ; preds = %161
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  %165 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %165, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %165, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %506 unwind label %168

166:                                              ; preds = %161
  %167 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %24) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %25) #9
  br label %170

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

170:                                              ; preds = %168, %166
  %.pn245 = phi { ptr, i32 } [ %169, %168 ], [ %167, %166 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %23) #9
  br label %411

171:                                              ; preds = %.lr.ph317
  %172 = landingpad { ptr, i32 }
          cleanup
  br label %411

.lr.ph317:                                        ; preds = %.lr.ph319
  %173 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_TupleEv(ptr noundef nonnull align 8 dereferenceable(32) %153)
  %174 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %174)
          to label %.preheader unwind label %171

.preheader:                                       ; preds = %.lr.ph317
  %175 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  %.not322 = icmp eq i64 %175, 0
  br i1 %.not322, label %.loopexit263, label %.lr.ph316

.lr.ph316:                                        ; preds = %.preheader, %277
  %176 = phi i64 [ %279, %277 ], [ 0, %.preheader ]
  %.0185315 = phi i32 [ %278, %277 ], [ 0, %.preheader ]
  %177 = load i32, ptr %136, align 4, !tbaa !9
  %178 = icmp eq i32 %.0185315, %177
  br i1 %178, label %179, label %220

179:                                              ; preds = %.lr.ph316
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %26) #9
  %180 = load ptr, ptr %155, align 8, !tbaa !48
  %181 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #9
  %182 = getelementptr inbounds i8, ptr %181, i64 16
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %26, ptr noundef nonnull align 8 dereferenceable(96) %20, ptr noundef nonnull align 8 dereferenceable(8) %180, ptr noundef nonnull align 8 dereferenceable(8) %182, i1 noundef zeroext false)
          to label %183 unwind label %195

183:                                              ; preds = %179
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #9
  %184 = load ptr, ptr %155, align 8, !tbaa !48
  %185 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #9
  %186 = getelementptr inbounds i8, ptr %185, i64 16
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %27, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull align 8 dereferenceable(8) %186, i1 noundef zeroext false)
          to label %187 unwind label %197

187:                                              ; preds = %183
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %28) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %30, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %188 unwind label %199

188:                                              ; preds = %187
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %29, ptr noundef nonnull %30, i32 noundef %.0185315)
          to label %189 unwind label %201

189:                                              ; preds = %188
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %28, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %26, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull %29)
          to label %190 unwind label %203

190:                                              ; preds = %189
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %32, ptr noundef nonnull align 8 dereferenceable(8) %26)
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %33, ptr noundef nonnull align 8 dereferenceable(112) %28) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %31, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %32, ptr noundef nonnull %33)
          to label %191 unwind label %206

191:                                              ; preds = %190
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %33) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %34) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %35, ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %192 unwind label %208

192:                                              ; preds = %191
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %34, ptr noundef nonnull %35)
          to label %193 unwind label %210

193:                                              ; preds = %192
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %34)
          to label %194 unwind label %212

194:                                              ; preds = %193
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %34) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %28) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %28) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %277

195:                                              ; preds = %179
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %219

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

199:                                              ; preds = %187
  %200 = landingpad { ptr, i32 }
          cleanup
  br label %217

201:                                              ; preds = %188
  %202 = landingpad { ptr, i32 }
          cleanup
  br label %205

203:                                              ; preds = %189
  %204 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %29) #9
  br label %205

205:                                              ; preds = %203, %201
  %.pn234 = phi { ptr, i32 } [ %204, %203 ], [ %202, %201 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #9
  br label %217

206:                                              ; preds = %190
  %207 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %33) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #9
  br label %216

208:                                              ; preds = %191
  %209 = landingpad { ptr, i32 }
          cleanup
  br label %215

210:                                              ; preds = %192
  %211 = landingpad { ptr, i32 }
          cleanup
  br label %214

212:                                              ; preds = %193
  %213 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %34) #9
  br label %214

214:                                              ; preds = %212, %210
  %.pn236 = phi { ptr, i32 } [ %213, %212 ], [ %211, %210 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #9
  br label %215

215:                                              ; preds = %214, %208
  %.pn236.pn = phi { ptr, i32 } [ %.pn236, %214 ], [ %209, %208 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %34) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #9
  br label %216

216:                                              ; preds = %215, %206
  %.pn236.pn.pn = phi { ptr, i32 } [ %.pn236.pn, %215 ], [ %207, %206 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %28) #9
  br label %217

217:                                              ; preds = %216, %205, %199
  %.pn236.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn, %216 ], [ %.pn234, %205 ], [ %200, %199 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %28) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #9
  br label %218

218:                                              ; preds = %217, %197
  %.pn236.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn, %217 ], [ %198, %197 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %26) #9
  br label %219

219:                                              ; preds = %218, %195
  %.pn236.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn236.pn.pn.pn.pn, %218 ], [ %196, %195 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %26) #9
  br label %411

220:                                              ; preds = %.lr.ph316
  %221 = load ptr, ptr %154, align 8, !tbaa !53
  %222 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #9
  %223 = getelementptr inbounds i8, ptr %222, i64 16
  %224 = invoke noundef ptr @_ZNK18StaticTraitResolve20is_type_phantom_dataERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %221, ptr noundef nonnull align 8 dereferenceable(8) %223)
          to label %225 unwind label %240

225:                                              ; preds = %220
  %.not223 = icmp eq ptr %224, null
  br i1 %.not223, label %261, label %226

226:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %36) #9
  %227 = load ptr, ptr %155, align 8, !tbaa !48
  %228 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %173, i64 noundef %176) #9
  %229 = getelementptr inbounds i8, ptr %228, i64 16
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %36, ptr noundef nonnull align 8 dereferenceable(96) %20, ptr noundef nonnull align 8 dereferenceable(8) %227, ptr noundef nonnull align 8 dereferenceable(8) %229, i1 noundef zeroext false)
          to label %230 unwind label %242

230:                                              ; preds = %226
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %37) #9
  %231 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %36)
  %232 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %231)
  %233 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %232)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %233)
          to label %234 unwind label %244

234:                                              ; preds = %230
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %158, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %158) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %37, ptr noundef nonnull %38)
          to label %235 unwind label %246

235:                                              ; preds = %234
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(8) %36)
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %41, ptr noundef nonnull align 8 dereferenceable(112) %37) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %40, ptr noundef nonnull %41)
          to label %236 unwind label %248

236:                                              ; preds = %235
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %41) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %42) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %43, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %237 unwind label %250

237:                                              ; preds = %236
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %42, ptr noundef nonnull %43)
          to label %238 unwind label %252

238:                                              ; preds = %237
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %42)
          to label %239 unwind label %254

239:                                              ; preds = %238
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %37) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %277

240:                                              ; preds = %220
  %241 = landingpad { ptr, i32 }
          cleanup
  br label %411

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

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

246:                                              ; preds = %234
  %247 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %38) #9
  br label %259

248:                                              ; preds = %235
  %249 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %41) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #9
  br label %258

250:                                              ; preds = %236
  %251 = landingpad { ptr, i32 }
          cleanup
  br label %257

252:                                              ; preds = %237
  %253 = landingpad { ptr, i32 }
          cleanup
  br label %256

254:                                              ; preds = %238
  %255 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %42) #9
  br label %256

256:                                              ; preds = %254, %252
  %.pn228 = phi { ptr, i32 } [ %255, %254 ], [ %253, %252 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %43) #9
  br label %257

257:                                              ; preds = %256, %250
  %.pn228.pn = phi { ptr, i32 } [ %.pn228, %256 ], [ %251, %250 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %42) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #9
  br label %258

258:                                              ; preds = %257, %248
  %.pn228.pn.pn = phi { ptr, i32 } [ %.pn228.pn, %257 ], [ %249, %248 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #9
  br label %259

259:                                              ; preds = %258, %246, %244
  %.pn228.pn.pn.pn = phi { ptr, i32 } [ %.pn228.pn.pn, %258 ], [ %247, %246 ], [ %245, %244 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %37) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #9
  br label %260

260:                                              ; preds = %259, %242
  %.pn228.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn228.pn.pn.pn, %259 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %36) #9
  br label %411

261:                                              ; preds = %225
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %44) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %46, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %262 unwind label %266

262:                                              ; preds = %261
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %45, ptr noundef nonnull %46, i32 noundef %.0185315)
          to label %263 unwind label %268

263:                                              ; preds = %262
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %44, ptr noundef nonnull %45)
          to label %264 unwind label %270

264:                                              ; preds = %263
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %44)
          to label %265 unwind label %272

265:                                              ; preds = %264
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %44) #9
  br label %277

266:                                              ; preds = %261
  %267 = landingpad { ptr, i32 }
          cleanup
  br label %276

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

270:                                              ; preds = %263
  %271 = landingpad { ptr, i32 }
          cleanup
  br label %274

272:                                              ; preds = %264
  %273 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %44) #9
  br label %274

274:                                              ; preds = %272, %270
  %.pn224 = phi { ptr, i32 } [ %273, %272 ], [ %271, %270 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #9
  br label %275

275:                                              ; preds = %274, %268
  %.pn224.pn = phi { ptr, i32 } [ %.pn224, %274 ], [ %269, %268 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #9
  br label %276

276:                                              ; preds = %275, %266
  %.pn224.pn.pn = phi { ptr, i32 } [ %.pn224.pn, %275 ], [ %267, %266 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %44) #9
  br label %411

277:                                              ; preds = %194, %265, %239
  %278 = add i32 %.0185315, 1
  %279 = zext i32 %278 to i64
  %280 = call noundef i64 @_ZNKSt6vectorIN3HIR6VisEntINS0_7TypeRefEEESaIS3_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %173) #9
  %281 = icmp ugt i64 %280, %279
  br i1 %281, label %.lr.ph316, label %.loopexit263, !llvm.loop !54

282:                                              ; preds = %.lr.ph313
  %283 = landingpad { ptr, i32 }
          cleanup
  br label %411

.lr.ph313:                                        ; preds = %.lr.ph319
  %284 = call noundef nonnull align 8 dereferenceable(24) ptr @_ZNK3HIR6Struct4Data8as_NamedEv(ptr noundef nonnull align 8 dereferenceable(32) %153)
  %285 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %284) #9
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE7reserveEm(ptr noundef nonnull align 8 dereferenceable(24) %22, i64 noundef %285)
          to label %.preheader255 unwind label %282

.preheader255:                                    ; preds = %.lr.ph313
  %286 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %284) #9
  %.not321 = icmp eq i64 %286, 0
  br i1 %.not321, label %.loopexit263, label %.lr.ph

.lr.ph:                                           ; preds = %.preheader255, %399
  %287 = phi i64 [ %401, %399 ], [ 0, %.preheader255 ]
  %.0182312 = phi i32 [ %400, %399 ], [ 0, %.preheader255 ]
  %288 = load i32, ptr %136, align 4, !tbaa !9
  %289 = icmp eq i32 %.0182312, %288
  br i1 %289, label %290, label %342

290:                                              ; preds = %.lr.ph
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %47) #9
  %291 = load ptr, ptr %155, align 8, !tbaa !48
  %292 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %287) #9
  %293 = getelementptr inbounds i8, ptr %292, i64 24
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %47, ptr noundef nonnull align 8 dereferenceable(96) %20, ptr noundef nonnull align 8 dereferenceable(8) %291, ptr noundef nonnull align 8 dereferenceable(8) %293, i1 noundef zeroext false)
          to label %294 unwind label %309

294:                                              ; preds = %290
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %48) #9
  %295 = load ptr, ptr %155, align 8, !tbaa !48
  %296 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %287) #9
  %297 = getelementptr inbounds i8, ptr %296, i64 24
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %48, ptr noundef nonnull align 8 dereferenceable(96) %21, ptr noundef nonnull align 8 dereferenceable(8) %295, ptr noundef nonnull align 8 dereferenceable(8) %297, i1 noundef zeroext false)
          to label %298 unwind label %311

298:                                              ; preds = %294
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %49) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %51, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %299 unwind label %313

299:                                              ; preds = %298
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %50, ptr noundef nonnull %51, i32 noundef %.0182312)
          to label %300 unwind label %315

300:                                              ; preds = %299
  invoke void @_Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %49, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %47, ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull %50)
          to label %301 unwind label %317

301:                                              ; preds = %300
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %52) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %53, ptr noundef nonnull align 8 dereferenceable(8) %47)
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %52, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %53)
          to label %302 unwind label %320

302:                                              ; preds = %301
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %55, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %303 unwind label %322

303:                                              ; preds = %302
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %157, ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %54, ptr noundef nonnull %55)
          to label %304 unwind label %324

304:                                              ; preds = %303
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %54)
          to label %305 unwind label %326

305:                                              ; preds = %304
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #9
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %55) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %56) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %57, ptr noundef nonnull align 8 dereferenceable(32) %52)
          to label %306 unwind label %329

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

307:                                              ; preds = %306
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %56)
          to label %308 unwind label %333

308:                                              ; preds = %307
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %399

309:                                              ; preds = %290
  %310 = landingpad { ptr, i32 }
          cleanup
  br label %341

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

313:                                              ; preds = %298
  %314 = landingpad { ptr, i32 }
          cleanup
  br label %339

315:                                              ; preds = %299
  %316 = landingpad { ptr, i32 }
          cleanup
  br label %319

317:                                              ; preds = %300
  %318 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #9
  br label %319

319:                                              ; preds = %317, %315
  %.pn209 = phi { ptr, i32 } [ %318, %317 ], [ %316, %315 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %51) #9
  br label %339

320:                                              ; preds = %301
  %321 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %53) #9
  br label %338

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

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

326:                                              ; preds = %304
  %327 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %54) #9
  br label %328

328:                                              ; preds = %326, %324
  %.pn211 = phi { ptr, i32 } [ %327, %326 ], [ %325, %324 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %55) #9
  br label %337

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

331:                                              ; preds = %306
  %332 = landingpad { ptr, i32 }
          cleanup
  br label %335

333:                                              ; preds = %307
  %334 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %56) #9
  br label %335

335:                                              ; preds = %333, %331
  %.pn213 = phi { ptr, i32 } [ %334, %333 ], [ %332, %331 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %57) #9
  br label %336

336:                                              ; preds = %335, %329
  %.pn213.pn = phi { ptr, i32 } [ %.pn213, %335 ], [ %330, %329 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %56) #9
  br label %337

337:                                              ; preds = %336, %328, %322
  %.pn213.pn.pn = phi { ptr, i32 } [ %.pn213.pn, %336 ], [ %.pn211, %328 ], [ %323, %322 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #9
  br label %338

338:                                              ; preds = %337, %320
  %.pn213.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn, %337 ], [ %321, %320 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %52) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %49) #9
  br label %339

339:                                              ; preds = %338, %319, %313
  %.pn213.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn, %338 ], [ %.pn209, %319 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %49) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #9
  br label %340

340:                                              ; preds = %339, %311
  %.pn213.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn.pn, %339 ], [ %312, %311 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %48) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %47) #9
  br label %341

341:                                              ; preds = %340, %309
  %.pn213.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn.pn.pn, %340 ], [ %310, %309 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %47) #9
  br label %411

342:                                              ; preds = %.lr.ph
  %343 = load ptr, ptr %154, align 8, !tbaa !53
  %344 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %287) #9
  %345 = getelementptr inbounds i8, ptr %344, i64 24
  %346 = invoke noundef ptr @_ZNK18StaticTraitResolve20is_type_phantom_dataERKN3HIR7TypeRefE(ptr noundef nonnull align 8 dereferenceable(424) %343, ptr noundef nonnull align 8 dereferenceable(8) %345)
          to label %347 unwind label %362

347:                                              ; preds = %342
  %.not198 = icmp eq ptr %346, null
  br i1 %.not198, label %383, label %348

348:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %58) #9
  %349 = load ptr, ptr %155, align 8, !tbaa !48
  %350 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EEixEm(ptr noundef nonnull align 8 dereferenceable(24) %284, i64 noundef %287) #9
  %351 = getelementptr inbounds i8, ptr %350, i64 24
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %58, ptr noundef nonnull align 8 dereferenceable(96) %20, ptr noundef nonnull align 8 dereferenceable(8) %349, ptr noundef nonnull align 8 dereferenceable(8) %351, i1 noundef zeroext false)
          to label %352 unwind label %364

352:                                              ; preds = %348
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %59) #9
  %353 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %58)
  %354 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %353)
  %355 = call noundef nonnull align 8 dereferenceable(32) ptr @_ZNK3HIR4Path4Data10as_GenericEv(ptr noundef nonnull align 8 dereferenceable(88) %354)
  invoke void @_ZNK3HIR11GenericPath5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::GenericPath") align 8 %60, ptr noundef nonnull align 8 dereferenceable(32) %355)
          to label %356 unwind label %366

356:                                              ; preds = %352
  call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(24) %156, i8 0, i64 24, i1 false)
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2Ev(ptr noundef nonnull align 8 dereferenceable(24) %156) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %59, ptr noundef nonnull %60)
          to label %357 unwind label %368

357:                                              ; preds = %356
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %60) #9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %61) #9
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %62, ptr noundef nonnull align 8 dereferenceable(8) %58)
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %63, ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %61, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull %62, ptr noundef nonnull %63)
          to label %358 unwind label %370

358:                                              ; preds = %357
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %64) #9
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %65, ptr noundef nonnull align 8 dereferenceable(32) %61)
          to label %359 unwind label %372

359:                                              ; preds = %358
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %64, ptr noundef nonnull %65)
          to label %360 unwind label %374

360:                                              ; preds = %359
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %64)
          to label %361 unwind label %376

361:                                              ; preds = %360
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %64) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %59) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  br label %399

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

364:                                              ; preds = %348
  %365 = landingpad { ptr, i32 }
          cleanup
  br label %382

366:                                              ; preds = %352
  %367 = landingpad { ptr, i32 }
          cleanup
  br label %381

368:                                              ; preds = %356
  %369 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %60) #9
  br label %381

370:                                              ; preds = %357
  %371 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %63) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %62) #9
  br label %380

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

374:                                              ; preds = %359
  %375 = landingpad { ptr, i32 }
          cleanup
  br label %378

376:                                              ; preds = %360
  %377 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %64) #9
  br label %378

378:                                              ; preds = %376, %374
  %.pn203 = phi { ptr, i32 } [ %377, %376 ], [ %375, %374 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %65) #9
  br label %379

379:                                              ; preds = %378, %372
  %.pn203.pn = phi { ptr, i32 } [ %.pn203, %378 ], [ %373, %372 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %64) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #9
  br label %380

380:                                              ; preds = %379, %370
  %.pn203.pn.pn = phi { ptr, i32 } [ %.pn203.pn, %379 ], [ %371, %370 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %61) #9
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %59) #9
  br label %381

381:                                              ; preds = %380, %368, %366
  %.pn203.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn, %380 ], [ %369, %368 ], [ %367, %366 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %59) #9
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %58) #9
  br label %382

382:                                              ; preds = %381, %364
  %.pn203.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn203.pn.pn.pn, %381 ], [ %365, %364 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %58) #9
  br label %411

383:                                              ; preds = %347
  call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %66) #9
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %68, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %384 unwind label %388

384:                                              ; preds = %383
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %67, ptr noundef nonnull %68, i32 noundef %.0182312)
          to label %385 unwind label %390

385:                                              ; preds = %384
  invoke void @_ZN3MIR5ParamC2ENS_6LValueE(ptr noundef nonnull align 8 dereferenceable(48) %66, ptr noundef nonnull %67)
          to label %386 unwind label %392

386:                                              ; preds = %385
  invoke void @_ZNSt6vectorIN3MIR5ParamESaIS1_EE9push_backEOS1_(ptr noundef nonnull align 8 dereferenceable(24) %22, ptr noundef nonnull align 8 dereferenceable(48) %66)
          to label %387 unwind label %394

387:                                              ; preds = %386
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %66) #9
  br label %399

388:                                              ; preds = %383
  %389 = landingpad { ptr, i32 }
          cleanup
  br label %398

390:                                              ; preds = %384
  %391 = landingpad { ptr, i32 }
          cleanup
  br label %397

392:                                              ; preds = %385
  %393 = landingpad { ptr, i32 }
          cleanup
  br label %396

394:                                              ; preds = %386
  %395 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR5ParamD2Ev(ptr noundef nonnull align 8 dereferenceable(48) %66) #9
  br label %396

396:                                              ; preds = %394, %392
  %.pn199 = phi { ptr, i32 } [ %395, %394 ], [ %393, %392 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %67) #9
  br label %397

397:                                              ; preds = %396, %390
  %.pn199.pn = phi { ptr, i32 } [ %.pn199, %396 ], [ %391, %390 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %68) #9
  br label %398

398:                                              ; preds = %397, %388
  %.pn199.pn.pn = phi { ptr, i32 } [ %.pn199.pn, %397 ], [ %389, %388 ]
  call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %66) #9
  br label %411

399:                                              ; preds = %308, %387, %361
  %400 = add i32 %.0182312, 1
  %401 = zext i32 %400 to i64
  %402 = call noundef i64 @_ZNKSt6vectorISt4pairI8RcStringN3HIR6VisEntINS2_7TypeRefEEEESaIS6_EE4sizeEv(ptr noundef nonnull align 8 dereferenceable(24) %284) #9
  %403 = icmp ugt i64 %402, %401
  br i1 %403, label %.lr.ph, label %.loopexit263, !llvm.loop !56

404:                                              ; preds = %.loopexit263
  %405 = getelementptr inbounds i8, ptr %69, i64 32
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EEC2EOS3_(ptr noundef nonnull align 8 dereferenceable(24) %405, ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  invoke void @_ZN3MIR6RValue11make_StructENS0_11Data_StructE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %69)
          to label %406 unwind label %409

406:                                              ; preds = %404
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %69) #9
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %20) #9
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %20) #9
  br label %503

407:                                              ; preds = %.loopexit263
  %408 = landingpad { ptr, i32 }
          cleanup
  br label %411

409:                                              ; preds = %404
  %410 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_StructD2Ev(ptr noundef nonnull align 8 dereferenceable(56) %69) #9
  br label %411

411:                                              ; preds = %170, %219, %240, %260, %276, %171, %341, %362, %382, %398, %282, %409, %407
  %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %410, %409 ], [ %408, %407 ], [ %.pn245, %170 ], [ %172, %171 ], [ %.pn236.pn.pn.pn.pn.pn, %219 ], [ %.pn228.pn.pn.pn.pn, %260 ], [ %.pn224.pn.pn, %276 ], [ %241, %240 ], [ %283, %282 ], [ %.pn213.pn.pn.pn.pn.pn.pn, %341 ], [ %.pn203.pn.pn.pn.pn, %382 ], [ %.pn199.pn.pn, %398 ], [ %363, %362 ]
  call void @_ZNSt6vectorIN3MIR5ParamESaIS1_EED2Ev(ptr noundef nonnull align 8 dereferenceable(24) %22) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %22) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %21) #9
  br label %412

412:                                              ; preds = %411, %151
  %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %411 ], [ %152, %151 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %21) #9
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(128) %20) #9
  br label %413

413:                                              ; preds = %412, %149
  %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %412 ], [ %150, %149 ]
  call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %20) #9
  br label %504

414:                                              ; preds = %88
  %415 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %416 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %415)
  br i1 %416, label %417, label %435

417:                                              ; preds = %414
  %418 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %419 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %418)
  br i1 %419, label %425, label %420

420:                                              ; preds = %417
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %71) #9
  store ptr %4, ptr %71, align 8, !tbaa !5
  %421 = getelementptr inbounds i8, ptr %71, i64 8
  store ptr %3, ptr %421, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_7vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %70, ptr noundef nonnull align 8 dereferenceable(16) %71) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %70)
          to label %422 unwind label %423

422:                                              ; preds = %420
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #9
  br label %425

423:                                              ; preds = %420
  %424 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %70) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %71) #9
  br label %504

425:                                              ; preds = %422, %417
  %426 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %427 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData9as_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %426)
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %72, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %428 unwind label %431

428:                                              ; preds = %425
  %429 = getelementptr inbounds i8, ptr %427, i64 8
  invoke void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %429, ptr noundef nonnull %72)
          to label %430 unwind label %433

430:                                              ; preds = %428
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  br label %503

431:                                              ; preds = %425
  %432 = landingpad { ptr, i32 }
          cleanup
  br label %504

433:                                              ; preds = %428
  %434 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %72) #9
  br label %504

435:                                              ; preds = %414
  %436 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %437 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %436)
  br i1 %437, label %438, label %489

438:                                              ; preds = %435
  %439 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %440 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %439)
  br i1 %440, label %446, label %441

441:                                              ; preds = %438
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %74) #9
  store ptr %4, ptr %74, align 8, !tbaa !5
  %442 = getelementptr inbounds i8, ptr %74, i64 8
  store ptr %3, ptr %442, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_8vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %73, ptr noundef nonnull align 8 dereferenceable(16) %74) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %73)
          to label %443 unwind label %444

443:                                              ; preds = %441
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  br label %446

444:                                              ; preds = %441
  %445 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %73) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %74) #9
  br label %504

446:                                              ; preds = %443, %438
  %447 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %3)
  %448 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %447)
  %449 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %4)
  %450 = call noundef nonnull align 8 dereferenceable(16) ptr @_ZNK3HIR8TypeData10as_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %449)
  %451 = load i32, ptr %448, align 8, !tbaa !57
  %452 = load i32, ptr %450, align 8, !tbaa !57
  %453 = icmp eq i32 %451, %452
  br i1 %453, label %454, label %462

454:                                              ; preds = %446
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %75, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %455 unwind label %458

455:                                              ; preds = %454
  %456 = getelementptr inbounds i8, ptr %450, i64 8
  invoke void @_Z18MIR_Cleanup_UnsizeRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull align 8 dereferenceable(40) %2, ptr noundef nonnull align 8 dereferenceable(8) %3, ptr noundef nonnull align 8 dereferenceable(8) %456, ptr noundef nonnull %75)
          to label %457 unwind label %460

457:                                              ; preds = %455
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %503

458:                                              ; preds = %480, %462, %454
  %459 = landingpad { ptr, i32 }
          cleanup
  br label %504

460:                                              ; preds = %455
  %461 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %75) #9
  br label %504

462:                                              ; preds = %446
  %463 = getelementptr inbounds i8, ptr %448, i64 8
  %464 = getelementptr inbounds i8, ptr %450, i64 8
  %465 = invoke noundef zeroext i1 @_ZNK3HIR7TypeRefeqERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %463, ptr noundef nonnull align 8 dereferenceable(8) %464)
          to label %466 unwind label %458

466:                                              ; preds = %462
  br i1 %465, label %472, label %467

467:                                              ; preds = %466
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %77) #9
  store ptr %4, ptr %77, align 8, !tbaa !5
  %468 = getelementptr inbounds i8, ptr %77, i64 8
  store ptr %3, ptr %468, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE3$_9vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %76, ptr noundef nonnull align 8 dereferenceable(16) %77) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %76)
          to label %469 unwind label %470

469:                                              ; preds = %467
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %472

470:                                              ; preds = %467
  %471 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %76) #9
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %77) #9
  br label %504

472:                                              ; preds = %466, %469
  %473 = load i32, ptr %448, align 8, !tbaa !57
  %474 = load i32, ptr %450, align 8, !tbaa !57
  %475 = icmp slt i32 %473, %474
  br i1 %475, label %480, label %476

476:                                              ; preds = %472
  call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %79) #9
  call void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE4$_10vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %78, ptr noundef nonnull align 1 dereferenceable(1) %79) #9
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %78)
          to label %477 unwind label %478

477:                                              ; preds = %476
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #9
  br label %480

478:                                              ; preds = %476
  %479 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %78) #9
  call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %79) #9
  br label %504

480:                                              ; preds = %477, %472
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %80, ptr noundef nonnull align 8 dereferenceable(32) %5)
          to label %481 unwind label %458

481:                                              ; preds = %480
  %482 = getelementptr inbounds i8, ptr %80, i64 32
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %482, ptr noundef nonnull align 8 dereferenceable(8) %3)
          to label %483 unwind label %485

483:                                              ; preds = %481
  invoke void @_ZN3MIR6RValue9make_CastENS0_9Data_CastE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %0, ptr noundef nonnull %80)
          to label %484 unwind label %487

484:                                              ; preds = %483
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #9
  br label %503

485:                                              ; preds = %481
  %486 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %80) #9
  br label %504

487:                                              ; preds = %483
  %488 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue9Data_CastD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %80) #9
  br label %504

489:                                              ; preds = %435
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %81) #9
  store ptr @__func__._Z25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefES8_NS_6LValueE, ptr %81, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %83) #9
  store ptr %81, ptr %83, align 8, !tbaa !5
  %490 = getelementptr inbounds i8, ptr %83, i64 8
  store ptr %3, ptr %490, align 8, !tbaa !5
  %491 = getelementptr inbounds i8, ptr %83, i64 16
  store ptr %4, ptr %491, align 8, !tbaa !5
  invoke void @"_ZNSt8functionIFvRSoEEC2IZ25MIR_Cleanup_CoerceUnsizedRKN3MIR11TypeResolveER10MirMutatorRKN3HIR7TypeRefESD_NS4_6LValueEE4$_11vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %82, ptr noundef nonnull align 8 dereferenceable(24) %83)
          to label %492 unwind label %495

492:                                              ; preds = %489
  invoke void @_ZNK3MIR11TypeResolve9print_bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %1, ptr noundef nonnull %82)
          to label %493 unwind label %497

493:                                              ; preds = %492
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %83) #9
  %494 = call ptr @__cxa_allocate_exception(i64 8) #9
  store ptr @.str, ptr %494, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %494, ptr nonnull @_ZTIPKc, ptr null) #11
          to label %506 unwind label %500

495:                                              ; preds = %489
  %496 = landingpad { ptr, i32 }
          cleanup
  br label %499

497:                                              ; preds = %492
  %498 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %82) #9
  br label %499

499:                                              ; preds = %497, %495
  %.pn = phi { ptr, i32 } [ %498, %497 ], [ %496, %495 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %83) #9
  br label %502

500:                                              ; preds = %493
  %501 = landingpad { ptr, i32 }
          cleanup
  br label %502

502:                                              ; preds = %500, %499
  %.pn192 = phi { ptr, i32 } [ %501, %500 ], [ %.pn, %499 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %81) #9
  br label %504

503:                                              ; preds = %457, %484, %430, %406
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #9
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #9
  ret void

504:                                              ; preds = %458, %460, %470, %478, %485, %487, %431, %433, %110, %120, %131, %413, %140, %502, %444, %423, %99
  %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %100, %99 ], [ %424, %423 ], [ %445, %444 ], [ %.pn192, %502 ], [ %132, %131 ], [ %121, %120 ], [ %111, %110 ], [ %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %413 ], [ %141, %140 ], [ %434, %433 ], [ %432, %431 ], [ %461, %460 ], [ %459, %458 ], [ %488, %487 ], [ %486, %485 ], [ %479, %478 ], [ %471, %470 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %7) #9
  br label %505

505:                                              ; preds = %504, %97
  %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %504 ], [ %98, %97 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %7) #9
  resume { ptr, i32 } %.pn213.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn

506:                                              ; preds = %493, %164
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

attributes #0 = { mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) }
attributes #1 = { "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #2 = { inlinehint mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #3 = { mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #4 = { nounwind "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #5 = { 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 = { mustprogress nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #8 = { mustprogress nocallback nofree nounwind willreturn memory(argmem: write) }
attributes #9 = { nounwind }
attributes #10 = { noreturn nounwind }
attributes #11 = { 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, !31, i64 220}
!10 = !{!"_ZTSN3HIR6StructE", !11, i64 0, !28, i64 96, !29, i64 104, !31, i64 136, !31, i64 140, !32, i64 144, !43, i64 200, !47, i64 248}
!11 = !{!"_ZTSN3HIR13GenericParamsE", !12, i64 0, !16, i64 24, !20, i64 48, !24, i64 72}
!12 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !14, i64 0}
!14 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !15, i64 0}
!15 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!16 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !17, i64 0}
!17 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !18, i64 0}
!18 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !19, i64 0}
!19 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!20 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !21, i64 0}
!21 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !22, i64 0}
!22 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !23, i64 0}
!23 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!24 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !25, i64 0}
!25 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !26, i64 0}
!26 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !27, i64 0}
!27 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!28 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!29 = !{!"_ZTSN3HIR6Struct4DataE", !30, i64 0, !7, i64 8}
!30 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!31 = !{!"int", !7, i64 0}
!32 = !{!"_ZTSN3HIR13TraitMarkingsE", !33, i64 0, !33, i64 1, !33, i64 2, !34, i64 8}
!33 = !{!"bool", !7, i64 0}
!34 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !37, i64 0, !39, i64 8}
!37 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !38, i64 0}
!38 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!39 = !{!"_ZTSSt15_Rb_tree_header", !40, i64 0, !42, i64 32}
!40 = !{!"_ZTSSt18_Rb_tree_node_base", !41, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!41 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!42 = !{!"long", !7, i64 0}
!43 = !{!"_ZTSN3HIR14StructMarkingsE", !33, i64 0, !31, i64 4, !44, i64 8, !31, i64 12, !45, i64 16, !31, i64 20, !31, i64 24, !33, i64 28, !33, i64 29, !46, i64 32}
!44 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!45 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!46 = !{!"_ZTS4U128", !42, i64 0, !42, i64 8}
!47 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}
!48 = !{!49, !6, i64 8}
!49 = !{!"_ZTSN3MIR11TypeResolveE", !31, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !50, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !31, i64 112, !31, i64 116}
!50 = !{!"_ZTS9FmtLambda", !51, i64 0}
!51 = !{!"_ZTSSt8functionIFvRSoEE", !52, i64 0, !6, i64 24}
!52 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!53 = !{!49, !6, i64 16}
!54 = distinct !{!54, !55}
!55 = !{!"llvm.loop.mustprogress"}
!56 = distinct !{!56, !55}
!57 = !{!58, !59, i64 0}
!58 = !{!"_ZTSN3HIR8TypeData12Data_PointerE", !59, i64 0, !60, i64 8}
!59 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!60 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}


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