; 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.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.178 = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%struct.Span = type { ptr }
%class.anon.225 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%struct.MonomorphHrlsOnly = type { %class.Monomorphiser, ptr }
%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 }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"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.anon.423 = type { ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }
%"struct.HIR::TypeData_TraitObject" = type <{ %"class.HIR::TraitPath", %"class.std::vector.109", %"struct.HIR::LifetimeRef", [4 x i8] }>
%"class.HIR::TraitPath" = type { %"class.std::unique_ptr", %"class.HIR::GenericPath", %"class.std::map.98", %"class.std::map.104", ptr }
%"class.std::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.std::map.98" = type { %"class.std::_Rb_tree.99" }
%"class.std::_Rb_tree.99" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyEqual>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyEqual>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"struct.std::_Rb_tree_header" = type { %"struct.std::_Rb_tree_node_base", i64 }
%"struct.std::_Rb_tree_node_base" = type { i32, ptr, ptr, ptr }
%"class.std::map.104" = type { %"class.std::_Rb_tree.105" }
%"class.std::_Rb_tree.105" = type { %"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" }
%"struct.std::_Rb_tree<RcString, std::pair<const RcString, HIR::TraitPath::AtyBound>, std::_Select1st<std::pair<const RcString, HIR::TraitPath::AtyBound>>, std::less<RcString>>::_Rb_tree_impl" = type { [8 x i8], %"struct.std::_Rb_tree_header" }
%"class.std::vector.109" = type { %"struct.std::_Vector_base.110" }
%"struct.std::_Vector_base.110" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::GenericPath, std::allocator<HIR::GenericPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::LifetimeRef" = type { i32 }
%"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.MIR::TypeResolve" = type { i32, ptr, ptr, ptr, %struct.FmtLambda, ptr, ptr, ptr, ptr, ptr, ptr, i32, i32 }
%struct.FmtLambda = type { %"class.std::function" }
%"class.HIR::Trait" = type { %"class.HIR::GenericParams", %"struct.HIR::LifetimeRef", %"class.std::vector.114", i8, %"class.std::unordered_map", %"class.std::unordered_map.184", %"class.std::unordered_multimap", %"class.std::unordered_map.211", i32, %"class.std::vector.114", %"struct.HIR::SimplePath" }
%"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.std::unordered_map" = type { %"class.std::_Hashtable" }
%"class.std::_Hashtable" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"struct.std::__detail::_Hash_node_base" = type { ptr }
%"struct.std::__detail::_Prime_rehash_policy" = type { float, i64 }
%"class.std::unordered_map.184" = type { %"class.std::_Hashtable.185" }
%"class.std::_Hashtable.185" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_multimap" = type { %"class.std::_Hashtable.198" }
%"class.std::_Hashtable.198" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::unordered_map.211" = type { %"class.std::_Hashtable.212" }
%"class.std::_Hashtable.212" = type { ptr, i64, %"struct.std::__detail::_Hash_node_base", i64, %"struct.std::__detail::_Prime_rehash_policy", ptr }
%"class.std::vector.114" = type { %"struct.std::_Vector_base.115" }
%"struct.std::_Vector_base.115" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TraitPath, std::allocator<HIR::TraitPath>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::Function" = type { i8, %"struct.HIR::Linkage", i32, %"class.HIR::TypeRef", %class.RcString, i8, i8, %"class.HIR::GenericParams", %"class.std::vector.388", i8, %"class.HIR::TypeRef", %"class.HIR::ExprPtr", %"struct.HIR::Function::Markings" }
%"struct.HIR::Linkage" = type { i32, %"class.std::__cxx11::basic_string", %"class.std::__cxx11::basic_string" }
%"class.std::__cxx11::basic_string" = type { %"struct.std::__cxx11::basic_string<char>::_Alloc_hider", i64, %union.anon }
%"struct.std::__cxx11::basic_string<char>::_Alloc_hider" = type { ptr }
%union.anon = type { i64, [8 x i8] }
%"class.std::vector.388" = type { %"struct.std::_Vector_base.389" }
%"struct.std::_Vector_base.389" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl" = type { %"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" }
%"struct.std::_Vector_base<std::pair<HIR::Pattern, HIR::TypeRef>, std::allocator<std::pair<HIR::Pattern, HIR::TypeRef>>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.HIR::ExprPtr" = type { %"class.HIR::ExprPtrInner", %"class.std::vector.44", %"class.std::vector.44", %"class.MIR::FunctionPointer", %"class.HIR::ExprStatePtr" }
%"class.HIR::ExprPtrInner" = type { ptr }
%"class.std::vector.44" = type { %"struct.std::_Vector_base.45" }
%"struct.std::_Vector_base.45" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl" = type { %"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" }
%"struct.std::_Vector_base<HIR::TypeRef, std::allocator<HIR::TypeRef>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"class.MIR::FunctionPointer" = type { ptr }
%"class.HIR::ExprStatePtr" = type { ptr }
%"struct.HIR::Function::Markings" = type { %"class.std::vector.393", i8, i32 }
%"class.std::vector.393" = type { %"struct.std::_Vector_base.394" }
%"struct.std::_Vector_base.394" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl" = type { %"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" }
%"struct.std::_Vector_base<unsigned int, std::allocator<unsigned int>>::_Vector_impl_data" = type { ptr, ptr, ptr }
%"struct.HIR::TypeData_FunctionPointer" = type { %"class.HIR::GenericParams", i8, i8, %class.RcString, %"class.HIR::TypeRef", %"class.std::vector.44" }
%"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" }
%"class.HIR::TypePathBinding" = type { i32, %"union.HIR::TypePathBinding::DataUnion" }
%"union.HIR::TypePathBinding::DataUnion" = 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::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.HIR::StructMarkings" = type { i8, i32, i32, i32, i32, i32, i32, i8, i8, %class.U128 }
%class.U128 = type { i64, i64 }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external global i32, align 4
@__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE = external hidden unnamed_addr constant [196 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 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

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 #3

; 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) #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: inlinehint mustprogress uwtable
declare dso_local void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, i32 noundef, ptr noundef) #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 #7 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(172) %5, ptr noundef nonnull align 8 dereferenceable(80) %6) #5 personality ptr @__gxx_personality_v0 {
  %8 = alloca ptr, align 8
  %9 = alloca ptr, align 8
  %10 = alloca ptr, align 8
  %11 = alloca ptr, align 8
  %12 = alloca ptr, align 8
  %13 = alloca ptr, align 8
  %14 = alloca ptr, align 8
  %15 = alloca %class.TraceLog, align 8
  %16 = alloca %"class.std::function", align 8
  %17 = alloca %class.anon.178, align 8
  %18 = alloca ptr, align 8
  %19 = alloca i32, align 4
  %20 = alloca ptr, align 8
  %21 = alloca i32, align 4
  %22 = alloca %"class.HIR::GenericPath", align 8
  %23 = alloca %"struct.HIR::SimplePath", align 8
  %24 = alloca %struct.Span, align 8
  %25 = alloca %"class.std::function", align 8
  %26 = alloca %class.anon.225, align 8
  %27 = alloca %"class.HIR::TypeRef", align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca ptr, align 8
  %30 = alloca %"struct.MIR::LValue", align 8
  %31 = alloca %"class.HIR::TypeRef", align 8
  %32 = alloca %"class.HIR::TypeRef", align 8
  %33 = alloca %"class.MIR::RValue", align 8
  %34 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %35 = alloca %"struct.MIR::LValue", align 8
  %36 = alloca %"class.HIR::TypeRef", align 8
  %37 = alloca i1, align 1
  %38 = alloca %"struct.MIR::LValue", align 8
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca ptr, align 8
  %42 = alloca %"class.HIR::TypeRef", align 8
  %43 = alloca %struct.MonomorphHrlsOnly, align 8
  %44 = alloca %"struct.HIR::PathParams", align 8
  %45 = alloca %"struct.MIR::LValue", align 8
  %46 = alloca %"struct.MIR::LValue", align 8
  %47 = alloca %"struct.MIR::LValue", align 8
  %48 = alloca %"class.HIR::TypeRef", align 8
  %49 = alloca %"struct.MIR::LValue", align 8
  %50 = alloca %"struct.MIR::LValue", align 8
  %51 = alloca %"class.MIR::RValue", align 8
  %52 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %53 = alloca %"struct.MIR::LValue", align 8
  %54 = alloca %"class.HIR::TypeRef", align 8
  %55 = alloca %"class.HIR::TypeRef", align 8
  %56 = alloca %"class.MIR::Statement", align 8
  %57 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %58 = alloca %"class.std::function", align 8
  %59 = alloca %class.anon.423, align 8
  %60 = alloca %"class.MIR::RValue", align 8
  %61 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %62 = alloca %"class.MIR::Statement", align 8
  %63 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  store ptr %0, ptr %8, align 8
  store ptr %1, ptr %9, align 8, !tbaa !5
  store ptr %2, ptr %10, align 8, !tbaa !5
  store ptr %3, ptr %11, align 8, !tbaa !5
  store ptr %4, ptr %12, align 8, !tbaa !5
  store ptr %5, ptr %13, align 8, !tbaa !5
  store ptr %6, ptr %14, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 40, ptr %15) #8
  %64 = call noundef zeroext i1 @_Z13debug_enabledv()
  %65 = zext i1 %64 to i64
  %66 = select i1 %64, ptr @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr %17) #8
  %67 = getelementptr inbounds %class.anon.178, ptr %17, i32 0, i32 0
  %68 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %68, ptr %67, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %16, ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %15, ptr noundef %66, ptr noundef %16)
          to label %69 unwind label %77

69:                                               ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  %70 = load ptr, ptr %13, align 8, !tbaa !5
  %71 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %70, i32 0, i32 0
  %72 = getelementptr inbounds %"class.HIR::TraitPath", ptr %71, i32 0, i32 4
  %73 = load ptr, ptr %72, align 8, !tbaa !9
  %74 = icmp ne ptr %73, null
  br i1 %74, label %75, label %76

75:                                               ; preds = %69
  br label %82

76:                                               ; preds = %69
  call void @__assert_fail(ptr noundef @.str.10, ptr noundef @.str.4, i32 noundef 535, ptr noundef @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

77:                                               ; preds = %7
  %78 = landingpad { ptr, i32 }
          cleanup
  %79 = extractvalue { ptr, i32 } %78, 0
  store ptr %79, ptr %18, align 8
  %80 = extractvalue { ptr, i32 } %78, 1
  store i32 %80, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %17) #8
  br label %577

81:                                               ; No predecessors!
  br label %82

82:                                               ; preds = %81, %75
  %83 = load ptr, ptr %14, align 8, !tbaa !5
  %84 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %83, i32 0, i32 0
  %85 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %84)
          to label %86 unwind label %91

86:                                               ; preds = %82
  %87 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %85)
          to label %88 unwind label %91

88:                                               ; preds = %86
  br i1 %87, label %89, label %90

89:                                               ; preds = %88
  br label %96

90:                                               ; preds = %88
  call void @__assert_fail(ptr noundef @.str.11, ptr noundef @.str.4, i32 noundef 536, ptr noundef @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

91:                                               ; preds = %101, %96, %86, %82
  %92 = landingpad { ptr, i32 }
          cleanup
  %93 = extractvalue { ptr, i32 } %92, 0
  store ptr %93, ptr %18, align 8
  %94 = extractvalue { ptr, i32 } %92, 1
  store i32 %94, ptr %19, align 4
  br label %576

95:                                               ; No predecessors!
  br label %96

96:                                               ; preds = %95, %89
  %97 = load ptr, ptr %13, align 8, !tbaa !5
  %98 = load ptr, ptr %14, align 8, !tbaa !5
  %99 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %98, i32 0, i32 0
  %100 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %99)
          to label %101 unwind label %91

101:                                              ; preds = %96
  %102 = invoke noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %100)
          to label %103 unwind label %91

103:                                              ; preds = %101
  %104 = icmp eq ptr %97, %102
  br i1 %104, label %105, label %106

105:                                              ; preds = %103
  br label %108

106:                                              ; preds = %103
  call void @__assert_fail(ptr noundef @.str.12, ptr noundef @.str.4, i32 noundef 537, ptr noundef @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

107:                                              ; No predecessors!
  br label %108

108:                                              ; preds = %107, %105
  call void @llvm.lifetime.start.p0(i64 8, ptr %20) #8
  %109 = load ptr, ptr %13, align 8, !tbaa !5
  %110 = getelementptr inbounds %"struct.HIR::TypeData_TraitObject", ptr %109, i32 0, i32 0
  %111 = getelementptr inbounds %"class.HIR::TraitPath", ptr %110, i32 0, i32 4
  %112 = load ptr, ptr %111, align 8, !tbaa !9
  store ptr %112, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 4, ptr %21) #8
  %113 = load ptr, ptr %20, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 32, ptr %22) #8
  %114 = load ptr, ptr %14, align 8, !tbaa !5
  %115 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %114, i32 0, i32 1
  %116 = getelementptr inbounds %"class.HIR::GenericPath", ptr %115, i32 0, i32 0
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %23, ptr noundef nonnull align 8 dereferenceable(8) %116)
          to label %117 unwind label %136

117:                                              ; preds = %108
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef %23)
          to label %118 unwind label %140

118:                                              ; preds = %117
  %119 = load ptr, ptr %14, align 8, !tbaa !5
  %120 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %119, i32 0, i32 2
  %121 = invoke noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400) %113, ptr noundef nonnull align 8 dereferenceable(32) %22, ptr noundef nonnull align 8 dereferenceable(8) %120)
          to label %122 unwind label %144

122:                                              ; preds = %118
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  store i32 %121, ptr %21, align 4, !tbaa !43
  %123 = load i32, ptr %21, align 4, !tbaa !43
  %124 = icmp eq i32 %123, 0
  br i1 %124, label %125, label %169

125:                                              ; preds = %122
  br label %126

126:                                              ; preds = %125
  call void @llvm.lifetime.start.p0(i64 8, ptr %24) #8
  %127 = load ptr, ptr %9, align 8, !tbaa !5
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %127)
          to label %128 unwind label %150

128:                                              ; preds = %126
  call void @llvm.lifetime.start.p0(i64 16, ptr %26) #8
  %129 = getelementptr inbounds %class.anon.225, ptr %26, i32 0, i32 0
  %130 = load ptr, ptr %14, align 8, !tbaa !5
  store ptr %130, ptr %129, align 8, !tbaa !5
  %131 = getelementptr inbounds %class.anon.225, ptr %26, i32 0, i32 1
  %132 = load ptr, ptr %13, align 8, !tbaa !5
  store ptr %132, ptr %131, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %25, ptr noundef nonnull align 8 dereferenceable(16) %26) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef %25)
          to label %133 unwind label %154

133:                                              ; preds = %128
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  %134 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %134, ptr noundef @.str.13)
          to label %135 unwind label %159

135:                                              ; preds = %133
  invoke void @__cxa_throw(ptr %134, ptr @_ZTISt13runtime_error, ptr @_ZNSt13runtime_errorD1Ev) #10
          to label %583 unwind label %163

136:                                              ; preds = %108
  %137 = landingpad { ptr, i32 }
          cleanup
  %138 = extractvalue { ptr, i32 } %137, 0
  store ptr %138, ptr %18, align 8
  %139 = extractvalue { ptr, i32 } %137, 1
  store i32 %139, ptr %19, align 4
  br label %149

140:                                              ; preds = %117
  %141 = landingpad { ptr, i32 }
          cleanup
  %142 = extractvalue { ptr, i32 } %141, 0
  store ptr %142, ptr %18, align 8
  %143 = extractvalue { ptr, i32 } %141, 1
  store i32 %143, ptr %19, align 4
  br label %148

144:                                              ; preds = %118
  %145 = landingpad { ptr, i32 }
          cleanup
  %146 = extractvalue { ptr, i32 } %145, 0
  store ptr %146, ptr %18, align 8
  %147 = extractvalue { ptr, i32 } %145, 1
  store i32 %147, ptr %19, align 4
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %22) #8
  br label %148

148:                                              ; preds = %144, %140
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %23) #8
  br label %149

149:                                              ; preds = %148, %136
  call void @llvm.lifetime.end.p0(i64 32, ptr %22) #8
  br label %575

150:                                              ; preds = %126
  %151 = landingpad { ptr, i32 }
          cleanup
  %152 = extractvalue { ptr, i32 } %151, 0
  store ptr %152, ptr %18, align 8
  %153 = extractvalue { ptr, i32 } %151, 1
  store i32 %153, ptr %19, align 4
  br label %158

154:                                              ; preds = %128
  %155 = landingpad { ptr, i32 }
          cleanup
  %156 = extractvalue { ptr, i32 } %155, 0
  store ptr %156, ptr %18, align 8
  %157 = extractvalue { ptr, i32 } %155, 1
  store i32 %157, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr %26) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %158

158:                                              ; preds = %154, %150
  call void @llvm.lifetime.end.p0(i64 8, ptr %24) #8
  br label %575

159:                                              ; preds = %133
  %160 = landingpad { ptr, i32 }
          cleanup
  %161 = extractvalue { ptr, i32 } %160, 0
  store ptr %161, ptr %18, align 8
  %162 = extractvalue { ptr, i32 } %160, 1
  store i32 %162, ptr %19, align 4
  call void @__cxa_free_exception(ptr %134) #8
  br label %575

163:                                              ; preds = %135
  %164 = landingpad { ptr, i32 }
          cleanup
  %165 = extractvalue { ptr, i32 } %164, 0
  store ptr %165, ptr %18, align 8
  %166 = extractvalue { ptr, i32 } %164, 1
  store i32 %166, ptr %19, align 4
  br label %575

167:                                              ; No predecessors!
  br label %168

168:                                              ; preds = %167
  br label %169

169:                                              ; preds = %168, %122
  call void @llvm.lifetime.start.p0(i64 8, ptr %27) #8
  %170 = load ptr, ptr %9, align 8, !tbaa !5
  %171 = load ptr, ptr %10, align 8, !tbaa !5
  %172 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %171, i32 0, i32 2
  %173 = load ptr, ptr %172, align 8, !tbaa !44
  %174 = load ptr, ptr %13, align 8, !tbaa !5
  invoke void @_ZN12_GLOBAL__N_115get_vtable_typeERK4SpanRK18StaticTraitResolveRKN3HIR20TypeData_TraitObjectE(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(8) %170, ptr noundef nonnull align 8 dereferenceable(424) %173, ptr noundef nonnull align 8 dereferenceable(172) %174)
          to label %175 unwind label %192

175:                                              ; preds = %169
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %27, i32 noundef 0, ptr noundef %28)
          to label %176 unwind label %196

176:                                              ; preds = %175
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %177

177:                                              ; preds = %176
  %178 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %179 unwind label %200

179:                                              ; preds = %177
  br i1 %178, label %180, label %204

180:                                              ; preds = %179
  %181 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !43
  %182 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %181, ptr noundef @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE)
          to label %183 unwind label %200

183:                                              ; preds = %180
  %184 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %182, ptr noundef @.str.14)
          to label %185 unwind label %200

185:                                              ; preds = %183
  %186 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %184, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %187 unwind label %200

187:                                              ; preds = %185
  %188 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %186, ptr noundef @_ZSt3decRSt8ios_base)
          to label %189 unwind label %200

189:                                              ; preds = %187
  %190 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %188, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %191 unwind label %200

191:                                              ; preds = %189
  br label %204

192:                                              ; preds = %169
  %193 = landingpad { ptr, i32 }
          cleanup
  %194 = extractvalue { ptr, i32 } %193, 0
  store ptr %194, ptr %18, align 8
  %195 = extractvalue { ptr, i32 } %193, 1
  store i32 %195, ptr %19, align 4
  br label %574

196:                                              ; preds = %175
  %197 = landingpad { ptr, i32 }
          cleanup
  %198 = extractvalue { ptr, i32 } %197, 0
  store ptr %198, ptr %18, align 8
  %199 = extractvalue { ptr, i32 } %197, 1
  store i32 %199, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %574

200:                                              ; preds = %189, %187, %185, %183, %180, %177
  %201 = landingpad { ptr, i32 }
          cleanup
  %202 = extractvalue { ptr, i32 } %201, 0
  store ptr %202, ptr %18, align 8
  %203 = extractvalue { ptr, i32 } %201, 1
  store i32 %203, ptr %19, align 4
  br label %573

204:                                              ; preds = %191, %179
  br label %205

205:                                              ; preds = %204
  br label %206

206:                                              ; preds = %205
  call void @llvm.lifetime.start.p0(i64 8, ptr %29) #8
  %207 = load ptr, ptr %10, align 8, !tbaa !5
  %208 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %207, i32 0, i32 3
  %209 = load ptr, ptr %208, align 8, !tbaa !49
  %210 = load ptr, ptr %9, align 8, !tbaa !5
  %211 = load ptr, ptr %14, align 8, !tbaa !5
  %212 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %211, i32 0, i32 1
  %213 = getelementptr inbounds %"class.HIR::GenericPath", ptr %212, i32 0, i32 0
  %214 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %209, ptr noundef nonnull align 8 dereferenceable(8) %210, ptr noundef nonnull align 8 dereferenceable(8) %213)
          to label %215 unwind label %242

215:                                              ; preds = %206
  %216 = getelementptr inbounds %"class.HIR::Trait", ptr %214, i32 0, i32 5
  %217 = load ptr, ptr %14, align 8, !tbaa !5
  %218 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %217, i32 0, i32 2
  %219 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %216, ptr noundef nonnull align 8 dereferenceable(8) %218)
          to label %220 unwind label %242

220:                                              ; preds = %215
  %221 = invoke noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %219)
          to label %222 unwind label %242

222:                                              ; preds = %220
  store ptr %221, ptr %29, align 8, !tbaa !5
  %223 = load ptr, ptr %29, align 8, !tbaa !5
  %224 = getelementptr inbounds %"class.HIR::Function", ptr %223, i32 0, i32 2
  %225 = load i32, ptr %224, align 8, !tbaa !50
  %226 = icmp eq i32 %225, 1
  br i1 %226, label %227, label %275

227:                                              ; preds = %222
  call void @llvm.lifetime.start.p0(i64 32, ptr %30) #8
  %228 = load ptr, ptr %11, align 8, !tbaa !5
  %229 = load ptr, ptr %14, align 8, !tbaa !5
  %230 = getelementptr inbounds %"struct.HIR::Path::Data::Data_UfcsKnown", ptr %229, i32 0, i32 0
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %32, ptr noundef nonnull align 8 dereferenceable(8) %230)
          to label %231 unwind label %246

231:                                              ; preds = %227
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %31, i32 noundef 2, ptr noundef %32)
          to label %232 unwind label %250

232:                                              ; preds = %231
  %233 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %34, i32 0, i32 0
  store i32 2, ptr %233, align 8, !tbaa !95
  %234 = getelementptr inbounds %"struct.MIR::RValue::Data_Borrow", ptr %34, i32 0, i32 1
  %235 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %234, ptr noundef nonnull align 8 dereferenceable(32) %235)
          to label %236 unwind label %254

236:                                              ; preds = %232
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %33, ptr noundef %34)
          to label %237 unwind label %258

237:                                              ; preds = %236
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %30, ptr noundef nonnull align 8 dereferenceable(40) %228, ptr noundef %31, ptr noundef %33)
          to label %238 unwind label %262

238:                                              ; preds = %237
  %239 = load ptr, ptr %12, align 8, !tbaa !5
  %240 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %239, ptr noundef nonnull align 8 dereferenceable(32) %30)
          to label %241 unwind label %266

241:                                              ; preds = %238
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %33) #8
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %275

242:                                              ; preds = %220, %215, %206
  %243 = landingpad { ptr, i32 }
          cleanup
  %244 = extractvalue { ptr, i32 } %243, 0
  store ptr %244, ptr %18, align 8
  %245 = extractvalue { ptr, i32 } %243, 1
  store i32 %245, ptr %19, align 4
  br label %572

246:                                              ; preds = %227
  %247 = landingpad { ptr, i32 }
          cleanup
  %248 = extractvalue { ptr, i32 } %247, 0
  store ptr %248, ptr %18, align 8
  %249 = extractvalue { ptr, i32 } %247, 1
  store i32 %249, ptr %19, align 4
  br label %274

250:                                              ; preds = %231
  %251 = landingpad { ptr, i32 }
          cleanup
  %252 = extractvalue { ptr, i32 } %251, 0
  store ptr %252, ptr %18, align 8
  %253 = extractvalue { ptr, i32 } %251, 1
  store i32 %253, ptr %19, align 4
  br label %273

254:                                              ; preds = %232
  %255 = landingpad { ptr, i32 }
          cleanup
  %256 = extractvalue { ptr, i32 } %255, 0
  store ptr %256, ptr %18, align 8
  %257 = extractvalue { ptr, i32 } %255, 1
  store i32 %257, ptr %19, align 4
  br label %272

258:                                              ; preds = %236
  %259 = landingpad { ptr, i32 }
          cleanup
  %260 = extractvalue { ptr, i32 } %259, 0
  store ptr %260, ptr %18, align 8
  %261 = extractvalue { ptr, i32 } %259, 1
  store i32 %261, ptr %19, align 4
  br label %271

262:                                              ; preds = %237
  %263 = landingpad { ptr, i32 }
          cleanup
  %264 = extractvalue { ptr, i32 } %263, 0
  store ptr %264, ptr %18, align 8
  %265 = extractvalue { ptr, i32 } %263, 1
  store i32 %265, ptr %19, align 4
  br label %270

266:                                              ; preds = %238
  %267 = landingpad { ptr, i32 }
          cleanup
  %268 = extractvalue { ptr, i32 } %267, 0
  store ptr %268, ptr %18, align 8
  %269 = extractvalue { ptr, i32 } %267, 1
  store i32 %269, ptr %19, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %30) #8
  br label %270

270:                                              ; preds = %266, %262
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %33) #8
  br label %271

271:                                              ; preds = %270, %258
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %34) #8
  br label %272

272:                                              ; preds = %271, %254
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %31) #8
  br label %273

273:                                              ; preds = %272, %250
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %32) #8
  br label %274

274:                                              ; preds = %273, %246
  call void @llvm.lifetime.end.p0(i64 32, ptr %30) #8
  br label %572

275:                                              ; preds = %241, %222
  call void @llvm.lifetime.start.p0(i64 32, ptr %35) #8
  %276 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %36, ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %277 unwind label %303

277:                                              ; preds = %275
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %35, ptr noundef nonnull align 8 dereferenceable(40) %276, ptr noundef %36)
          to label %278 unwind label %307

278:                                              ; preds = %277
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  store i1 false, ptr %37, align 1
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %279 unwind label %311

279:                                              ; preds = %278
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %38, ptr noundef %39)
          to label %280 unwind label %315

280:                                              ; preds = %279
  %281 = load i32, ptr %21, align 4, !tbaa !43
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %0, ptr noundef %38, i32 noundef %281)
          to label %282 unwind label %319

282:                                              ; preds = %280
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr %40) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40)
          to label %283 unwind label %324

283:                                              ; preds = %282
  call void @llvm.lifetime.start.p0(i64 8, ptr %41) #8
  %284 = load ptr, ptr %10, align 8, !tbaa !5
  %285 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %284, ptr noundef nonnull align 8 dereferenceable(8) %40, ptr noundef nonnull align 8 dereferenceable(32) %0, i32 noundef 0)
          to label %286 unwind label %328

286:                                              ; preds = %283
  store ptr %285, ptr %41, align 8, !tbaa !5
  br label %287

287:                                              ; preds = %286
  %288 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %289 unwind label %328

289:                                              ; preds = %287
  br i1 %288, label %290, label %332

290:                                              ; preds = %289
  %291 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !43
  %292 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %291, ptr noundef @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE)
          to label %293 unwind label %328

293:                                              ; preds = %290
  %294 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %292, ptr noundef @.str.15)
          to label %295 unwind label %328

295:                                              ; preds = %293
  %296 = load ptr, ptr %41, align 8, !tbaa !5
  %297 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %294, ptr noundef nonnull align 8 dereferenceable(8) %296)
          to label %298 unwind label %328

298:                                              ; preds = %295
  %299 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %297, ptr noundef @_ZSt3decRSt8ios_base)
          to label %300 unwind label %328

300:                                              ; preds = %298
  %301 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %299, ptr noundef @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %302 unwind label %328

302:                                              ; preds = %300
  br label %332

303:                                              ; preds = %275
  %304 = landingpad { ptr, i32 }
          cleanup
  %305 = extractvalue { ptr, i32 } %304, 0
  store ptr %305, ptr %18, align 8
  %306 = extractvalue { ptr, i32 } %304, 1
  store i32 %306, ptr %19, align 4
  br label %571

307:                                              ; preds = %277
  %308 = landingpad { ptr, i32 }
          cleanup
  %309 = extractvalue { ptr, i32 } %308, 0
  store ptr %309, ptr %18, align 8
  %310 = extractvalue { ptr, i32 } %308, 1
  store i32 %310, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %36) #8
  br label %571

311:                                              ; preds = %278
  %312 = landingpad { ptr, i32 }
          cleanup
  %313 = extractvalue { ptr, i32 } %312, 0
  store ptr %313, ptr %18, align 8
  %314 = extractvalue { ptr, i32 } %312, 1
  store i32 %314, ptr %19, align 4
  br label %570

315:                                              ; preds = %279
  %316 = landingpad { ptr, i32 }
          cleanup
  %317 = extractvalue { ptr, i32 } %316, 0
  store ptr %317, ptr %18, align 8
  %318 = extractvalue { ptr, i32 } %316, 1
  store i32 %318, ptr %19, align 4
  br label %323

319:                                              ; preds = %280
  %320 = landingpad { ptr, i32 }
          cleanup
  %321 = extractvalue { ptr, i32 } %320, 0
  store ptr %321, ptr %18, align 8
  %322 = extractvalue { ptr, i32 } %320, 1
  store i32 %322, ptr %19, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %323

323:                                              ; preds = %319, %315
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %570

324:                                              ; preds = %282
  %325 = landingpad { ptr, i32 }
          cleanup
  %326 = extractvalue { ptr, i32 } %325, 0
  store ptr %326, ptr %18, align 8
  %327 = extractvalue { ptr, i32 } %325, 1
  store i32 %327, ptr %19, align 4
  br label %567

328:                                              ; preds = %300, %298, %295, %293, %290, %287, %283
  %329 = landingpad { ptr, i32 }
          cleanup
  %330 = extractvalue { ptr, i32 } %329, 0
  store ptr %330, ptr %18, align 8
  %331 = extractvalue { ptr, i32 } %329, 1
  store i32 %331, ptr %19, align 4
  br label %566

332:                                              ; preds = %302, %289
  br label %333

333:                                              ; preds = %332
  br label %334

334:                                              ; preds = %333
  call void @llvm.lifetime.start.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.start.p0(i64 104, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr %44) #8
  %335 = load ptr, ptr %41, align 8, !tbaa !5
  %336 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %335)
          to label %337 unwind label %392

337:                                              ; preds = %334
  %338 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %336)
          to label %339 unwind label %392

339:                                              ; preds = %337
  %340 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %338, i32 0, i32 0
  invoke void @_ZNK3HIR13GenericParams17make_empty_paramsEb(ptr dead_on_unwind writable sret(%"struct.HIR::PathParams") align 8 %44, ptr noundef nonnull align 8 dereferenceable(96) %340, i1 noundef zeroext true)
          to label %341 unwind label %392

341:                                              ; preds = %339
  invoke void @_ZN17MonomorphHrlsOnlyC2ERKN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(104) %43, ptr noundef nonnull align 8 dereferenceable(24) %44)
          to label %342 unwind label %396

342:                                              ; preds = %341
  %343 = load ptr, ptr %10, align 8, !tbaa !5
  %344 = getelementptr inbounds %"class.MIR::TypeResolve", ptr %343, i32 0, i32 1
  %345 = load ptr, ptr %344, align 8, !tbaa !104
  %346 = load ptr, ptr %41, align 8, !tbaa !5
  %347 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %346)
          to label %348 unwind label %400

348:                                              ; preds = %342
  %349 = invoke noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %347)
          to label %350 unwind label %400

350:                                              ; preds = %348
  %351 = getelementptr inbounds %"struct.HIR::TypeData_FunctionPointer", ptr %349, i32 0, i32 5
  %352 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %351, i64 noundef 0)
          to label %353 unwind label %400

353:                                              ; preds = %350
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %42, ptr noundef nonnull align 8 dereferenceable(96) %43, ptr noundef nonnull align 8 dereferenceable(8) %345, ptr noundef nonnull align 8 dereferenceable(8) %352, i1 noundef zeroext true)
          to label %354 unwind label %400

354:                                              ; preds = %353
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %43) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr %43) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %45) #8
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45)
          to label %355 unwind label %406

355:                                              ; preds = %354
  call void @llvm.lifetime.start.p0(i64 32, ptr %46) #8
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %356 unwind label %410

356:                                              ; preds = %355
  %357 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %358 unwind label %414

358:                                              ; preds = %356
  %359 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %357)
          to label %360 unwind label %414

360:                                              ; preds = %358
  br i1 %359, label %361, label %437

361:                                              ; preds = %360
  %362 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %363 unwind label %414

363:                                              ; preds = %361
  %364 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %362)
          to label %365 unwind label %414

365:                                              ; preds = %363
  %366 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %364, i32 0, i32 1
  %367 = invoke noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %366)
          to label %368 unwind label %414

368:                                              ; preds = %365
  br i1 %367, label %369, label %437

369:                                              ; preds = %368
  %370 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %371 unwind label %414

371:                                              ; preds = %369
  %372 = invoke noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %370)
          to label %373 unwind label %414

373:                                              ; preds = %371
  %374 = getelementptr inbounds %"struct.HIR::TypeData_Path", ptr %372, i32 0, i32 1
  %375 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %374)
          to label %376 unwind label %414

376:                                              ; preds = %373
  %377 = load ptr, ptr %375, 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 4
  %380 = load i32, ptr %379, align 8, !tbaa !105
  %381 = icmp ne i32 %380, 0
  br i1 %381, label %382, label %437

382:                                              ; preds = %376
  call void @llvm.lifetime.start.p0(i64 32, ptr %47) #8
  %383 = load ptr, ptr %10, align 8, !tbaa !5
  %384 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %48, ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %385 unwind label %418

385:                                              ; preds = %382
  %386 = load ptr, ptr %12, 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) %386)
          to label %387 unwind label %422

387:                                              ; preds = %385
  invoke void @_ZZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownEEN1H12get_unit_ptrES5_S7_NSA_7TypeRefES8_S9_(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %47, ptr noundef nonnull align 8 dereferenceable(120) %383, ptr noundef nonnull align 8 dereferenceable(40) %384, ptr noundef %48, ptr noundef %49, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %388 unwind label %426

388:                                              ; preds = %387
  %389 = load ptr, ptr %12, align 8, !tbaa !5
  %390 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %389, ptr noundef nonnull align 8 dereferenceable(32) %47)
          to label %391 unwind label %430

391:                                              ; preds = %388
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %528

392:                                              ; preds = %339, %337, %334
  %393 = landingpad { ptr, i32 }
          cleanup
  %394 = extractvalue { ptr, i32 } %393, 0
  store ptr %394, ptr %18, align 8
  %395 = extractvalue { ptr, i32 } %393, 1
  store i32 %395, ptr %19, align 4
  br label %405

396:                                              ; preds = %341
  %397 = landingpad { ptr, i32 }
          cleanup
  %398 = extractvalue { ptr, i32 } %397, 0
  store ptr %398, ptr %18, align 8
  %399 = extractvalue { ptr, i32 } %397, 1
  store i32 %399, ptr %19, align 4
  br label %404

400:                                              ; preds = %353, %350, %348, %342
  %401 = landingpad { ptr, i32 }
          cleanup
  %402 = extractvalue { ptr, i32 } %401, 0
  store ptr %402, ptr %18, align 8
  %403 = extractvalue { ptr, i32 } %401, 1
  store i32 %403, ptr %19, align 4
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %43) #8
  br label %404

404:                                              ; preds = %400, %396
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %44) #8
  br label %405

405:                                              ; preds = %404, %392
  call void @llvm.lifetime.end.p0(i64 24, ptr %44) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr %43) #8
  br label %565

406:                                              ; preds = %354
  %407 = landingpad { ptr, i32 }
          cleanup
  %408 = extractvalue { ptr, i32 } %407, 0
  store ptr %408, ptr %18, align 8
  %409 = extractvalue { ptr, i32 } %407, 1
  store i32 %409, ptr %19, align 4
  br label %564

410:                                              ; preds = %355
  %411 = landingpad { ptr, i32 }
          cleanup
  %412 = extractvalue { ptr, i32 } %411, 0
  store ptr %412, ptr %18, align 8
  %413 = extractvalue { ptr, i32 } %411, 1
  store i32 %413, ptr %19, align 4
  br label %563

414:                                              ; preds = %519, %444, %442, %439, %437, %373, %371, %369, %365, %363, %361, %358, %356
  %415 = landingpad { ptr, i32 }
          cleanup
  %416 = extractvalue { ptr, i32 } %415, 0
  store ptr %416, ptr %18, align 8
  %417 = extractvalue { ptr, i32 } %415, 1
  store i32 %417, ptr %19, align 4
  br label %562

418:                                              ; preds = %382
  %419 = landingpad { ptr, i32 }
          cleanup
  %420 = extractvalue { ptr, i32 } %419, 0
  store ptr %420, ptr %18, align 8
  %421 = extractvalue { ptr, i32 } %419, 1
  store i32 %421, ptr %19, align 4
  br label %436

422:                                              ; preds = %385
  %423 = landingpad { ptr, i32 }
          cleanup
  %424 = extractvalue { ptr, i32 } %423, 0
  store ptr %424, ptr %18, align 8
  %425 = extractvalue { ptr, i32 } %423, 1
  store i32 %425, ptr %19, align 4
  br label %435

426:                                              ; preds = %387
  %427 = landingpad { ptr, i32 }
          cleanup
  %428 = extractvalue { ptr, i32 } %427, 0
  store ptr %428, ptr %18, align 8
  %429 = extractvalue { ptr, i32 } %427, 1
  store i32 %429, ptr %19, align 4
  br label %434

430:                                              ; preds = %388
  %431 = landingpad { ptr, i32 }
          cleanup
  %432 = extractvalue { ptr, i32 } %431, 0
  store ptr %432, ptr %18, align 8
  %433 = extractvalue { ptr, i32 } %431, 1
  store i32 %433, ptr %19, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %434

434:                                              ; preds = %430, %426
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %49) #8
  br label %435

435:                                              ; preds = %434, %422
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %48) #8
  br label %436

436:                                              ; preds = %435, %418
  call void @llvm.lifetime.end.p0(i64 32, ptr %47) #8
  br label %562

437:                                              ; preds = %376, %368, %360
  %438 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %439 unwind label %414

439:                                              ; preds = %437
  %440 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %438)
          to label %441 unwind label %414

441:                                              ; preds = %439
  br i1 %440, label %447, label %442

442:                                              ; preds = %441
  %443 = invoke noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %42)
          to label %444 unwind label %414

444:                                              ; preds = %442
  %445 = invoke noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %443)
          to label %446 unwind label %414

446:                                              ; preds = %444
  br i1 %445, label %447, label %515

447:                                              ; preds = %446, %441
  call void @llvm.lifetime.start.p0(i64 32, ptr %50) #8
  %448 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %50, ptr noundef nonnull align 8 dereferenceable(32) %448)
          to label %449 unwind label %469

449:                                              ; preds = %447
  %450 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %46, ptr noundef nonnull align 8 dereferenceable(32) %50)
          to label %451 unwind label %473

451:                                              ; preds = %449
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  call void @llvm.lifetime.start.p0(i64 112, ptr %51) #8
  %452 = getelementptr inbounds %"struct.MIR::RValue::Data_DstPtr", ptr %52, i32 0, i32 0
  %453 = load ptr, ptr %12, align 8, !tbaa !5
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %452, ptr noundef nonnull align 8 dereferenceable(32) %453)
          to label %454 unwind label %478

454:                                              ; preds = %451
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %51, ptr noundef %52)
          to label %455 unwind label %482

455:                                              ; preds = %454
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr %53) #8
  %456 = load ptr, ptr %11, align 8, !tbaa !5
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %55)
          to label %457 unwind label %486

457:                                              ; preds = %455
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind writable sret(%"class.HIR::TypeRef") align 8 %54, i32 noundef 0, ptr noundef %55)
          to label %458 unwind label %490

458:                                              ; preds = %457
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %53, ptr noundef nonnull align 8 dereferenceable(40) %456, ptr noundef %54)
          to label %459 unwind label %494

459:                                              ; preds = %458
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  %460 = load ptr, ptr %11, align 8, !tbaa !5
  %461 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %57, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %461, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %462 unwind label %499

462:                                              ; preds = %459
  %463 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %57, i32 0, i32 1
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %463, ptr noundef nonnull align 8 dereferenceable(112) %51) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %56, ptr noundef %57)
          to label %464 unwind label %503

464:                                              ; preds = %462
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %460, ptr noundef %56)
          to label %465 unwind label %507

465:                                              ; preds = %464
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %56) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #8
  %466 = load ptr, ptr %12, align 8, !tbaa !5
  %467 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %466, ptr noundef nonnull align 8 dereferenceable(32) %53)
          to label %468 unwind label %499

468:                                              ; preds = %465
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %51) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr %51) #8
  br label %527

469:                                              ; preds = %447
  %470 = landingpad { ptr, i32 }
          cleanup
  %471 = extractvalue { ptr, i32 } %470, 0
  store ptr %471, ptr %18, align 8
  %472 = extractvalue { ptr, i32 } %470, 1
  store i32 %472, ptr %19, align 4
  br label %477

473:                                              ; preds = %449
  %474 = landingpad { ptr, i32 }
          cleanup
  %475 = extractvalue { ptr, i32 } %474, 0
  store ptr %475, ptr %18, align 8
  %476 = extractvalue { ptr, i32 } %474, 1
  store i32 %476, ptr %19, align 4
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %50) #8
  br label %477

477:                                              ; preds = %473, %469
  call void @llvm.lifetime.end.p0(i64 32, ptr %50) #8
  br label %562

478:                                              ; preds = %451
  %479 = landingpad { ptr, i32 }
          cleanup
  %480 = extractvalue { ptr, i32 } %479, 0
  store ptr %480, ptr %18, align 8
  %481 = extractvalue { ptr, i32 } %479, 1
  store i32 %481, ptr %19, align 4
  br label %514

482:                                              ; preds = %454
  %483 = landingpad { ptr, i32 }
          cleanup
  %484 = extractvalue { ptr, i32 } %483, 0
  store ptr %484, ptr %18, align 8
  %485 = extractvalue { ptr, i32 } %483, 1
  store i32 %485, ptr %19, align 4
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %52) #8
  br label %514

486:                                              ; preds = %455
  %487 = landingpad { ptr, i32 }
          cleanup
  %488 = extractvalue { ptr, i32 } %487, 0
  store ptr %488, ptr %18, align 8
  %489 = extractvalue { ptr, i32 } %487, 1
  store i32 %489, ptr %19, align 4
  br label %513

490:                                              ; preds = %457
  %491 = landingpad { ptr, i32 }
          cleanup
  %492 = extractvalue { ptr, i32 } %491, 0
  store ptr %492, ptr %18, align 8
  %493 = extractvalue { ptr, i32 } %491, 1
  store i32 %493, ptr %19, align 4
  br label %498

494:                                              ; preds = %458
  %495 = landingpad { ptr, i32 }
          cleanup
  %496 = extractvalue { ptr, i32 } %495, 0
  store ptr %496, ptr %18, align 8
  %497 = extractvalue { ptr, i32 } %495, 1
  store i32 %497, ptr %19, align 4
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %54) #8
  br label %498

498:                                              ; preds = %494, %490
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %55) #8
  br label %513

499:                                              ; preds = %465, %459
  %500 = landingpad { ptr, i32 }
          cleanup
  %501 = extractvalue { ptr, i32 } %500, 0
  store ptr %501, ptr %18, align 8
  %502 = extractvalue { ptr, i32 } %500, 1
  store i32 %502, ptr %19, align 4
  br label %512

503:                                              ; preds = %462
  %504 = landingpad { ptr, i32 }
          cleanup
  %505 = extractvalue { ptr, i32 } %504, 0
  store ptr %505, ptr %18, align 8
  %506 = extractvalue { ptr, i32 } %504, 1
  store i32 %506, ptr %19, align 4
  br label %511

507:                                              ; preds = %464
  %508 = landingpad { ptr, i32 }
          cleanup
  %509 = extractvalue { ptr, i32 } %508, 0
  store ptr %509, ptr %18, align 8
  %510 = extractvalue { ptr, i32 } %508, 1
  store i32 %510, ptr %19, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %56) #8
  br label %511

511:                                              ; preds = %507, %503
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %57) #8
  br label %512

512:                                              ; preds = %511, %499
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %53) #8
  br label %513

513:                                              ; preds = %512, %498, %486
  call void @llvm.lifetime.end.p0(i64 32, ptr %53) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %51) #8
  br label %514

514:                                              ; preds = %513, %482, %478
  call void @llvm.lifetime.end.p0(i64 112, ptr %51) #8
  br label %562

515:                                              ; preds = %446
  br label %516

516:                                              ; preds = %515
  %517 = load ptr, ptr %10, align 8, !tbaa !5
  call void @llvm.lifetime.start.p0(i64 8, ptr %59) #8
  %518 = getelementptr inbounds %class.anon.423, ptr %59, i32 0, i32 0
  store ptr %42, ptr %518, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %58, ptr noundef nonnull align 8 dereferenceable(8) %59) #8
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %517, ptr noundef %58)
          to label %519 unwind label %521

519:                                              ; preds = %516
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  %520 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %520, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr %520, ptr @_ZTIPKc, ptr null) #10
          to label %583 unwind label %414

521:                                              ; preds = %516
  %522 = landingpad { ptr, i32 }
          cleanup
  %523 = extractvalue { ptr, i32 } %522, 0
  store ptr %523, ptr %18, align 8
  %524 = extractvalue { ptr, i32 } %522, 1
  store i32 %524, ptr %19, align 4
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %58) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %59) #8
  br label %562

525:                                              ; No predecessors!
  br label %526

526:                                              ; preds = %525
  br label %527

527:                                              ; preds = %526, %468
  br label %528

528:                                              ; preds = %527, %391
  call void @llvm.lifetime.start.p0(i64 112, ptr %60) #8
  %529 = getelementptr inbounds %"struct.MIR::RValue::Data_DstMeta", ptr %61, i32 0, i32 0
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %529, ptr noundef nonnull align 8 dereferenceable(32) %46)
          to label %530 unwind label %539

530:                                              ; preds = %528
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind writable sret(%"class.MIR::RValue") align 8 %60, ptr noundef %61)
          to label %531 unwind label %543

531:                                              ; preds = %530
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  %532 = load ptr, ptr %11, align 8, !tbaa !5
  %533 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %63, i32 0, i32 0
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %533, ptr noundef nonnull align 8 dereferenceable(32) %35)
          to label %534 unwind label %547

534:                                              ; preds = %531
  %535 = getelementptr inbounds %"struct.MIR::Statement::Data_Assign", ptr %63, i32 0, i32 1
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %535, ptr noundef nonnull align 8 dereferenceable(112) %60) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind writable sret(%"class.MIR::Statement") align 8 %62, ptr noundef %63)
          to label %536 unwind label %551

536:                                              ; preds = %534
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %532, ptr noundef %62)
          to label %537 unwind label %555

537:                                              ; preds = %536
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %62) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #8
  store i1 true, ptr %37, align 1
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr %60) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  %538 = load i1, ptr %37, align 1
  br i1 %538, label %569, label %568

539:                                              ; preds = %528
  %540 = landingpad { ptr, i32 }
          cleanup
  %541 = extractvalue { ptr, i32 } %540, 0
  store ptr %541, ptr %18, align 8
  %542 = extractvalue { ptr, i32 } %540, 1
  store i32 %542, ptr %19, align 4
  br label %561

543:                                              ; preds = %530
  %544 = landingpad { ptr, i32 }
          cleanup
  %545 = extractvalue { ptr, i32 } %544, 0
  store ptr %545, ptr %18, align 8
  %546 = extractvalue { ptr, i32 } %544, 1
  store i32 %546, ptr %19, align 4
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %61) #8
  br label %561

547:                                              ; preds = %531
  %548 = landingpad { ptr, i32 }
          cleanup
  %549 = extractvalue { ptr, i32 } %548, 0
  store ptr %549, ptr %18, align 8
  %550 = extractvalue { ptr, i32 } %548, 1
  store i32 %550, ptr %19, align 4
  br label %560

551:                                              ; preds = %534
  %552 = landingpad { ptr, i32 }
          cleanup
  %553 = extractvalue { ptr, i32 } %552, 0
  store ptr %553, ptr %18, align 8
  %554 = extractvalue { ptr, i32 } %552, 1
  store i32 %554, ptr %19, align 4
  br label %559

555:                                              ; preds = %536
  %556 = landingpad { ptr, i32 }
          cleanup
  %557 = extractvalue { ptr, i32 } %556, 0
  store ptr %557, ptr %18, align 8
  %558 = extractvalue { ptr, i32 } %556, 1
  store i32 %558, ptr %19, align 4
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %62) #8
  br label %559

559:                                              ; preds = %555, %551
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %63) #8
  br label %560

560:                                              ; preds = %559, %547
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %60) #8
  br label %561

561:                                              ; preds = %560, %543, %539
  call void @llvm.lifetime.end.p0(i64 112, ptr %60) #8
  br label %562

562:                                              ; preds = %561, %521, %514, %477, %436, %414
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %46) #8
  br label %563

563:                                              ; preds = %562, %410
  call void @llvm.lifetime.end.p0(i64 32, ptr %46) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %45) #8
  br label %564

564:                                              ; preds = %563, %406
  call void @llvm.lifetime.end.p0(i64 32, ptr %45) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %42) #8
  br label %565

565:                                              ; preds = %564, %405
  call void @llvm.lifetime.end.p0(i64 8, ptr %42) #8
  br label %566

566:                                              ; preds = %565, %328
  call void @llvm.lifetime.end.p0(i64 8, ptr %41) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %567

567:                                              ; preds = %566, %324
  call void @llvm.lifetime.end.p0(i64 8, ptr %40) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %570

568:                                              ; preds = %537
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %569

569:                                              ; preds = %568, %537
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #8
  ret void

570:                                              ; preds = %567, %323, %311
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %571

571:                                              ; preds = %570, %307, %303
  call void @llvm.lifetime.end.p0(i64 32, ptr %35) #8
  br label %572

572:                                              ; preds = %571, %274, %242
  call void @llvm.lifetime.end.p0(i64 8, ptr %29) #8
  br label %573

573:                                              ; preds = %572, %200
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %574

574:                                              ; preds = %573, %196, %192
  call void @llvm.lifetime.end.p0(i64 8, ptr %27) #8
  br label %575

575:                                              ; preds = %574, %163, %159, %158, %149
  call void @llvm.lifetime.end.p0(i64 4, ptr %21) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr %20) #8
  br label %576

576:                                              ; preds = %575, %91
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %15) #8
  br label %577

577:                                              ; preds = %576, %77
  call void @llvm.lifetime.end.p0(i64 40, ptr %15) #8
  br label %578

578:                                              ; preds = %577
  %579 = load ptr, ptr %18, align 8
  %580 = load i32, ptr %19, align 4
  %581 = insertvalue { ptr, i32 } poison, ptr %579, 0
  %582 = insertvalue { ptr, i32 } %581, i32 %580, 1
  resume { ptr, i32 } %582

583:                                              ; preds = %519, %135
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

declare void @__cxa_free_exception(ptr)

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115get_vtable_typeERK4SpanRK18StaticTraitResolveRKN3HIR20TypeData_TraitObjectE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(172)) #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368)) #7 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3HIR13GenericParams17make_empty_paramsEb(ptr dead_on_unwind noalias writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext) #5 align 2

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownEEN1H12get_unit_ptrES5_S7_NSA_7TypeRefES8_S9_(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8, ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(40), ptr noundef, ptr noundef, ptr noundef nonnull align 8 dereferenceable(32)) #5 align 2

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 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 = { 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 #4 = { 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 #5 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 136}
!10 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !11, i64 0, !37, i64 144, !41, i64 168}
!11 = !{!"_ZTSN3HIR9TraitPathE", !12, i64 0, !18, i64 8, !25, i64 40, !34, i64 88, !6, i64 136}
!12 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !14, i64 0}
!14 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !16, i64 0}
!16 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !17, i64 0}
!17 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!18 = !{!"_ZTSN3HIR11GenericPathE", !19, i64 0, !21, i64 8}
!19 = !{!"_ZTSN3HIR10SimplePathE", !20, i64 0}
!20 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!21 = !{!"_ZTSN3HIR10PathParamsE", !22, i64 0, !23, i64 8, !24, i64 16}
!22 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!23 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!24 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!25 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !29, i64 0}
!29 = !{!"_ZTSSt4lessI8RcStringE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !33, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !28, i64 0, !30, i64 8}
!37 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSN3HIR11LifetimeRefE", !42, i64 0}
!42 = !{!"int", !7, i64 0}
!43 = !{!42, !42, i64 0}
!44 = !{!45, !6, i64 16}
!45 = !{!"_ZTSN3MIR11TypeResolveE", !42, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !46, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !42, i64 112, !42, i64 116}
!46 = !{!"_ZTS9FmtLambda", !47, i64 0}
!47 = !{!"_ZTSSt8functionIFvRSoEE", !48, i64 0, !6, i64 24}
!48 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!49 = !{!45, !6, i64 24}
!50 = !{!51, !57, i64 80}
!51 = !{!"_ZTSN3HIR8FunctionE", !52, i64 0, !53, i64 8, !57, i64 80, !58, i64 88, !59, i64 96, !52, i64 104, !52, i64 105, !60, i64 112, !77, i64 208, !52, i64 232, !58, i64 240, !81, i64 248, !89, i64 320}
!52 = !{!"bool", !7, i64 0}
!53 = !{!"_ZTSN3HIR7LinkageE", !54, i64 0, !55, i64 8, !55, i64 40}
!54 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !56, i64 0, !33, i64 8, !7, i64 16}
!56 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!57 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!58 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!59 = !{!"_ZTS8RcString", !6, i64 0}
!60 = !{!"_ZTSN3HIR13GenericParamsE", !61, i64 0, !65, i64 24, !69, i64 48, !73, i64 72}
!61 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSN3HIR7ExprPtrE", !82, i64 0, !83, i64 8, !83, i64 32, !87, i64 56, !88, i64 64}
!82 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!83 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!88 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!89 = !{!"_ZTSN3HIR8Function8MarkingsE", !90, i64 0, !52, i64 24, !94, i64 28}
!90 = !{!"_ZTSSt6vectorIjSaIjEE", !91, i64 0}
!91 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!94 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!95 = !{!96, !97, i64 0}
!96 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !97, i64 0, !98, i64 8}
!97 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!98 = !{!"_ZTSN3MIR6LValueE", !99, i64 0, !100, i64 8}
!99 = !{!"_ZTSN3MIR6LValue7StorageE", !33, i64 0}
!100 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!104 = !{!45, !6, i64 8}
!105 = !{!106, !118, i64 216}
!106 = !{!"_ZTSN3HIR6StructE", !60, i64 0, !107, i64 96, !108, i64 104, !42, i64 136, !42, i64 140, !110, i64 144, !116, i64 200, !120, i64 248}
!107 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!108 = !{!"_ZTSN3HIR6Struct4DataE", !109, i64 0, !7, i64 8}
!109 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!110 = !{!"_ZTSN3HIR13TraitMarkingsE", !52, i64 0, !52, i64 1, !52, i64 2, !111, i64 8}
!111 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !112, i64 0}
!112 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !113, i64 0}
!113 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !114, i64 0, !30, i64 8}
!114 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !115, i64 0}
!115 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!116 = !{!"_ZTSN3HIR14StructMarkingsE", !52, i64 0, !42, i64 4, !117, i64 8, !42, i64 12, !118, i64 16, !42, i64 20, !42, i64 24, !52, i64 28, !52, i64 29, !119, i64 32}
!117 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!118 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!119 = !{!"_ZTS4U128", !33, i64 0, !33, i64 8}
!120 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, 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.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.178 = type { ptr }
%"class.HIR::GenericPath" = type { %"struct.HIR::SimplePath", %"struct.HIR::PathParams" }
%"struct.HIR::SimplePath" = type { %class.ThinVector }
%class.ThinVector = type { ptr }
%"struct.HIR::PathParams" = type { %class.ThinVector.0, %class.ThinVector.1, %class.ThinVector.2 }
%class.ThinVector.0 = type { ptr }
%class.ThinVector.1 = type { ptr }
%class.ThinVector.2 = type { ptr }
%struct.Span = type { ptr }
%class.anon.225 = type { ptr, ptr }
%"struct.MIR::RValue::Data_Borrow" = type { i32, %"struct.MIR::LValue" }
%struct.MonomorphHrlsOnly = type { %class.Monomorphiser, ptr }
%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 }
%"struct.MIR::RValue::Data_DstPtr" = type { %"struct.MIR::LValue" }
%"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.anon.423 = type { ptr }
%"struct.MIR::RValue::Data_DstMeta" = type { %"struct.MIR::LValue" }

@.str = external hidden unnamed_addr constant [1 x i8], align 1
@_ZTIPKc = external constant ptr
@.str.4 = external hidden unnamed_addr constant [74 x i8], align 1
@g_debug_indent_level = external local_unnamed_addr global i32, align 4
@__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE = external hidden unnamed_addr constant [23 x i8], align 1
@.str.10 = external hidden unnamed_addr constant [23 x i8], align 1
@__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE = external hidden unnamed_addr constant [196 x i8], align 1
@.str.11 = external hidden unnamed_addr constant [32 x i8], align 1
@.str.12 = external hidden unnamed_addr constant [40 x i8], align 1
@.str.13 = external hidden unnamed_addr constant [17 x i8], align 1
@_ZTISt13runtime_error = external constant ptr
@.str.14 = external hidden unnamed_addr constant [13 x i8], align 1
@.str.15 = external hidden unnamed_addr constant [15 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

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 #3

; 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 #4

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
define dso_local void @_Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE(ptr dead_on_unwind noalias writable sret(%"struct.MIR::LValue") align 8 %0, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(172) %5, ptr noundef nonnull align 8 dereferenceable(80) %6) local_unnamed_addr #5 personality ptr @__gxx_personality_v0 {
  %8 = alloca %class.TraceLog, align 8
  %9 = alloca %"class.std::function", align 8
  %10 = alloca %class.anon.178, align 8
  %11 = alloca %"class.HIR::GenericPath", align 8
  %12 = alloca %"struct.HIR::SimplePath", align 8
  %13 = alloca %struct.Span, align 8
  %14 = alloca %"class.std::function", align 8
  %15 = alloca %class.anon.225, align 8
  %16 = alloca %"class.HIR::TypeRef", align 8
  %17 = alloca %"class.HIR::TypeRef", align 8
  %18 = alloca %"struct.MIR::LValue", align 8
  %19 = alloca %"class.HIR::TypeRef", align 8
  %20 = alloca %"class.HIR::TypeRef", align 8
  %21 = alloca %"class.MIR::RValue", align 8
  %22 = alloca %"struct.MIR::RValue::Data_Borrow", align 8
  %23 = alloca %"struct.MIR::LValue", align 8
  %24 = alloca %"class.HIR::TypeRef", align 8
  %25 = alloca %"struct.MIR::LValue", align 8
  %26 = alloca %"struct.MIR::LValue", align 8
  %27 = alloca %"class.HIR::TypeRef", align 8
  %28 = alloca %"class.HIR::TypeRef", align 8
  %29 = alloca %struct.MonomorphHrlsOnly, align 8
  %30 = alloca %"struct.HIR::PathParams", align 8
  %31 = alloca %"struct.MIR::LValue", align 8
  %32 = alloca %"struct.MIR::LValue", align 8
  %33 = alloca %"struct.MIR::LValue", align 8
  %34 = alloca %"class.HIR::TypeRef", align 8
  %35 = alloca %"struct.MIR::LValue", align 8
  %36 = alloca %"struct.MIR::LValue", align 8
  %37 = alloca %"class.MIR::RValue", align 8
  %38 = alloca %"struct.MIR::RValue::Data_DstPtr", align 8
  %39 = alloca %"struct.MIR::LValue", align 8
  %40 = alloca %"class.HIR::TypeRef", align 8
  %41 = alloca %"class.HIR::TypeRef", align 8
  %42 = alloca %"class.MIR::Statement", align 8
  %43 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  %44 = alloca %"class.std::function", align 8
  %45 = alloca %class.anon.423, align 8
  %46 = alloca %"class.MIR::RValue", align 8
  %47 = alloca %"struct.MIR::RValue::Data_DstMeta", align 8
  %48 = alloca %"class.MIR::Statement", align 8
  %49 = alloca %"struct.MIR::Statement::Data_Assign", align 8
  call void @llvm.lifetime.start.p0(i64 40, ptr nonnull %8) #8
  %50 = tail call noundef zeroext i1 @_Z13debug_enabledv()
  %51 = select i1 %50, ptr @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE, ptr null
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %10) #8
  store ptr %6, ptr %10, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_0vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %9, ptr noundef nonnull align 8 dereferenceable(8) %10) #8
  invoke void @_ZN8TraceLogC1EPKcSt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(40) %8, ptr noundef %51, ptr noundef nonnull %9)
          to label %52 unwind label %56

52:                                               ; preds = %7
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %9) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %10) #8
  %53 = getelementptr inbounds i8, ptr %5, i64 136
  %54 = load ptr, ptr %53, align 8, !tbaa !9
  %.not = icmp eq ptr %54, null
  br i1 %.not, label %55, label %58

55:                                               ; preds = %52
  call void @__assert_fail(ptr noundef nonnull @.str.10, ptr noundef nonnull @.str.4, i32 noundef 535, ptr noundef nonnull @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

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

58:                                               ; preds = %52
  %59 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %60 = call noundef zeroext i1 @_ZNK3HIR8TypeData14is_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %59)
  br i1 %60, label %62, label %61

61:                                               ; preds = %58
  call void @__assert_fail(ptr noundef nonnull @.str.11, ptr noundef nonnull @.str.4, i32 noundef 536, ptr noundef nonnull @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

62:                                               ; preds = %58
  %63 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %6)
  %64 = call noundef nonnull align 8 dereferenceable(172) ptr @_ZNK3HIR8TypeData14as_TraitObjectEv(ptr noundef nonnull align 8 dereferenceable(184) %63)
  %65 = icmp eq ptr %64, %5
  br i1 %65, label %67, label %66

66:                                               ; preds = %62
  call void @__assert_fail(ptr noundef nonnull @.str.12, ptr noundef nonnull @.str.4, i32 noundef 537, ptr noundef nonnull @__PRETTY_FUNCTION__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE) #9
  unreachable

67:                                               ; preds = %62
  %68 = load ptr, ptr %53, align 8, !tbaa !9
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %11) #8
  %69 = getelementptr inbounds i8, ptr %6, i64 8
  invoke void @_ZN3HIR10SimplePathC2ERKS0_(ptr noundef nonnull align 8 dereferenceable(8) %12, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %70 unwind label %82

70:                                               ; preds = %67
  invoke void @_ZN3HIR11GenericPathC1ENS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull %12)
          to label %71 unwind label %84

71:                                               ; preds = %70
  %72 = getelementptr inbounds i8, ptr %6, i64 40
  %73 = invoke noundef i32 @_ZNK3HIR5Trait22get_vtable_value_indexERKNS_11GenericPathERK8RcString(ptr noundef nonnull align 8 dereferenceable(400) %68, ptr noundef nonnull align 8 dereferenceable(32) %11, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %74 unwind label %86

74:                                               ; preds = %71
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  %75 = icmp eq i32 %73, 0
  br i1 %75, label %76, label %99

76:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %13) #8
  invoke void @_ZN4SpanC1ERKS_(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull align 8 dereferenceable(8) %1)
          to label %77 unwind label %90

77:                                               ; preds = %76
  call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %15) #8
  store ptr %6, ptr %15, align 8, !tbaa !5
  %78 = getelementptr inbounds i8, ptr %15, i64 8
  store ptr %5, ptr %78, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_1vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %14, ptr noundef nonnull align 8 dereferenceable(16) %15) #8
  invoke void @_ZNK4Span3bugESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(8) %13, ptr noundef nonnull %14)
          to label %79 unwind label %92

79:                                               ; preds = %77
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %14) #8
  call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %15) #8
  call void @_ZN4SpanD1Ev(ptr noundef nonnull align 8 dereferenceable(8) %13) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  %80 = call ptr @__cxa_allocate_exception(i64 16) #8
  invoke void @_ZNSt13runtime_errorC1EPKc(ptr noundef nonnull align 8 dereferenceable(16) %80, ptr noundef nonnull @.str.13)
          to label %81 unwind label %95

81:                                               ; preds = %79
  invoke void @__cxa_throw(ptr nonnull %80, ptr nonnull @_ZTISt13runtime_error, ptr nonnull @_ZNSt13runtime_errorD1Ev) #10
          to label %338 unwind label %97

82:                                               ; preds = %67
  %83 = landingpad { ptr, i32 }
          cleanup
  br label %89

84:                                               ; preds = %70
  %85 = landingpad { ptr, i32 }
          cleanup
  br label %88

86:                                               ; preds = %71
  %87 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR11GenericPathD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %11) #8
  br label %88

88:                                               ; preds = %86, %84
  %.pn = phi { ptr, i32 } [ %87, %86 ], [ %85, %84 ]
  call void @_ZN3HIR10SimplePathD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %12) #8
  br label %89

89:                                               ; preds = %88, %82
  %.pn.pn = phi { ptr, i32 } [ %.pn, %88 ], [ %83, %82 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %11) #8
  br label %336

90:                                               ; preds = %76
  %91 = landingpad { ptr, i32 }
          cleanup
  br label %94

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

94:                                               ; preds = %92, %90
  %.pn124 = phi { ptr, i32 } [ %93, %92 ], [ %91, %90 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %13) #8
  br label %336

95:                                               ; preds = %79
  %96 = landingpad { ptr, i32 }
          cleanup
  call void @__cxa_free_exception(ptr %80) #8
  br label %336

97:                                               ; preds = %81
  %98 = landingpad { ptr, i32 }
          cleanup
  br label %336

99:                                               ; preds = %74
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %16) #8
  %100 = getelementptr inbounds i8, ptr %2, i64 16
  %101 = load ptr, ptr %100, align 8, !tbaa !43
  invoke void @_ZN12_GLOBAL__N_115get_vtable_typeERK4SpanRK18StaticTraitResolveRKN3HIR20TypeData_TraitObjectE(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %17, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(424) %101, ptr noundef nonnull align 8 dereferenceable(172) %5)
          to label %102 unwind label %117

102:                                              ; preds = %99
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %16, i32 noundef 0, ptr noundef nonnull %17)
          to label %103 unwind label %119

103:                                              ; preds = %102
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  %104 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %105 unwind label %121

105:                                              ; preds = %103
  br i1 %104, label %106, label %123

106:                                              ; preds = %105
  %107 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !48
  %108 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %107, ptr noundef nonnull @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE)
          to label %109 unwind label %121

109:                                              ; preds = %106
  %110 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %108, ptr noundef nonnull @.str.14)
          to label %111 unwind label %121

111:                                              ; preds = %109
  %112 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %110, ptr noundef nonnull align 8 dereferenceable(8) %16)
          to label %113 unwind label %121

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

115:                                              ; preds = %113
  %116 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %114, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %123 unwind label %121

117:                                              ; preds = %99
  %118 = landingpad { ptr, i32 }
          cleanup
  br label %335

119:                                              ; preds = %102
  %120 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %17) #8
  br label %335

121:                                              ; preds = %115, %113, %111, %109, %106, %103
  %122 = landingpad { ptr, i32 }
          cleanup
  br label %334

123:                                              ; preds = %115, %105
  %124 = getelementptr inbounds i8, ptr %2, i64 24
  %125 = load ptr, ptr %124, align 8, !tbaa !49
  %126 = invoke noundef nonnull align 8 dereferenceable(400) ptr @_ZNK3HIR5Crate17get_trait_by_pathERK4SpanRKNS_10SimplePathE(ptr noundef nonnull align 8 dereferenceable(944) %125, ptr noundef nonnull align 8 dereferenceable(8) %1, ptr noundef nonnull align 8 dereferenceable(8) %69)
          to label %127 unwind label %144

127:                                              ; preds = %123
  %128 = getelementptr inbounds i8, ptr %126, i64 192
  %129 = invoke noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56) %128, ptr noundef nonnull align 8 dereferenceable(8) %72)
          to label %130 unwind label %144

130:                                              ; preds = %127
  %131 = call noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368) %129)
  %132 = getelementptr inbounds i8, ptr %131, i64 80
  %133 = load i32, ptr %132, align 8, !tbaa !50
  %134 = icmp eq i32 %133, 1
  br i1 %134, label %135, label %163

135:                                              ; preds = %130
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %18) #8
  invoke void @_ZNK3HIR7TypeRef5cloneEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %20, ptr noundef nonnull align 8 dereferenceable(8) %6)
          to label %136 unwind label %146

136:                                              ; preds = %135
  invoke void @_ZN3HIR7TypeRef10new_borrowENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %19, i32 noundef 2, ptr noundef nonnull %20)
          to label %137 unwind label %148

137:                                              ; preds = %136
  store i32 2, ptr %22, align 8, !tbaa !95
  %138 = getelementptr inbounds i8, ptr %22, i64 8
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %138, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %139 unwind label %150

139:                                              ; preds = %137
  invoke void @_ZN3MIR6RValue11make_BorrowENS0_11Data_BorrowE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %21, ptr noundef nonnull %22)
          to label %140 unwind label %152

140:                                              ; preds = %139
  invoke void @_ZN10MirMutator12in_temporaryEN3HIR7TypeRefEN3MIR6RValueE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %18, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %19, ptr noundef nonnull %21)
          to label %141 unwind label %154

141:                                              ; preds = %140
  %142 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %18)
          to label %143 unwind label %156

143:                                              ; preds = %141
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %21) #8
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  br label %163

144:                                              ; preds = %127, %123
  %145 = landingpad { ptr, i32 }
          cleanup
  br label %334

146:                                              ; preds = %135
  %147 = landingpad { ptr, i32 }
          cleanup
  br label %162

148:                                              ; preds = %136
  %149 = landingpad { ptr, i32 }
          cleanup
  br label %161

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

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

154:                                              ; preds = %140
  %155 = landingpad { ptr, i32 }
          cleanup
  br label %158

156:                                              ; preds = %141
  %157 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %18) #8
  br label %158

158:                                              ; preds = %156, %154
  %.pn84 = phi { ptr, i32 } [ %157, %156 ], [ %155, %154 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %21) #8
  br label %159

159:                                              ; preds = %158, %152
  %.pn84.pn = phi { ptr, i32 } [ %.pn84, %158 ], [ %153, %152 ]
  call void @_ZN3MIR6RValue11Data_BorrowD2Ev(ptr noundef nonnull align 8 dereferenceable(40) %22) #8
  br label %160

160:                                              ; preds = %159, %150
  %.pn84.pn.pn = phi { ptr, i32 } [ %.pn84.pn, %159 ], [ %151, %150 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %19) #8
  br label %161

161:                                              ; preds = %160, %148
  %.pn84.pn.pn.pn = phi { ptr, i32 } [ %.pn84.pn.pn, %160 ], [ %149, %148 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %20) #8
  br label %162

162:                                              ; preds = %161, %146
  %.pn84.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn84.pn.pn.pn, %161 ], [ %147, %146 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %18) #8
  br label %334

163:                                              ; preds = %143, %130
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %23) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %24, ptr noundef nonnull align 8 dereferenceable(8) %16)
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %23, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %24)
          to label %164 unwind label %184

164:                                              ; preds = %163
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %26, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %165 unwind label %186

165:                                              ; preds = %164
  invoke void @_ZN3MIR6LValue9new_DerefES0_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %25, ptr noundef nonnull %26)
          to label %166 unwind label %188

166:                                              ; preds = %165
  invoke void @_ZN3MIR6LValue9new_FieldES0_j(ptr dead_on_unwind writable sret(%"struct.MIR::LValue") align 8 %0, ptr noundef nonnull %25, i32 noundef %73)
          to label %167 unwind label %190

167:                                              ; preds = %166
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %27) #8
  invoke void @_ZN3HIR7TypeRefC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27)
          to label %168 unwind label %193

168:                                              ; preds = %167
  %169 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(8) %27, ptr noundef nonnull align 8 dereferenceable(32) %0, i32 noundef 0)
          to label %170 unwind label %195

170:                                              ; preds = %168
  %171 = invoke noundef zeroext i1 @_Z13debug_enabledv()
          to label %172 unwind label %195

172:                                              ; preds = %170
  br i1 %171, label %173, label %197

173:                                              ; preds = %172
  %174 = load i32, ptr @g_debug_indent_level, align 4, !tbaa !48
  %175 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_Z12debug_outputiPKc(i32 noundef %174, ptr noundef nonnull @__func__._Z22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownE)
          to label %176 unwind label %195

176:                                              ; preds = %173
  %177 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc(ptr noundef nonnull align 8 dereferenceable(8) %175, ptr noundef nonnull @.str.15)
          to label %178 unwind label %195

178:                                              ; preds = %176
  %179 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZN3HIRlsERSoRKNS_7TypeRefE(ptr noundef nonnull align 8 dereferenceable(8) %177, ptr noundef nonnull align 8 dereferenceable(8) %169)
          to label %180 unwind label %195

180:                                              ; preds = %178
  %181 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSt8ios_baseS0_E(ptr noundef nonnull align 8 dereferenceable(8) %179, ptr noundef nonnull @_ZSt3decRSt8ios_base)
          to label %182 unwind label %195

182:                                              ; preds = %180
  %183 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNSolsEPFRSoS_E(ptr noundef nonnull align 8 dereferenceable(8) %181, ptr noundef nonnull @_ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_)
          to label %197 unwind label %195

184:                                              ; preds = %163
  %185 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %24) #8
  br label %333

186:                                              ; preds = %164
  %187 = landingpad { ptr, i32 }
          cleanup
  br label %332

188:                                              ; preds = %165
  %189 = landingpad { ptr, i32 }
          cleanup
  br label %192

190:                                              ; preds = %166
  %191 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %25) #8
  br label %192

192:                                              ; preds = %190, %188
  %.pn90 = phi { ptr, i32 } [ %191, %190 ], [ %189, %188 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %26) #8
  br label %332

193:                                              ; preds = %167
  %194 = landingpad { ptr, i32 }
          cleanup
  br label %331

195:                                              ; preds = %182, %180, %178, %176, %173, %170, %168
  %196 = landingpad { ptr, i32 }
          cleanup
  br label %330

197:                                              ; preds = %182, %172
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %28) #8
  call void @llvm.lifetime.start.p0(i64 104, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %30) #8
  %198 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %169)
  %199 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %198)
  invoke void @_ZNK3HIR13GenericParams17make_empty_paramsEb(ptr dead_on_unwind nonnull writable sret(%"struct.HIR::PathParams") align 8 %30, ptr noundef nonnull align 8 dereferenceable(96) %199, i1 noundef zeroext true)
          to label %200 unwind label %232

200:                                              ; preds = %197
  invoke void @_ZN17MonomorphHrlsOnlyC2ERKN3HIR10PathParamsE(ptr noundef nonnull align 8 dereferenceable(104) %29, ptr noundef nonnull align 8 dereferenceable(24) %30)
          to label %201 unwind label %234

201:                                              ; preds = %200
  %202 = getelementptr inbounds i8, ptr %2, i64 8
  %203 = load ptr, ptr %202, align 8, !tbaa !104
  %204 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %169)
  %205 = call noundef nonnull align 8 dereferenceable(144) ptr @_ZNK3HIR8TypeData11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(184) %204)
  %206 = getelementptr inbounds i8, ptr %205, i64 120
  %207 = invoke noundef nonnull align 8 dereferenceable(8) ptr @_ZNKSt6vectorIN3HIR7TypeRefESaIS1_EE2atEm(ptr noundef nonnull align 8 dereferenceable(24) %206, i64 noundef 0)
          to label %208 unwind label %236

208:                                              ; preds = %201
  invoke void @_ZNK13Monomorphiser14monomorph_typeERK4SpanRKN3HIR7TypeRefEb(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %28, ptr noundef nonnull align 8 dereferenceable(96) %29, ptr noundef nonnull align 8 dereferenceable(8) %203, ptr noundef nonnull align 8 dereferenceable(8) %207, i1 noundef zeroext true)
          to label %209 unwind label %236

209:                                              ; preds = %208
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %29) #8
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %29) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %31) #8
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31)
          to label %210 unwind label %240

210:                                              ; preds = %209
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %32) #8
  invoke void @_ZN3MIR6LValueC2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %211 unwind label %242

211:                                              ; preds = %210
  %212 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %213 = call noundef zeroext i1 @_ZNK3HIR8TypeData7is_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %212)
  br i1 %213, label %214, label %254

214:                                              ; preds = %211
  %215 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %216 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %215)
  %217 = getelementptr inbounds i8, ptr %216, i64 88
  %218 = call noundef zeroext i1 @_ZNK3HIR15TypePathBinding9is_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %217)
  br i1 %218, label %219, label %254

219:                                              ; preds = %214
  %220 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %221 = call noundef nonnull align 8 dereferenceable(112) ptr @_ZNK3HIR8TypeData7as_PathEv(ptr noundef nonnull align 8 dereferenceable(184) %220)
  %222 = getelementptr inbounds i8, ptr %221, i64 88
  %223 = call noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3HIR15TypePathBinding9as_StructEv(ptr noundef nonnull align 8 dereferenceable(16) %222)
  %224 = load ptr, ptr %223, align 8, !tbaa !5
  %225 = getelementptr inbounds i8, ptr %224, i64 216
  %226 = load i32, ptr %225, align 8, !tbaa !105
  %.not95 = icmp eq i32 %226, 0
  br i1 %.not95, label %254, label %227

227:                                              ; preds = %219
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %33) #8
  call void @_ZN3HIR7TypeRefC2EOS0_(ptr noundef nonnull align 8 dereferenceable(8) %34, ptr noundef nonnull align 8 dereferenceable(8) %28)
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %35, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %228 unwind label %246

228:                                              ; preds = %227
  invoke void @_ZZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS2_6LValueERKN3HIR20TypeData_TraitObjectERKNSA_4Path4Data14Data_UfcsKnownEEN1H12get_unit_ptrES5_S7_NSA_7TypeRefES8_S9_(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %33, ptr noundef nonnull align 8 dereferenceable(120) %2, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %34, ptr noundef nonnull %35, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %229 unwind label %248

229:                                              ; preds = %228
  %230 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %33)
          to label %231 unwind label %250

231:                                              ; preds = %229
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  br label %306

232:                                              ; preds = %197
  %233 = landingpad { ptr, i32 }
          cleanup
  br label %239

234:                                              ; preds = %200
  %235 = landingpad { ptr, i32 }
          cleanup
  br label %238

236:                                              ; preds = %208, %201
  %237 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN13MonomorphiserD2Ev(ptr noundef nonnull align 8 dereferenceable(104) %29) #8
  br label %238

238:                                              ; preds = %236, %234
  %.pn92 = phi { ptr, i32 } [ %237, %236 ], [ %235, %234 ]
  call void @_ZN3HIR10PathParamsD2Ev(ptr noundef nonnull align 8 dereferenceable(24) %30) #8
  br label %239

239:                                              ; preds = %238, %232
  %.pn92.pn = phi { ptr, i32 } [ %.pn92, %238 ], [ %233, %232 ]
  call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %30) #8
  call void @llvm.lifetime.end.p0(i64 104, ptr nonnull %29) #8
  br label %329

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

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

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

246:                                              ; preds = %227
  %247 = landingpad { ptr, i32 }
          cleanup
  br label %253

248:                                              ; preds = %228
  %249 = landingpad { ptr, i32 }
          cleanup
  br label %252

250:                                              ; preds = %229
  %251 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %33) #8
  br label %252

252:                                              ; preds = %250, %248
  %.pn106 = phi { ptr, i32 } [ %251, %250 ], [ %249, %248 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %35) #8
  br label %253

253:                                              ; preds = %252, %246
  %.pn106.pn = phi { ptr, i32 } [ %.pn106, %252 ], [ %247, %246 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %34) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %33) #8
  br label %326

254:                                              ; preds = %219, %214, %211
  %255 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %256 = call noundef zeroext i1 @_ZNK3HIR8TypeData9is_BorrowEv(ptr noundef nonnull align 8 dereferenceable(184) %255)
  br i1 %256, label %260, label %257

257:                                              ; preds = %254
  %258 = call noundef nonnull align 8 dereferenceable(184) ptr @_ZNK3HIR7TypeRef4dataEv(ptr noundef nonnull align 8 dereferenceable(8) %28)
  %259 = call noundef zeroext i1 @_ZNK3HIR8TypeData10is_PointerEv(ptr noundef nonnull align 8 dereferenceable(184) %258)
  br i1 %259, label %260, label %301

260:                                              ; preds = %257, %254
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %36) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %36, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %261 unwind label %275

261:                                              ; preds = %260
  %262 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %32, ptr noundef nonnull align 8 dereferenceable(32) %36)
          to label %263 unwind label %277

263:                                              ; preds = %261
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #8
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %37) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %38, ptr noundef nonnull align 8 dereferenceable(32) %4)
          to label %264 unwind label %280

264:                                              ; preds = %263
  invoke void @_ZN3MIR6RValue11make_DstPtrENS0_11Data_DstPtrE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %37, ptr noundef nonnull %38)
          to label %265 unwind label %282

265:                                              ; preds = %264
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %39) #8
  invoke void @_ZN3HIR7TypeRef8new_unitEv(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %41)
          to label %266 unwind label %284

266:                                              ; preds = %265
  invoke void @_ZN3HIR7TypeRef11new_pointerENS_10BorrowTypeES0_(ptr dead_on_unwind nonnull writable sret(%"class.HIR::TypeRef") align 8 %40, i32 noundef 0, ptr noundef nonnull %41)
          to label %267 unwind label %286

267:                                              ; preds = %266
  invoke void @_ZN10MirMutator13new_temporaryEN3HIR7TypeRefE(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %39, ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %40)
          to label %268 unwind label %288

268:                                              ; preds = %267
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %43, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %269 unwind label %291

269:                                              ; preds = %268
  %270 = getelementptr inbounds i8, ptr %43, i64 32
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %270, ptr noundef nonnull align 8 dereferenceable(112) %37) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %42, ptr noundef nonnull %43)
          to label %271 unwind label %293

271:                                              ; preds = %269
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %42)
          to label %272 unwind label %295

272:                                              ; preds = %271
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %42) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %43) #8
  %273 = invoke noundef nonnull align 8 dereferenceable(32) ptr @_ZN3MIR6LValueaSEOS0_(ptr noundef nonnull align 8 dereferenceable(32) %4, ptr noundef nonnull align 8 dereferenceable(32) %39)
          to label %274 unwind label %291

274:                                              ; preds = %272
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %37) #8
  br label %306

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

277:                                              ; preds = %261
  %278 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %36) #8
  br label %279

279:                                              ; preds = %277, %275
  %.pn96 = phi { ptr, i32 } [ %278, %277 ], [ %276, %275 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %36) #8
  br label %326

280:                                              ; preds = %263
  %281 = landingpad { ptr, i32 }
          cleanup
  br label %300

282:                                              ; preds = %264
  %283 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue11Data_DstPtrD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %38) #8
  br label %300

284:                                              ; preds = %265
  %285 = landingpad { ptr, i32 }
          cleanup
  br label %299

286:                                              ; preds = %266
  %287 = landingpad { ptr, i32 }
          cleanup
  br label %290

288:                                              ; preds = %267
  %289 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %40) #8
  br label %290

290:                                              ; preds = %288, %286
  %.pn98 = phi { ptr, i32 } [ %289, %288 ], [ %287, %286 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %41) #8
  br label %299

291:                                              ; preds = %272, %268
  %292 = landingpad { ptr, i32 }
          cleanup
  br label %298

293:                                              ; preds = %269
  %294 = landingpad { ptr, i32 }
          cleanup
  br label %297

295:                                              ; preds = %271
  %296 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %42) #8
  br label %297

297:                                              ; preds = %295, %293
  %.pn100 = phi { ptr, i32 } [ %296, %295 ], [ %294, %293 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %43) #8
  br label %298

298:                                              ; preds = %297, %291
  %.pn102 = phi { ptr, i32 } [ %292, %291 ], [ %.pn100, %297 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %39) #8
  br label %299

299:                                              ; preds = %298, %290, %284
  %.pn102.pn = phi { ptr, i32 } [ %.pn102, %298 ], [ %.pn98, %290 ], [ %285, %284 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %39) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %37) #8
  br label %300

300:                                              ; preds = %299, %282, %280
  %.pn102.pn.pn = phi { ptr, i32 } [ %.pn102.pn, %299 ], [ %283, %282 ], [ %281, %280 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %37) #8
  br label %326

301:                                              ; preds = %257
  call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %45) #8
  store ptr %28, ptr %45, align 8, !tbaa !5
  call void @"_ZNSt8functionIFvRSoEEC2IZ22MIR_Cleanup_VirtualizeRK4SpanRKN3MIR11TypeResolveER10MirMutatorRNS7_6LValueERKN3HIR20TypeData_TraitObjectERKNSF_4Path4Data14Data_UfcsKnownEE3$_2vEEOT_"(ptr noundef nonnull align 8 dereferenceable(32) %44, ptr noundef nonnull align 8 dereferenceable(8) %45) #8
  invoke void @_ZNK3MIR11TypeResolve10print_todoESt8functionIFvRSoEE(ptr noundef nonnull align 8 dereferenceable(120) %2, ptr noundef nonnull %44)
          to label %302 unwind label %304

302:                                              ; preds = %301
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  %303 = call ptr @__cxa_allocate_exception(i64 8) #8
  store ptr @.str, ptr %303, align 16, !tbaa !5
  invoke void @__cxa_throw(ptr nonnull %303, ptr nonnull @_ZTIPKc, ptr null) #10
          to label %338 unwind label %244

304:                                              ; preds = %301
  %305 = landingpad { ptr, i32 }
          cleanup
  call void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %44) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %45) #8
  br label %326

306:                                              ; preds = %274, %231
  call void @llvm.lifetime.start.p0(i64 112, ptr nonnull %46) #8
  invoke void @_ZN3MIR6LValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(32) %47, ptr noundef nonnull align 8 dereferenceable(32) %32)
          to label %307 unwind label %313

307:                                              ; preds = %306
  invoke void @_ZN3MIR6RValue12make_DstMetaENS0_12Data_DstMetaE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::RValue") align 8 %46, ptr noundef nonnull %47)
          to label %308 unwind label %315

308:                                              ; preds = %307
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  invoke void @_ZNK3MIR6LValue5cloneEv(ptr dead_on_unwind nonnull writable sret(%"struct.MIR::LValue") align 8 %49, ptr noundef nonnull align 8 dereferenceable(32) %23)
          to label %309 unwind label %317

309:                                              ; preds = %308
  %310 = getelementptr inbounds i8, ptr %49, i64 32
  call void @_ZN3MIR6RValueC2EOS0_(ptr noundef nonnull align 8 dereferenceable(112) %310, ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  invoke void @_ZN3MIR9Statement11make_AssignENS0_11Data_AssignE(ptr dead_on_unwind nonnull writable sret(%"class.MIR::Statement") align 8 %48, ptr noundef nonnull %49)
          to label %311 unwind label %319

311:                                              ; preds = %309
  invoke void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40) %3, ptr noundef nonnull %48)
          to label %312 unwind label %321

312:                                              ; preds = %311
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %48) #8
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %49) #8
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %46) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #8
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #8
  ret void

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

315:                                              ; preds = %307
  %316 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR6RValue12Data_DstMetaD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %47) #8
  br label %325

317:                                              ; preds = %308
  %318 = landingpad { ptr, i32 }
          cleanup
  br label %324

319:                                              ; preds = %309
  %320 = landingpad { ptr, i32 }
          cleanup
  br label %323

321:                                              ; preds = %311
  %322 = landingpad { ptr, i32 }
          cleanup
  call void @_ZN3MIR9StatementD2Ev(ptr noundef nonnull align 8 dereferenceable(152) %48) #8
  br label %323

323:                                              ; preds = %321, %319
  %.pn109 = phi { ptr, i32 } [ %322, %321 ], [ %320, %319 ]
  call void @_ZN3MIR9Statement11Data_AssignD2Ev(ptr noundef nonnull align 8 dereferenceable(144) %49) #8
  br label %324

324:                                              ; preds = %323, %317
  %.pn109.pn = phi { ptr, i32 } [ %.pn109, %323 ], [ %318, %317 ]
  call void @_ZN3MIR6RValueD2Ev(ptr noundef nonnull align 8 dereferenceable(112) %46) #8
  br label %325

325:                                              ; preds = %324, %315, %313
  %.pn109.pn.pn = phi { ptr, i32 } [ %.pn109.pn, %324 ], [ %316, %315 ], [ %314, %313 ]
  call void @llvm.lifetime.end.p0(i64 112, ptr nonnull %46) #8
  br label %326

326:                                              ; preds = %325, %304, %300, %279, %253, %244
  %.pn109.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn, %325 ], [ %.pn106.pn, %253 ], [ %.pn102.pn.pn, %300 ], [ %.pn96, %279 ], [ %245, %244 ], [ %305, %304 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %32) #8
  br label %327

327:                                              ; preds = %326, %242
  %.pn109.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn, %326 ], [ %243, %242 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %32) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %31) #8
  br label %328

328:                                              ; preds = %327, %240
  %.pn109.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn, %327 ], [ %241, %240 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %31) #8
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %28) #8
  br label %329

329:                                              ; preds = %328, %239
  %.pn109.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn, %328 ], [ %.pn92.pn, %239 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %28) #8
  br label %330

330:                                              ; preds = %329, %195
  %.pn109.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn.pn, %329 ], [ %196, %195 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %27) #8
  br label %331

331:                                              ; preds = %330, %193
  %.pn109.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn.pn.pn, %330 ], [ %194, %193 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %27) #8
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %0) #8
  br label %332

332:                                              ; preds = %331, %192, %186
  %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn.pn.pn.pn, %331 ], [ %.pn90, %192 ], [ %187, %186 ]
  call void @_ZN3MIR6LValueD2Ev(ptr noundef nonnull align 8 dereferenceable(32) %23) #8
  br label %333

333:                                              ; preds = %332, %184
  %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn, %332 ], [ %185, %184 ]
  call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %23) #8
  br label %334

334:                                              ; preds = %144, %162, %333, %121
  %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %122, %121 ], [ %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %333 ], [ %.pn84.pn.pn.pn.pn, %162 ], [ %145, %144 ]
  call void @_ZN3HIR7TypeRefD2Ev(ptr noundef nonnull align 8 dereferenceable(8) %16) #8
  br label %335

335:                                              ; preds = %334, %119, %117
  %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn = phi { ptr, i32 } [ %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %334 ], [ %120, %119 ], [ %118, %117 ]
  call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %16) #8
  br label %336

336:                                              ; preds = %335, %97, %95, %94, %89
  %.pn126 = phi { ptr, i32 } [ %98, %97 ], [ %96, %95 ], [ %.pn124, %94 ], [ %.pn109.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn.pn, %335 ], [ %.pn.pn, %89 ]
  call void @_ZN8TraceLogD1Ev(ptr noundef nonnull align 8 dereferenceable(40) %8) #8
  br label %337

337:                                              ; preds = %336, %56
  %.pn126.pn = phi { ptr, i32 } [ %.pn126, %336 ], [ %57, %56 ]
  call void @llvm.lifetime.end.p0(i64 40, ptr nonnull %8) #8
  resume { ptr, i32 } %.pn126.pn

338:                                              ; preds = %302, %81
  unreachable
}

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

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

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

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

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

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

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

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

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

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

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

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

declare void @__cxa_free_exception(ptr) local_unnamed_addr

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

; Function Attrs: mustprogress uwtable
declare hidden void @_ZN12_GLOBAL__N_115get_vtable_typeERK4SpanRK18StaticTraitResolveRKN3HIR20TypeData_TraitObjectE(ptr dead_on_unwind noalias writable sret(%"class.HIR::TypeRef") align 8, ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(424), ptr noundef nonnull align 8 dereferenceable(172)) local_unnamed_addr #5

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

; Function Attrs: mustprogress uwtable
declare dso_local noundef nonnull align 8 dereferenceable(368) ptr @_ZNKSt13unordered_mapI8RcStringN3HIR14TraitValueItemESt4hashIS0_ESt8equal_toIS0_ESaISt4pairIKS0_S2_EEE2atERS8_(ptr noundef nonnull align 8 dereferenceable(56), ptr noundef nonnull align 8 dereferenceable(8)) local_unnamed_addr #5 align 2

; Function Attrs: mustprogress nounwind uwtable
declare dso_local noundef nonnull align 8 dereferenceable(352) ptr @_ZNK3HIR14TraitValueItem11as_FunctionEv(ptr noundef nonnull align 8 dereferenceable(368)) local_unnamed_addr #7 align 2

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

declare noundef nonnull align 8 dereferenceable(8) ptr @_ZNK3MIR11TypeResolve15get_lvalue_typeERN3HIR7TypeRefERKNS_6LValueEj(ptr noundef nonnull align 8 dereferenceable(120), ptr noundef nonnull align 8 dereferenceable(8), ptr noundef nonnull align 8 dereferenceable(32), i32 noundef) local_unnamed_addr #1

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZNK3HIR13GenericParams17make_empty_paramsEb(ptr dead_on_unwind noalias writable sret(%"struct.HIR::PathParams") align 8, ptr noundef nonnull align 8 dereferenceable(96), i1 noundef zeroext) local_unnamed_addr #5 align 2

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

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

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

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

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

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

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

; Function Attrs: mustprogress uwtable
declare dso_local void @_ZN10MirMutator14push_statementEN3MIR9StatementE(ptr noundef nonnull align 8 dereferenceable(40), ptr noundef) local_unnamed_addr #5 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 #5 align 2

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

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

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

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

; Function Attrs: mustprogress nounwind uwtable
declare dso_local void @_ZNSt14_Function_baseD2Ev(ptr noundef nonnull align 8 dereferenceable(24)) unnamed_addr #7 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 = { 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 #4 = { 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 #5 = { 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 #6 = { inlinehint mustprogress uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" }
attributes #7 = { 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 #8 = { nounwind }
attributes #9 = { noreturn nounwind }
attributes #10 = { noreturn }

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

!0 = !{i32 1, !"wchar_size", i32 4}
!1 = !{i32 8, !"PIC Level", i32 2}
!2 = !{i32 7, !"PIE Level", i32 2}
!3 = !{i32 7, !"uwtable", i32 2}
!4 = !{!"clang version 19.1.0 (git@github.com:llvm/llvm-project.git a4bf6cd7cfb1a1421ba92bca9d017b49936c55e4)"}
!5 = !{!6, !6, i64 0}
!6 = !{!"any pointer", !7, i64 0}
!7 = !{!"omnipotent char", !8, i64 0}
!8 = !{!"Simple C++ TBAA"}
!9 = !{!10, !6, i64 136}
!10 = !{!"_ZTSN3HIR20TypeData_TraitObjectE", !11, i64 0, !37, i64 144, !41, i64 168}
!11 = !{!"_ZTSN3HIR9TraitPathE", !12, i64 0, !18, i64 8, !25, i64 40, !34, i64 88, !6, i64 136}
!12 = !{!"_ZTSSt10unique_ptrIN3HIR13GenericParamsESt14default_deleteIS1_EE", !13, i64 0}
!13 = !{!"_ZTSSt15__uniq_ptr_dataIN3HIR13GenericParamsESt14default_deleteIS1_ELb1ELb1EE", !14, i64 0}
!14 = !{!"_ZTSSt15__uniq_ptr_implIN3HIR13GenericParamsESt14default_deleteIS1_EE", !15, i64 0}
!15 = !{!"_ZTSSt5tupleIJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !16, i64 0}
!16 = !{!"_ZTSSt11_Tuple_implILm0EJPN3HIR13GenericParamsESt14default_deleteIS1_EEE", !17, i64 0}
!17 = !{!"_ZTSSt10_Head_baseILm0EPN3HIR13GenericParamsELb0EE", !6, i64 0}
!18 = !{!"_ZTSN3HIR11GenericPathE", !19, i64 0, !21, i64 8}
!19 = !{!"_ZTSN3HIR10SimplePathE", !20, i64 0}
!20 = !{!"_ZTS10ThinVectorI8RcStringE", !6, i64 0}
!21 = !{!"_ZTSN3HIR10PathParamsE", !22, i64 0, !23, i64 8, !24, i64 16}
!22 = !{!"_ZTS10ThinVectorIN3HIR11LifetimeRefEE", !6, i64 0}
!23 = !{!"_ZTS10ThinVectorIN3HIR7TypeRefEE", !6, i64 0}
!24 = !{!"_ZTS10ThinVectorIN3HIR12ConstGenericEE", !6, i64 0}
!25 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyEqualESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !26, i64 0}
!26 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !27, i64 0}
!27 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyEqualEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !28, i64 0, !30, i64 8}
!28 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessI8RcStringEE", !29, i64 0}
!29 = !{!"_ZTSSt4lessI8RcStringE"}
!30 = !{!"_ZTSSt15_Rb_tree_header", !31, i64 0, !33, i64 32}
!31 = !{!"_ZTSSt18_Rb_tree_node_base", !32, i64 0, !6, i64 8, !6, i64 16, !6, i64 24}
!32 = !{!"_ZTSSt14_Rb_tree_color", !7, i64 0}
!33 = !{!"long", !7, i64 0}
!34 = !{!"_ZTSSt3mapI8RcStringN3HIR9TraitPath8AtyBoundESt4lessIS0_ESaISt4pairIKS0_S3_EEE", !35, i64 0}
!35 = !{!"_ZTSSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE", !36, i64 0}
!36 = !{!"_ZTSNSt8_Rb_treeI8RcStringSt4pairIKS0_N3HIR9TraitPath8AtyBoundEESt10_Select1stIS6_ESt4lessIS0_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !28, i64 0, !30, i64 8}
!37 = !{!"_ZTSSt6vectorIN3HIR11GenericPathESaIS1_EE", !38, i64 0}
!38 = !{!"_ZTSSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE", !39, i64 0}
!39 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE12_Vector_implE", !40, i64 0}
!40 = !{!"_ZTSNSt12_Vector_baseIN3HIR11GenericPathESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!41 = !{!"_ZTSN3HIR11LifetimeRefE", !42, i64 0}
!42 = !{!"int", !7, i64 0}
!43 = !{!44, !6, i64 16}
!44 = !{!"_ZTSN3MIR11TypeResolveE", !42, i64 0, !6, i64 8, !6, i64 16, !6, i64 24, !45, i64 32, !6, i64 64, !6, i64 72, !6, i64 80, !6, i64 88, !6, i64 96, !6, i64 104, !42, i64 112, !42, i64 116}
!45 = !{!"_ZTS9FmtLambda", !46, i64 0}
!46 = !{!"_ZTSSt8functionIFvRSoEE", !47, i64 0, !6, i64 24}
!47 = !{!"_ZTSSt14_Function_base", !7, i64 0, !6, i64 16}
!48 = !{!42, !42, i64 0}
!49 = !{!44, !6, i64 24}
!50 = !{!51, !57, i64 80}
!51 = !{!"_ZTSN3HIR8FunctionE", !52, i64 0, !53, i64 8, !57, i64 80, !58, i64 88, !59, i64 96, !52, i64 104, !52, i64 105, !60, i64 112, !77, i64 208, !52, i64 232, !58, i64 240, !81, i64 248, !89, i64 320}
!52 = !{!"bool", !7, i64 0}
!53 = !{!"_ZTSN3HIR7LinkageE", !54, i64 0, !55, i64 8, !55, i64 40}
!54 = !{!"_ZTSN3HIR7Linkage4TypeE", !7, i64 0}
!55 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE", !56, i64 0, !33, i64 8, !7, i64 16}
!56 = !{!"_ZTSNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_Alloc_hiderE", !6, i64 0}
!57 = !{!"_ZTSN3HIR8Function8ReceiverE", !7, i64 0}
!58 = !{!"_ZTSN3HIR7TypeRefE", !6, i64 0}
!59 = !{!"_ZTS8RcString", !6, i64 0}
!60 = !{!"_ZTSN3HIR13GenericParamsE", !61, i64 0, !65, i64 24, !69, i64 48, !73, i64 72}
!61 = !{!"_ZTSSt6vectorIN3HIR12TypeParamDefESaIS1_EE", !62, i64 0}
!62 = !{!"_ZTSSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE", !63, i64 0}
!63 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE12_Vector_implE", !64, i64 0}
!64 = !{!"_ZTSNSt12_Vector_baseIN3HIR12TypeParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!65 = !{!"_ZTSSt6vectorIN3HIR11LifetimeDefESaIS1_EE", !66, i64 0}
!66 = !{!"_ZTSSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE", !67, i64 0}
!67 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE12_Vector_implE", !68, i64 0}
!68 = !{!"_ZTSNSt12_Vector_baseIN3HIR11LifetimeDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!69 = !{!"_ZTSSt6vectorIN3HIR13ValueParamDefESaIS1_EE", !70, i64 0}
!70 = !{!"_ZTSSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE", !71, i64 0}
!71 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE12_Vector_implE", !72, i64 0}
!72 = !{!"_ZTSNSt12_Vector_baseIN3HIR13ValueParamDefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!73 = !{!"_ZTSSt6vectorIN3HIR12GenericBoundESaIS1_EE", !74, i64 0}
!74 = !{!"_ZTSSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE", !75, i64 0}
!75 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE12_Vector_implE", !76, i64 0}
!76 = !{!"_ZTSNSt12_Vector_baseIN3HIR12GenericBoundESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!77 = !{!"_ZTSSt6vectorISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !78, i64 0}
!78 = !{!"_ZTSSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE", !79, i64 0}
!79 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE12_Vector_implE", !80, i64 0}
!80 = !{!"_ZTSNSt12_Vector_baseISt4pairIN3HIR7PatternENS1_7TypeRefEESaIS4_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!81 = !{!"_ZTSN3HIR7ExprPtrE", !82, i64 0, !83, i64 8, !83, i64 32, !87, i64 56, !88, i64 64}
!82 = !{!"_ZTSN3HIR12ExprPtrInnerE", !6, i64 0}
!83 = !{!"_ZTSSt6vectorIN3HIR7TypeRefESaIS1_EE", !84, i64 0}
!84 = !{!"_ZTSSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE", !85, i64 0}
!85 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE12_Vector_implE", !86, i64 0}
!86 = !{!"_ZTSNSt12_Vector_baseIN3HIR7TypeRefESaIS1_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!87 = !{!"_ZTSN3MIR15FunctionPointerE", !6, i64 0}
!88 = !{!"_ZTSN3HIR12ExprStatePtrE", !6, i64 0}
!89 = !{!"_ZTSN3HIR8Function8MarkingsE", !90, i64 0, !52, i64 24, !94, i64 28}
!90 = !{!"_ZTSSt6vectorIjSaIjEE", !91, i64 0}
!91 = !{!"_ZTSSt12_Vector_baseIjSaIjEE", !92, i64 0}
!92 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE12_Vector_implE", !93, i64 0}
!93 = !{!"_ZTSNSt12_Vector_baseIjSaIjEE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!94 = !{!"_ZTSN3HIR8Function8Markings6InlineE", !7, i64 0}
!95 = !{!96, !97, i64 0}
!96 = !{!"_ZTSN3MIR6RValue11Data_BorrowE", !97, i64 0, !98, i64 8}
!97 = !{!"_ZTSN3HIR10BorrowTypeE", !7, i64 0}
!98 = !{!"_ZTSN3MIR6LValueE", !99, i64 0, !100, i64 8}
!99 = !{!"_ZTSN3MIR6LValue7StorageE", !33, i64 0}
!100 = !{!"_ZTSSt6vectorIN3MIR6LValue7WrapperESaIS2_EE", !101, i64 0}
!101 = !{!"_ZTSSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE", !102, i64 0}
!102 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE12_Vector_implE", !103, i64 0}
!103 = !{!"_ZTSNSt12_Vector_baseIN3MIR6LValue7WrapperESaIS2_EE17_Vector_impl_dataE", !6, i64 0, !6, i64 8, !6, i64 16}
!104 = !{!44, !6, i64 8}
!105 = !{!106, !118, i64 216}
!106 = !{!"_ZTSN3HIR6StructE", !60, i64 0, !107, i64 96, !108, i64 104, !42, i64 136, !42, i64 140, !110, i64 144, !116, i64 200, !120, i64 248}
!107 = !{!"_ZTSN3HIR6Struct4ReprE", !7, i64 0}
!108 = !{!"_ZTSN3HIR6Struct4DataE", !109, i64 0, !7, i64 8}
!109 = !{!"_ZTSN3HIR6Struct4Data3TagE", !7, i64 0}
!110 = !{!"_ZTSN3HIR13TraitMarkingsE", !52, i64 0, !52, i64 1, !52, i64 2, !111, i64 8}
!111 = !{!"_ZTSSt3mapIN3HIR10SimplePathENS0_13TraitMarkings11AutoMarkingESt4lessIS1_ESaISt4pairIKS1_S3_EEE", !112, i64 0}
!112 = !{!"_ZTSSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE", !113, i64 0}
!113 = !{!"_ZTSNSt8_Rb_treeIN3HIR10SimplePathESt4pairIKS1_NS0_13TraitMarkings11AutoMarkingEESt10_Select1stIS6_ESt4lessIS1_ESaIS6_EE13_Rb_tree_implISA_Lb1EEE", !114, i64 0, !30, i64 8}
!114 = !{!"_ZTSSt20_Rb_tree_key_compareISt4lessIN3HIR10SimplePathEEE", !115, i64 0}
!115 = !{!"_ZTSSt4lessIN3HIR10SimplePathEE"}
!116 = !{!"_ZTSN3HIR14StructMarkingsE", !52, i64 0, !42, i64 4, !117, i64 8, !42, i64 12, !118, i64 16, !42, i64 20, !42, i64 24, !52, i64 28, !52, i64 29, !119, i64 32}
!117 = !{!"_ZTSN3HIR14StructMarkings7DstTypeE", !7, i64 0}
!118 = !{!"_ZTSN3HIR14StructMarkings6CoerceE", !7, i64 0}
!119 = !{!"_ZTS4U128", !33, i64 0, !33, i64 8}
!120 = !{!"_ZTSN3HIR14ConstEvalStateE", !7, i64 0}


; Effective O3 passes: EarlyCSEPass,GlobalOptPass,IPSCCPPass,InferFunctionAttrsPass,InstCombinePass,SROAPass,SimplifyCFGPass,TailCallElimPass